; LLVM IR from chensoft/libsocket :: lib/libchen/test/src/data/json.ll (ZN22DataJsonTest_Type_Test8TestBodyEv)

; 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.chen::json" = type { i32, %"union.chen::json::Data" }
%"union.chen::json::Data" = type { ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl" }
%"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl" = type { %"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl_data" }
%"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_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.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.8" }
%"class.testing::internal::scoped_ptr.8" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::allocator" = type { i8 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIN4chen4json5errorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [99 x i8], align 1

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

; Function Attrs: 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

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 nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 uwtable
define dso_local void @_ZN22DataJsonTest_Type_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.chen::json", align 8
  %4 = alloca %"class.chen::json", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.chen::json", align 8
  %8 = alloca %"class.chen::json", align 8
  %9 = alloca %"class.chen::json", align 8
  %10 = alloca %"class.chen::json", align 8
  %11 = alloca %"class.std::unordered_map", align 8
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca double, align 8
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i16, align 2
  %17 = alloca i16, align 2
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i8, align 1
  %24 = alloca %"class.testing::AssertionResult", align 8
  %25 = alloca double, align 8
  %26 = alloca %"class.testing::Message", align 8
  %27 = alloca %"class.testing::internal::AssertHelper", align 8
  %28 = alloca %"class.testing::AssertionResult", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.testing::Message", align 8
  %31 = alloca %"class.testing::internal::AssertHelper", align 8
  %32 = alloca %"class.testing::AssertionResult", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.testing::Message", align 8
  %35 = alloca %"class.testing::internal::AssertHelper", align 8
  %36 = alloca %"class.testing::AssertionResult", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.testing::Message", align 8
  %39 = alloca %"class.testing::internal::AssertHelper", align 8
  %40 = alloca %"class.testing::AssertionResult", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.testing::Message", align 8
  %43 = alloca %"class.testing::internal::AssertHelper", align 8
  %44 = alloca %"class.testing::AssertionResult", align 8
  %45 = alloca i32, align 4
  %46 = alloca %"class.testing::Message", align 8
  %47 = alloca %"class.testing::internal::AssertHelper", align 8
  %48 = alloca %"class.testing::AssertionResult", align 8
  %49 = alloca i32, align 4
  %50 = alloca %"class.testing::Message", align 8
  %51 = alloca %"class.testing::internal::AssertHelper", align 8
  %52 = alloca %"class.testing::AssertionResult", align 8
  %53 = alloca i32, align 4
  %54 = alloca %"class.testing::Message", align 8
  %55 = alloca %"class.testing::internal::AssertHelper", align 8
  %56 = alloca %"class.testing::AssertionResult", align 8
  %57 = alloca i32, align 4
  %58 = alloca %"class.testing::Message", align 8
  %59 = alloca %"class.testing::internal::AssertHelper", align 8
  %60 = alloca %"class.testing::AssertionResult", align 8
  %61 = alloca i8, align 1
  %62 = alloca %"class.testing::Message", align 8
  %63 = alloca %"class.testing::internal::AssertHelper", align 8
  %64 = alloca %"class.testing::AssertionResult", align 8
  %65 = alloca i8, align 1
  %66 = alloca %"class.std::unordered_map", align 8
  %67 = alloca %"class.testing::Message", align 8
  %68 = alloca %"class.testing::internal::AssertHelper", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.testing::AssertionResult", align 8
  %71 = alloca i8, align 1
  %72 = alloca %"class.std::vector", align 8
  %73 = alloca %"class.testing::Message", align 8
  %74 = alloca %"class.testing::internal::AssertHelper", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.testing::AssertionResult", align 8
  %77 = alloca i8, align 1
  %78 = alloca %"class.chen::json", align 8
  %79 = alloca %"class.testing::Message", align 8
  %80 = alloca %"class.testing::internal::AssertHelper", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.testing::AssertionResult", align 8
  %83 = alloca i8, align 1
  %84 = alloca %"class.chen::json", align 8
  %85 = alloca %"class.testing::Message", align 8
  %86 = alloca %"class.testing::internal::AssertHelper", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.testing::AssertionResult", align 8
  %89 = alloca i8, align 1
  %90 = alloca %"class.chen::json", align 8
  %91 = alloca %"class.testing::Message", align 8
  %92 = alloca %"class.testing::internal::AssertHelper", align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.chen::json", align 8
  %95 = alloca %"class.chen::json", align 8
  %96 = alloca %"class.chen::json", align 8
  %97 = alloca %"class.chen::json", align 8
  %98 = alloca %"class.testing::AssertionResult", align 8
  %99 = alloca i8, align 1
  %100 = alloca %"class.testing::Message", align 8
  %101 = alloca %"class.testing::internal::AssertHelper", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.testing::AssertionResult", align 8
  %104 = alloca i8, align 1
  %105 = alloca %"class.testing::Message", align 8
  %106 = alloca %"class.testing::internal::AssertHelper", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.testing::AssertionResult", align 8
  %109 = alloca i8, align 1
  %110 = alloca %"class.testing::Message", align 8
  %111 = alloca %"class.testing::internal::AssertHelper", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.testing::AssertionResult", align 8
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca %"class.testing::Message", align 8
  %117 = alloca %"class.testing::internal::AssertHelper", align 8
  %118 = alloca %"class.testing::AssertionResult", align 8
  %119 = alloca i32, align 4
  %120 = alloca double, align 8
  %121 = alloca %"class.testing::Message", align 8
  %122 = alloca %"class.testing::internal::AssertHelper", align 8
  %123 = alloca %"class.testing::AssertionResult", align 8
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca %"class.testing::Message", align 8
  %127 = alloca %"class.testing::internal::AssertHelper", align 8
  %128 = alloca %"class.testing::AssertionResult", align 8
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca %"class.testing::Message", align 8
  %132 = alloca %"class.testing::internal::AssertHelper", align 8
  %133 = alloca %"class.testing::AssertionResult", align 8
  %134 = alloca %"class.std::__cxx11::basic_string", align 8
  %135 = alloca %"class.testing::Message", align 8
  %136 = alloca %"class.testing::internal::AssertHelper", align 8
  %137 = alloca %"class.testing::AssertionResult", align 8
  %138 = alloca i8, align 1
  %139 = alloca %"class.testing::Message", align 8
  %140 = alloca %"class.testing::internal::AssertHelper", align 8
  %141 = alloca %"class.std::__cxx11::basic_string", align 8
  %142 = alloca %"class.testing::AssertionResult", align 8
  %143 = alloca i8, align 1
  %144 = alloca %"class.chen::json", align 8
  %145 = alloca %"class.testing::Message", align 8
  %146 = alloca %"class.testing::internal::AssertHelper", align 8
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.testing::AssertionResult", align 8
  %149 = alloca i8, align 1
  %150 = alloca %"class.testing::Message", align 8
  %151 = alloca %"class.testing::internal::AssertHelper", align 8
  %152 = alloca %"class.std::__cxx11::basic_string", align 8
  %153 = alloca %"class.testing::AssertionResult", align 8
  %154 = alloca i8, align 1
  %155 = alloca %"class.testing::Message", align 8
  %156 = alloca %"class.testing::internal::AssertHelper", align 8
  %157 = alloca %"class.std::__cxx11::basic_string", align 8
  %158 = alloca %"class.testing::AssertionResult", align 8
  %159 = alloca i8, align 1
  %160 = alloca %"class.testing::Message", align 8
  %161 = alloca %"class.testing::internal::AssertHelper", align 8
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca %"class.testing::AssertionResult", align 8
  %164 = alloca i8, align 1
  %165 = alloca %"class.testing::Message", align 8
  %166 = alloca %"class.testing::internal::AssertHelper", align 8
  %167 = alloca %"class.std::__cxx11::basic_string", align 8
  %168 = alloca %"class.testing::AssertionResult", align 8
  %169 = alloca i8, align 1
  %170 = alloca %"class.testing::Message", align 8
  %171 = alloca %"class.testing::internal::AssertHelper", align 8
  %172 = alloca %"class.std::__cxx11::basic_string", align 8
  %173 = alloca %"class.testing::AssertionResult", align 8
  %174 = alloca i8, align 1
  %175 = alloca %"class.testing::Message", align 8
  %176 = alloca %"class.testing::internal::AssertHelper", align 8
  %177 = alloca %"class.std::__cxx11::basic_string", align 8
  %178 = alloca %"class.testing::AssertionResult", align 8
  %179 = alloca i8, align 1
  %180 = alloca %"class.chen::json", align 8
  %181 = alloca %"class.testing::Message", align 8
  %182 = alloca %"class.testing::internal::AssertHelper", align 8
  %183 = alloca %"class.std::__cxx11::basic_string", align 8
  %184 = alloca %"class.testing::AssertionResult", align 8
  %185 = alloca i8, align 1
  %186 = alloca %"class.chen::json", align 8
  %187 = alloca %"class.testing::Message", align 8
  %188 = alloca %"class.testing::internal::AssertHelper", align 8
  %189 = alloca %"class.std::__cxx11::basic_string", align 8
  %190 = alloca %"class.testing::AssertionResult", align 8
  %191 = alloca i8, align 1
  %192 = alloca %"class.chen::json", align 8
  %193 = alloca %"class.std::unordered_map", align 8
  %194 = alloca %"class.testing::Message", align 8
  %195 = alloca %"class.testing::internal::AssertHelper", align 8
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.testing::AssertionResult", align 8
  %198 = alloca i8, align 1
  %199 = alloca %"class.chen::json", align 8
  %200 = alloca %"class.std::vector", align 8
  %201 = alloca %"class.testing::Message", align 8
  %202 = alloca %"class.testing::internal::AssertHelper", align 8
  %203 = alloca %"class.std::__cxx11::basic_string", align 8
  %204 = alloca %"class.testing::AssertionResult", align 8
  %205 = alloca i8, align 1
  %206 = alloca %"class.chen::json", align 8
  %207 = alloca %"class.testing::Message", align 8
  %208 = alloca %"class.testing::internal::AssertHelper", align 8
  %209 = alloca %"class.std::__cxx11::basic_string", align 8
  %210 = alloca %"class.testing::AssertionResult", align 8
  %211 = alloca i8, align 1
  %212 = alloca %"class.chen::json", align 8
  %213 = alloca %"class.testing::Message", align 8
  %214 = alloca %"class.testing::internal::AssertHelper", align 8
  %215 = alloca %"class.std::__cxx11::basic_string", align 8
  %216 = alloca %"class.testing::AssertionResult", align 8
  %217 = alloca i8, align 1
  %218 = alloca %"class.chen::json", align 8
  %219 = alloca %"class.testing::Message", align 8
  %220 = alloca %"class.testing::internal::AssertHelper", align 8
  %221 = alloca %"class.std::__cxx11::basic_string", align 8
  %222 = alloca %"class.testing::AssertionResult", align 8
  %223 = alloca i8, align 1
  %224 = alloca %"class.chen::json", align 8
  %225 = alloca %"class.testing::Message", align 8
  %226 = alloca %"class.testing::internal::AssertHelper", align 8
  %227 = alloca %"class.std::__cxx11::basic_string", align 8
  %228 = alloca %"class.testing::AssertionResult", align 8
  %229 = alloca i8, align 1
  %230 = alloca %"class.chen::json", align 8
  %231 = alloca %"class.std::__cxx11::basic_string", align 8
  %232 = alloca %"class.std::allocator", align 1
  %233 = alloca %"class.testing::Message", align 8
  %234 = alloca %"class.testing::internal::AssertHelper", align 8
  %235 = alloca %"class.std::__cxx11::basic_string", align 8
  %236 = alloca %"class.testing::AssertionResult", align 8
  %237 = alloca i8, align 1
  %238 = alloca %"class.chen::json", align 8
  %239 = alloca %"class.testing::Message", align 8
  %240 = alloca %"class.testing::internal::AssertHelper", align 8
  %241 = alloca %"class.std::__cxx11::basic_string", align 8
  %242 = alloca %"class.testing::AssertionResult", align 8
  %243 = alloca i8, align 1
  %244 = alloca %"class.chen::json", align 8
  %245 = alloca %"class.testing::Message", align 8
  %246 = alloca %"class.testing::internal::AssertHelper", align 8
  %247 = alloca %"class.std::__cxx11::basic_string", align 8
  %248 = alloca %"class.testing::AssertionResult", align 8
  %249 = alloca i8, align 1
  %250 = alloca %"class.chen::json", align 8
  %251 = alloca %"class.testing::Message", align 8
  %252 = alloca %"class.testing::internal::AssertHelper", align 8
  %253 = alloca %"class.std::__cxx11::basic_string", align 8
  %254 = alloca %"class.testing::AssertionResult", align 8
  %255 = alloca i8, align 1
  %256 = alloca %"class.chen::json", align 8
  %257 = alloca %"class.testing::Message", align 8
  %258 = alloca %"class.testing::internal::AssertHelper", align 8
  %259 = alloca %"class.std::__cxx11::basic_string", align 8
  %260 = alloca %"class.testing::AssertionResult", align 8
  %261 = alloca i8, align 1
  %262 = alloca %"class.chen::json", align 8
  %263 = alloca %"class.std::__cxx11::basic_string", align 8
  %264 = alloca %"class.std::allocator", align 1
  %265 = alloca %"class.testing::Message", align 8
  %266 = alloca %"class.testing::internal::AssertHelper", align 8
  %267 = alloca %"class.std::__cxx11::basic_string", align 8
  %268 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %269 = alloca i8, align 1
  %270 = alloca %"class.chen::json", align 8
  %271 = alloca %"class.std::__cxx11::basic_string", align 8
  %272 = alloca %"class.std::allocator", align 1
  %273 = alloca i32, align 4
  %274 = alloca ptr, align 8
  %275 = alloca %"class.testing::Message", align 8
  %276 = alloca %"class.testing::internal::AssertHelper", align 8
  %277 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %278 = alloca i8, align 1
  %279 = alloca %"class.chen::json", align 8
  %280 = alloca %"class.std::__cxx11::basic_string", align 8
  %281 = alloca %"class.std::allocator", align 1
  %282 = alloca ptr, align 8
  %283 = alloca %"class.testing::Message", align 8
  %284 = alloca %"class.testing::internal::AssertHelper", align 8
  %285 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %286 = alloca i8, align 1
  %287 = alloca %"class.chen::json", align 8
  %288 = alloca %"class.std::__cxx11::basic_string", align 8
  %289 = alloca %"class.std::allocator", align 1
  %290 = alloca ptr, align 8
  %291 = alloca %"class.testing::Message", align 8
  %292 = alloca %"class.testing::internal::AssertHelper", align 8
  %293 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %294 = alloca i8, align 1
  %295 = alloca %"class.chen::json", align 8
  %296 = alloca %"class.std::__cxx11::basic_string", align 8
  %297 = alloca %"class.std::allocator", align 1
  %298 = alloca ptr, align 8
  %299 = alloca %"class.testing::Message", align 8
  %300 = alloca %"class.testing::internal::AssertHelper", align 8
  %301 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %302 = alloca i8, align 1
  %303 = alloca %"class.chen::json", align 8
  %304 = alloca %"class.std::__cxx11::basic_string", align 8
  %305 = alloca %"class.std::allocator", align 1
  %306 = alloca ptr, align 8
  %307 = alloca %"class.testing::Message", align 8
  %308 = alloca %"class.testing::internal::AssertHelper", align 8
  %309 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %310 = alloca i8, align 1
  %311 = alloca %"class.chen::json", align 8
  %312 = alloca %"class.std::__cxx11::basic_string", align 8
  %313 = alloca %"class.std::allocator", align 1
  %314 = alloca ptr, align 8
  %315 = alloca %"class.testing::Message", align 8
  %316 = alloca %"class.testing::internal::AssertHelper", align 8
  %317 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %318 = alloca i8, align 1
  %319 = alloca %"class.chen::json", align 8
  %320 = alloca %"class.std::__cxx11::basic_string", align 8
  %321 = alloca %"class.std::allocator", align 1
  %322 = alloca ptr, align 8
  %323 = alloca %"class.testing::Message", align 8
  %324 = alloca %"class.testing::internal::AssertHelper", align 8
  %325 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %326 = alloca i8, align 1
  %327 = alloca %"class.chen::json", align 8
  %328 = alloca %"class.std::__cxx11::basic_string", align 8
  %329 = alloca %"class.std::allocator", align 1
  %330 = alloca ptr, align 8
  %331 = alloca %"class.testing::Message", align 8
  %332 = alloca %"class.testing::internal::AssertHelper", align 8
  %333 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %334 = alloca i8, align 1
  %335 = alloca %"class.chen::json", align 8
  %336 = alloca %"class.std::__cxx11::basic_string", align 8
  %337 = alloca %"class.std::allocator", align 1
  %338 = alloca ptr, align 8
  %339 = alloca %"class.testing::Message", align 8
  %340 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %341 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #8
  call void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef 2)
          to label %342 unwind label %375

342:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 3)
          to label %343 unwind label %379

343:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %8, i32 noundef 4)
          to label %344 unwind label %383

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %9, i32 noundef 5)
          to label %345 unwind label %387

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef 6)
          to label %346 unwind label %391

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 56, ptr %11) #8
  invoke void @_ZNK4chen4jsoncvSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEEEv(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %347 unwind label %395

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #8
  invoke void @_ZNK4chen4jsoncvSt6vectorIS0_SaIS0_EEEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %348 unwind label %399

348:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %349 = invoke noundef double @_ZNK4chen4jsoncvdEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %350 unwind label %403

350:                                              ; preds = %348
  store double %349, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  %351 = invoke noundef signext i8 @_ZNK4chen4jsoncvaEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %352 unwind label %407

352:                                              ; preds = %350
  store i8 %351, ptr %14, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  %353 = invoke noundef zeroext i8 @_ZNK4chen4jsoncvhEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %354 unwind label %411

354:                                              ; preds = %352
  store i8 %353, ptr %15, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %16) #8
  %355 = invoke noundef signext i16 @_ZNK4chen4jsoncvsEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %356 unwind label %415

356:                                              ; preds = %354
  store i16 %355, ptr %16, align 2, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 2, ptr %17) #8
  %357 = invoke noundef zeroext i16 @_ZNK4chen4jsoncvtEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %358 unwind label %419

358:                                              ; preds = %356
  store i16 %357, ptr %17, align 2, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %359 = invoke noundef i32 @_ZNK4chen4jsoncviEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %360 unwind label %423

360:                                              ; preds = %358
  store i32 %359, ptr %18, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %361 = invoke noundef i32 @_ZNK4chen4jsoncvjEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %362 unwind label %427

362:                                              ; preds = %360
  store i32 %361, ptr %19, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %363 = invoke noundef i64 @_ZNK4chen4jsoncvlEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %364 unwind label %431

364:                                              ; preds = %362
  store i64 %363, ptr %20, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %365 = invoke noundef i64 @_ZNK4chen4jsoncvmEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %366 unwind label %435

366:                                              ; preds = %364
  store i64 %365, ptr %21, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  invoke void @_ZNK4chen4jsoncvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %367 unwind label %439

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  %368 = invoke noundef zeroext i1 @_ZNK4chen4jsoncvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %369 unwind label %443

369:                                              ; preds = %367
  %370 = zext i1 %368 to i8
  store i8 %370, ptr %23, align 1, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIddEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %24, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %371 unwind label %447

371:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  %372 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %373 unwind label %451

373:                                              ; preds = %371
  br i1 %372, label %374, label %455

374:                                              ; preds = %373
  br label %475

375:                                              ; preds = %1
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %5, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %6, align 4
  br label %3171

379:                                              ; preds = %342
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %5, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %6, align 4
  br label %3170

383:                                              ; preds = %343
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %5, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %6, align 4
  br label %3169

387:                                              ; preds = %344
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  br label %3168

391:                                              ; preds = %345
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %5, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %6, align 4
  br label %3167

395:                                              ; preds = %346
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %5, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %6, align 4
  br label %3166

399:                                              ; preds = %347
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %5, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %6, align 4
  br label %3165

403:                                              ; preds = %348
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %5, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %6, align 4
  br label %3164

407:                                              ; preds = %350
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %5, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %6, align 4
  br label %3163

411:                                              ; preds = %352
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %5, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %6, align 4
  br label %3162

415:                                              ; preds = %354
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %5, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %6, align 4
  br label %3161

419:                                              ; preds = %356
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %5, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %6, align 4
  br label %3160

423:                                              ; preds = %358
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %5, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %6, align 4
  br label %3159

427:                                              ; preds = %360
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %5, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %6, align 4
  br label %3158

431:                                              ; preds = %362
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %5, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %6, align 4
  br label %3157

435:                                              ; preds = %364
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %5, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %6, align 4
  br label %3156

439:                                              ; preds = %366
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %5, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %6, align 4
  br label %3155

443:                                              ; preds = %798, %796, %794, %792, %790, %367
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %5, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %6, align 4
  br label %3154

447:                                              ; preds = %369
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %5, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %481

451:                                              ; preds = %371
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %5, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %6, align 4
  br label %480

455:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %456 unwind label %461

456:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %457 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %458 unwind label %465

458:                                              ; preds = %456
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef @.str.3, i32 noundef 40, ptr noundef %457)
          to label %459 unwind label %465

459:                                              ; preds = %458
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %460 unwind label %469

460:                                              ; preds = %459
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %475

461:                                              ; preds = %455
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %5, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %6, align 4
  br label %474

465:                                              ; preds = %458, %456
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %5, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %6, align 4
  br label %473

469:                                              ; preds = %459
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %5, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %473

473:                                              ; preds = %469, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %474

474:                                              ; preds = %473, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %480

475:                                              ; preds = %460, %374
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIiaEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %28, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef null)
          to label %476 unwind label %482

476:                                              ; preds = %475
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  %477 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %478 unwind label %486

478:                                              ; preds = %476
  br i1 %477, label %479, label %490

479:                                              ; preds = %478
  br label %510

480:                                              ; preds = %474, %451
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  br label %481

481:                                              ; preds = %480, %447
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  br label %3154

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

486:                                              ; preds = %476
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %5, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %6, align 4
  br label %515

490:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %491 unwind label %496

491:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %492 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %493 unwind label %500

493:                                              ; preds = %491
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %31, i32 noundef 1, ptr noundef @.str.3, i32 noundef 41, ptr noundef %492)
          to label %494 unwind label %500

494:                                              ; preds = %493
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %495 unwind label %504

495:                                              ; preds = %494
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %510

496:                                              ; preds = %490
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %5, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %6, align 4
  br label %509

500:                                              ; preds = %493, %491
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %5, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %6, align 4
  br label %508

504:                                              ; preds = %494
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %5, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %508

508:                                              ; preds = %504, %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br label %509

509:                                              ; preds = %508, %496
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %515

510:                                              ; preds = %495, %479
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 0, ptr %33, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %32, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef null)
          to label %511 unwind label %517

511:                                              ; preds = %510
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  %512 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %513 unwind label %521

513:                                              ; preds = %511
  br i1 %512, label %514, label %525

514:                                              ; preds = %513
  br label %545

515:                                              ; preds = %509, %486
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  br label %516

516:                                              ; preds = %515, %482
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %3154

517:                                              ; preds = %510
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %5, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %551

521:                                              ; preds = %511
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %5, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %6, align 4
  br label %550

525:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %526 unwind label %531

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %527 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %528 unwind label %535

528:                                              ; preds = %526
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef @.str.3, i32 noundef 42, ptr noundef %527)
          to label %529 unwind label %535

529:                                              ; preds = %528
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %530 unwind label %539

530:                                              ; preds = %529
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %545

531:                                              ; preds = %525
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %5, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %6, align 4
  br label %544

535:                                              ; preds = %528, %526
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %5, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %6, align 4
  br label %543

539:                                              ; preds = %529
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %5, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %543

543:                                              ; preds = %539, %535
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %544

544:                                              ; preds = %543, %531
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %550

545:                                              ; preds = %530, %514
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  store i32 0, ptr %37, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIisEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %36, ptr noundef @.str.6, ptr noundef @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 2 dereferenceable(2) %16, ptr noundef null)
          to label %546 unwind label %552

546:                                              ; preds = %545
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  %547 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %548 unwind label %556

548:                                              ; preds = %546
  br i1 %547, label %549, label %560

549:                                              ; preds = %548
  br label %580

550:                                              ; preds = %544, %521
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  br label %551

551:                                              ; preds = %550, %517
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  br label %3154

552:                                              ; preds = %545
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %5, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %586

556:                                              ; preds = %546
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %5, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %6, align 4
  br label %585

560:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %561 unwind label %566

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %562 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %563 unwind label %570

563:                                              ; preds = %561
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef 1, ptr noundef @.str.3, i32 noundef 43, ptr noundef %562)
          to label %564 unwind label %570

564:                                              ; preds = %563
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %565 unwind label %574

565:                                              ; preds = %564
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %580

566:                                              ; preds = %560
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %5, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %6, align 4
  br label %579

570:                                              ; preds = %563, %561
  %571 = landingpad { ptr, i32 }
          cleanup
  %572 = extractvalue { ptr, i32 } %571, 0
  store ptr %572, ptr %5, align 8
  %573 = extractvalue { ptr, i32 } %571, 1
  store i32 %573, ptr %6, align 4
  br label %578

574:                                              ; preds = %564
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %5, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %578

578:                                              ; preds = %574, %570
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %579

579:                                              ; preds = %578, %566
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %585

580:                                              ; preds = %565, %549
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 0, ptr %41, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIitEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %40, ptr noundef @.str.6, ptr noundef @.str.10, ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 2 dereferenceable(2) %17, ptr noundef null)
          to label %581 unwind label %587

581:                                              ; preds = %580
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  %582 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %583 unwind label %591

583:                                              ; preds = %581
  br i1 %582, label %584, label %595

584:                                              ; preds = %583
  br label %615

585:                                              ; preds = %579, %556
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  br label %586

586:                                              ; preds = %585, %552
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  br label %3154

587:                                              ; preds = %580
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %5, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %621

591:                                              ; preds = %581
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %5, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %6, align 4
  br label %620

595:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %596 unwind label %601

596:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %597 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %598 unwind label %605

598:                                              ; preds = %596
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 1, ptr noundef @.str.3, i32 noundef 44, ptr noundef %597)
          to label %599 unwind label %605

599:                                              ; preds = %598
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %600 unwind label %609

600:                                              ; preds = %599
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %615

601:                                              ; preds = %595
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %5, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %6, align 4
  br label %614

605:                                              ; preds = %598, %596
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %5, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %6, align 4
  br label %613

609:                                              ; preds = %599
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %5, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %613

613:                                              ; preds = %609, %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %614

614:                                              ; preds = %613, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %620

615:                                              ; preds = %600, %584
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 0, ptr %45, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %44, ptr noundef @.str.6, ptr noundef @.str.11, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef null)
          to label %616 unwind label %622

616:                                              ; preds = %615
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  %617 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %618 unwind label %626

618:                                              ; preds = %616
  br i1 %617, label %619, label %630

619:                                              ; preds = %618
  br label %650

620:                                              ; preds = %614, %591
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  br label %621

621:                                              ; preds = %620, %587
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  br label %3154

622:                                              ; preds = %615
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %5, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %656

626:                                              ; preds = %616
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %5, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %6, align 4
  br label %655

630:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %631 unwind label %636

631:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %632 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %633 unwind label %640

633:                                              ; preds = %631
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %47, i32 noundef 1, ptr noundef @.str.3, i32 noundef 45, ptr noundef %632)
          to label %634 unwind label %640

634:                                              ; preds = %633
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %635 unwind label %644

635:                                              ; preds = %634
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %650

636:                                              ; preds = %630
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %5, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %6, align 4
  br label %649

640:                                              ; preds = %633, %631
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %5, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %6, align 4
  br label %648

644:                                              ; preds = %634
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %5, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %648

648:                                              ; preds = %644, %640
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %649

649:                                              ; preds = %648, %636
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %655

650:                                              ; preds = %635, %619
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  store i32 0, ptr %49, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %48, ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef null)
          to label %651 unwind label %657

651:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  %652 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %653 unwind label %661

653:                                              ; preds = %651
  br i1 %652, label %654, label %665

654:                                              ; preds = %653
  br label %685

655:                                              ; preds = %649, %626
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #8
  br label %656

656:                                              ; preds = %655, %622
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  br label %3154

657:                                              ; preds = %650
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %5, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  br label %691

661:                                              ; preds = %651
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %5, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %6, align 4
  br label %690

665:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %666 unwind label %671

666:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %667 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %668 unwind label %675

668:                                              ; preds = %666
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %51, i32 noundef 1, ptr noundef @.str.3, i32 noundef 46, ptr noundef %667)
          to label %669 unwind label %675

669:                                              ; preds = %668
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %670 unwind label %679

670:                                              ; preds = %669
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %685

671:                                              ; preds = %665
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %5, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %6, align 4
  br label %684

675:                                              ; preds = %668, %666
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %5, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %6, align 4
  br label %683

679:                                              ; preds = %669
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %5, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %683

683:                                              ; preds = %679, %675
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  br label %684

684:                                              ; preds = %683, %671
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %690

685:                                              ; preds = %670, %654
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  store i32 0, ptr %53, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIilEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %52, ptr noundef @.str.6, ptr noundef @.str.14, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef null)
          to label %686 unwind label %692

686:                                              ; preds = %685
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  %687 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %688 unwind label %696

688:                                              ; preds = %686
  br i1 %687, label %689, label %700

689:                                              ; preds = %688
  br label %720

690:                                              ; preds = %684, %661
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  br label %691

691:                                              ; preds = %690, %657
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %3154

692:                                              ; preds = %685
  %693 = landingpad { ptr, i32 }
          cleanup
  %694 = extractvalue { ptr, i32 } %693, 0
  store ptr %694, ptr %5, align 8
  %695 = extractvalue { ptr, i32 } %693, 1
  store i32 %695, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %726

696:                                              ; preds = %686
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %5, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %6, align 4
  br label %725

700:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %701 unwind label %706

701:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %702 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %703 unwind label %710

703:                                              ; preds = %701
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %55, i32 noundef 1, ptr noundef @.str.3, i32 noundef 47, ptr noundef %702)
          to label %704 unwind label %710

704:                                              ; preds = %703
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %705 unwind label %714

705:                                              ; preds = %704
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %720

706:                                              ; preds = %700
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %5, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %6, align 4
  br label %719

710:                                              ; preds = %703, %701
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %5, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %6, align 4
  br label %718

714:                                              ; preds = %704
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %5, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %718

718:                                              ; preds = %714, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %719

719:                                              ; preds = %718, %706
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %725

720:                                              ; preds = %705, %689
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  store i32 0, ptr %57, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %56, ptr noundef @.str.12, ptr noundef @.str.15, ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef null)
          to label %721 unwind label %727

721:                                              ; preds = %720
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  %722 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %723 unwind label %731

723:                                              ; preds = %721
  br i1 %722, label %724, label %735

724:                                              ; preds = %723
  br label %755

725:                                              ; preds = %719, %696
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #8
  br label %726

726:                                              ; preds = %725, %692
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  br label %3154

727:                                              ; preds = %720
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %5, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %761

731:                                              ; preds = %721
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %5, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %6, align 4
  br label %760

735:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %736 unwind label %741

736:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %737 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %738 unwind label %745

738:                                              ; preds = %736
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %59, i32 noundef 1, ptr noundef @.str.3, i32 noundef 48, ptr noundef %737)
          to label %739 unwind label %745

739:                                              ; preds = %738
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %740 unwind label %749

740:                                              ; preds = %739
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %755

741:                                              ; preds = %735
  %742 = landingpad { ptr, i32 }
          cleanup
  %743 = extractvalue { ptr, i32 } %742, 0
  store ptr %743, ptr %5, align 8
  %744 = extractvalue { ptr, i32 } %742, 1
  store i32 %744, ptr %6, align 4
  br label %754

745:                                              ; preds = %738, %736
  %746 = landingpad { ptr, i32 }
          cleanup
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %5, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %6, align 4
  br label %753

749:                                              ; preds = %739
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %5, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %753

753:                                              ; preds = %749, %745
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %754

754:                                              ; preds = %753, %741
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %760

755:                                              ; preds = %740, %724
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  store i8 1, ptr %61, align 1, !tbaa !18
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIbbEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %60, ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %756 unwind label %762

756:                                              ; preds = %755
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  %757 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %758 unwind label %766

758:                                              ; preds = %756
  br i1 %757, label %759, label %770

759:                                              ; preds = %758
  br label %790

760:                                              ; preds = %754, %731
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  br label %761

761:                                              ; preds = %760, %727
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #8
  br label %3154

762:                                              ; preds = %755
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %5, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  br label %809

766:                                              ; preds = %756
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %5, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %6, align 4
  br label %808

770:                                              ; preds = %758
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %771 unwind label %776

771:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %772 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %773 unwind label %780

773:                                              ; preds = %771
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %63, i32 noundef 1, ptr noundef @.str.3, i32 noundef 49, ptr noundef %772)
          to label %774 unwind label %780

774:                                              ; preds = %773
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %775 unwind label %784

775:                                              ; preds = %774
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %790

776:                                              ; preds = %770
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %5, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %6, align 4
  br label %789

780:                                              ; preds = %773, %771
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %5, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %6, align 4
  br label %788

784:                                              ; preds = %774
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %5, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %788

788:                                              ; preds = %784, %780
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  br label %789

789:                                              ; preds = %788, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %808

790:                                              ; preds = %775, %759
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  %791 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %792 unwind label %443

792:                                              ; preds = %790
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %791) #8
  %793 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %794 unwind label %443

794:                                              ; preds = %792
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %793) #8
  %795 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4chen4json9getNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %796 unwind label %443

796:                                              ; preds = %794
  store double 1.150000e+02, ptr %795, align 8, !tbaa !9
  %797 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %798 unwind label %443

798:                                              ; preds = %796
  %799 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %797, ptr noundef @.str.18)
          to label %800 unwind label %443

800:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %66) #8
  invoke void @_ZNK4chen4json8toObjectB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %801 unwind label %810

801:                                              ; preds = %800
  %802 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %66) #8
  %803 = zext i1 %802 to i8
  store i8 %803, ptr %65, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 1 dereferenceable(1) %65, ptr noundef null)
          to label %804 unwind label %814

804:                                              ; preds = %801
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %66) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #8
  %805 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %64)
          to label %806 unwind label %819

806:                                              ; preds = %804
  br i1 %805, label %807, label %823

807:                                              ; preds = %806
  br label %848

808:                                              ; preds = %789, %766
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #8
  br label %809

809:                                              ; preds = %808, %762
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  br label %3154

810:                                              ; preds = %800
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %5, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %6, align 4
  br label %818

814:                                              ; preds = %801
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %5, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %6, align 4
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %66) #8
  br label %818

818:                                              ; preds = %814, %810
  call void @llvm.lifetime.end.p0(i64 56, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #8
  br label %857

819:                                              ; preds = %804
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %5, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %6, align 4
  br label %856

823:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %824 unwind label %829

824:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef @.str.19, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %825 unwind label %833

825:                                              ; preds = %824
  %826 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %68, i32 noundef 1, ptr noundef @.str.3, i32 noundef 56, ptr noundef %826)
          to label %827 unwind label %837

827:                                              ; preds = %825
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %828 unwind label %841

828:                                              ; preds = %827
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %848

829:                                              ; preds = %823
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %5, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %6, align 4
  br label %847

833:                                              ; preds = %824
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %5, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %6, align 4
  br label %846

837:                                              ; preds = %825
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %5, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %6, align 4
  br label %845

841:                                              ; preds = %827
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %5, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  br label %845

845:                                              ; preds = %841, %837
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %846

846:                                              ; preds = %845, %833
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  br label %847

847:                                              ; preds = %846, %829
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %856

848:                                              ; preds = %828, %807
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %72) #8
  invoke void @_ZNK4chen4json7toArrayEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %849 unwind label %858

849:                                              ; preds = %848
  %850 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  %851 = zext i1 %850 to i8
  store i8 %851, ptr %71, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 1 dereferenceable(1) %71, ptr noundef null)
          to label %852 unwind label %862

852:                                              ; preds = %849
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  %853 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %854 unwind label %867

854:                                              ; preds = %852
  br i1 %853, label %855, label %871

855:                                              ; preds = %854
  br label %896

856:                                              ; preds = %847, %819
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #8
  br label %857

857:                                              ; preds = %856, %818
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #8
  br label %3154

858:                                              ; preds = %848
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %5, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %6, align 4
  br label %866

862:                                              ; preds = %849
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %5, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %6, align 4
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  br label %866

866:                                              ; preds = %862, %858
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %907

867:                                              ; preds = %852
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %5, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %6, align 4
  br label %906

871:                                              ; preds = %854
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %872 unwind label %877

872:                                              ; preds = %871
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef @.str.21, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %873 unwind label %881

873:                                              ; preds = %872
  %874 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %74, i32 noundef 1, ptr noundef @.str.3, i32 noundef 57, ptr noundef %874)
          to label %875 unwind label %885

875:                                              ; preds = %873
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %876 unwind label %889

876:                                              ; preds = %875
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %896

877:                                              ; preds = %871
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %5, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %6, align 4
  br label %895

881:                                              ; preds = %872
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %5, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %6, align 4
  br label %894

885:                                              ; preds = %873
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %5, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %6, align 4
  br label %893

889:                                              ; preds = %875
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %5, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %893

893:                                              ; preds = %889, %885
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  br label %894

894:                                              ; preds = %893, %881
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  br label %895

895:                                              ; preds = %894, %877
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %906

896:                                              ; preds = %876, %855
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #8
  invoke void @_ZN4chen4jsonC1ERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %897 unwind label %908

897:                                              ; preds = %896
  %898 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %78)
          to label %899 unwind label %912

899:                                              ; preds = %897
  %900 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %898) #8
  %901 = zext i1 %900 to i8
  store i8 %901, ptr %77, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef null)
          to label %902 unwind label %912

902:                                              ; preds = %899
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  %903 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
          to label %904 unwind label %917

904:                                              ; preds = %902
  br i1 %903, label %905, label %921

905:                                              ; preds = %904
  br label %946

906:                                              ; preds = %895, %867
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  br label %907

907:                                              ; preds = %906, %866
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  br label %3154

908:                                              ; preds = %896
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %5, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %6, align 4
  br label %916

912:                                              ; preds = %899, %897
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %5, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  br label %916

916:                                              ; preds = %912, %908
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  br label %957

917:                                              ; preds = %902
  %918 = landingpad { ptr, i32 }
          cleanup
  %919 = extractvalue { ptr, i32 } %918, 0
  store ptr %919, ptr %5, align 8
  %920 = extractvalue { ptr, i32 } %918, 1
  store i32 %920, ptr %6, align 4
  br label %956

921:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %922 unwind label %927

922:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef @.str.22, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %923 unwind label %931

923:                                              ; preds = %922
  %924 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef 1, ptr noundef @.str.3, i32 noundef 59, ptr noundef %924)
          to label %925 unwind label %935

925:                                              ; preds = %923
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %926 unwind label %939

926:                                              ; preds = %925
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %946

927:                                              ; preds = %921
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %5, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %6, align 4
  br label %945

931:                                              ; preds = %922
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %5, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %6, align 4
  br label %944

935:                                              ; preds = %923
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %5, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %6, align 4
  br label %943

939:                                              ; preds = %925
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %5, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br label %943

943:                                              ; preds = %939, %935
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  br label %944

944:                                              ; preds = %943, %931
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %945

945:                                              ; preds = %944, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %956

946:                                              ; preds = %926, %905
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #8
  invoke void @_ZN4chen4jsonC1ERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %947 unwind label %958

947:                                              ; preds = %946
  %948 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %949 unwind label %962

949:                                              ; preds = %947
  %950 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %948) #8
  %951 = zext i1 %950 to i8
  store i8 %951, ptr %83, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 1 dereferenceable(1) %83, ptr noundef null)
          to label %952 unwind label %962

952:                                              ; preds = %949
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  %953 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %954 unwind label %967

954:                                              ; preds = %952
  br i1 %953, label %955, label %971

955:                                              ; preds = %954
  br label %996

956:                                              ; preds = %945, %917
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  br label %957

957:                                              ; preds = %956, %916
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  br label %3154

958:                                              ; preds = %946
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %5, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %6, align 4
  br label %966

962:                                              ; preds = %949, %947
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %5, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  br label %966

966:                                              ; preds = %962, %958
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  br label %1007

967:                                              ; preds = %952
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %5, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %6, align 4
  br label %1006

971:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %972 unwind label %977

972:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef @.str.23, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %973 unwind label %981

973:                                              ; preds = %972
  %974 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 1, ptr noundef @.str.3, i32 noundef 60, ptr noundef %974)
          to label %975 unwind label %985

975:                                              ; preds = %973
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %976 unwind label %989

976:                                              ; preds = %975
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %996

977:                                              ; preds = %971
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %5, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %6, align 4
  br label %995

981:                                              ; preds = %972
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %5, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %6, align 4
  br label %994

985:                                              ; preds = %973
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %5, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %6, align 4
  br label %993

989:                                              ; preds = %975
  %990 = landingpad { ptr, i32 }
          cleanup
  %991 = extractvalue { ptr, i32 } %990, 0
  store ptr %991, ptr %5, align 8
  %992 = extractvalue { ptr, i32 } %990, 1
  store i32 %992, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  br label %993

993:                                              ; preds = %989, %985
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %994

994:                                              ; preds = %993, %981
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %995

995:                                              ; preds = %994, %977
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %1006

996:                                              ; preds = %976, %955
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #8
  invoke void @_ZN4chen4jsonC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %997 unwind label %1008

997:                                              ; preds = %996
  %998 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %999 unwind label %1012

999:                                              ; preds = %997
  %1000 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %998) #8
  %1001 = zext i1 %1000 to i8
  store i8 %1001, ptr %89, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef nonnull align 1 dereferenceable(1) %89, ptr noundef null)
          to label %1002 unwind label %1012

1002:                                             ; preds = %999
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  %1003 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %1004 unwind label %1017

1004:                                             ; preds = %1002
  br i1 %1003, label %1005, label %1021

1005:                                             ; preds = %1004
  br label %1046

1006:                                             ; preds = %995, %967
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #8
  br label %1007

1007:                                             ; preds = %1006, %966
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #8
  br label %3154

1008:                                             ; preds = %996
  %1009 = landingpad { ptr, i32 }
          cleanup
  %1010 = extractvalue { ptr, i32 } %1009, 0
  store ptr %1010, ptr %5, align 8
  %1011 = extractvalue { ptr, i32 } %1009, 1
  store i32 %1011, ptr %6, align 4
  br label %1016

1012:                                             ; preds = %999, %997
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %5, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  br label %1016

1016:                                             ; preds = %1012, %1008
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %1064

1017:                                             ; preds = %1002
  %1018 = landingpad { ptr, i32 }
          cleanup
  %1019 = extractvalue { ptr, i32 } %1018, 0
  store ptr %1019, ptr %5, align 8
  %1020 = extractvalue { ptr, i32 } %1018, 1
  store i32 %1020, ptr %6, align 4
  br label %1063

1021:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91)
          to label %1022 unwind label %1027

1022:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %93, ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef @.str.24, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1023 unwind label %1031

1023:                                             ; preds = %1022
  %1024 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %92, i32 noundef 1, ptr noundef @.str.3, i32 noundef 61, ptr noundef %1024)
          to label %1025 unwind label %1035

1025:                                             ; preds = %1023
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %91)
          to label %1026 unwind label %1039

1026:                                             ; preds = %1025
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1046

1027:                                             ; preds = %1021
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %5, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %6, align 4
  br label %1045

1031:                                             ; preds = %1022
  %1032 = landingpad { ptr, i32 }
          cleanup
  %1033 = extractvalue { ptr, i32 } %1032, 0
  store ptr %1033, ptr %5, align 8
  %1034 = extractvalue { ptr, i32 } %1032, 1
  store i32 %1034, ptr %6, align 4
  br label %1044

1035:                                             ; preds = %1023
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %5, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %6, align 4
  br label %1043

1039:                                             ; preds = %1025
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %5, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  br label %1043

1043:                                             ; preds = %1039, %1035
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  br label %1044

1044:                                             ; preds = %1043, %1031
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %1045

1045:                                             ; preds = %1044, %1027
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1063

1046:                                             ; preds = %1026, %1005
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #8
  %1047 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %94, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %1048 unwind label %1065

1048:                                             ; preds = %1046
  %1049 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %1050 unwind label %1065

1050:                                             ; preds = %1048
  %1051 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %1052 unwind label %1065

1052:                                             ; preds = %1050
  %1053 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSEj(ptr noundef nonnull align 8 dereferenceable(16) %97, i32 noundef 115)
          to label %1054 unwind label %1065

1054:                                             ; preds = %1052
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #8
  %1055 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %1056 unwind label %1069

1056:                                             ; preds = %1054
  %1057 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %1055) #8
  %1058 = zext i1 %1057 to i8
  store i8 %1058, ptr %99, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef nonnull align 1 dereferenceable(1) %99, ptr noundef null)
          to label %1059 unwind label %1069

1059:                                             ; preds = %1056
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #8
  %1060 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1061 unwind label %1073

1061:                                             ; preds = %1059
  br i1 %1060, label %1062, label %1077

1062:                                             ; preds = %1061
  br label %1102

1063:                                             ; preds = %1045, %1017
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #8
  br label %1064

1064:                                             ; preds = %1063, %1016
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  br label %3154

1065:                                             ; preds = %1052, %1050, %1048, %1046
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %5, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %6, align 4
  br label %3153

1069:                                             ; preds = %1056, %1054
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %5, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #8
  br label %1112

1073:                                             ; preds = %1059
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %5, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %6, align 4
  br label %1111

1077:                                             ; preds = %1061
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1078 unwind label %1083

1078:                                             ; preds = %1077
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %102, ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef @.str.25, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1079 unwind label %1087

1079:                                             ; preds = %1078
  %1080 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %101, i32 noundef 1, ptr noundef @.str.3, i32 noundef 73, ptr noundef %1080)
          to label %1081 unwind label %1091

1081:                                             ; preds = %1079
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1082 unwind label %1095

1082:                                             ; preds = %1081
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %1102

1083:                                             ; preds = %1077
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %5, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %6, align 4
  br label %1101

1087:                                             ; preds = %1078
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %5, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %6, align 4
  br label %1100

1091:                                             ; preds = %1079
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %5, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %6, align 4
  br label %1099

1095:                                             ; preds = %1081
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %5, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  br label %1099

1099:                                             ; preds = %1095, %1091
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  br label %1100

1100:                                             ; preds = %1099, %1087
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #8
  br label %1101

1101:                                             ; preds = %1100, %1083
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %1111

1102:                                             ; preds = %1082, %1062
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #8
  %1103 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %1104 unwind label %1113

1104:                                             ; preds = %1102
  %1105 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1103) #8
  %1106 = zext i1 %1105 to i8
  store i8 %1106, ptr %104, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull align 1 dereferenceable(1) %104, ptr noundef null)
          to label %1107 unwind label %1113

1107:                                             ; preds = %1104
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #8
  %1108 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %1109 unwind label %1117

1109:                                             ; preds = %1107
  br i1 %1108, label %1110, label %1121

1110:                                             ; preds = %1109
  br label %1146

1111:                                             ; preds = %1101, %1073
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #8
  br label %1112

1112:                                             ; preds = %1111, %1069
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  br label %3153

1113:                                             ; preds = %1104, %1102
  %1114 = landingpad { ptr, i32 }
          cleanup
  %1115 = extractvalue { ptr, i32 } %1114, 0
  store ptr %1115, ptr %5, align 8
  %1116 = extractvalue { ptr, i32 } %1114, 1
  store i32 %1116, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #8
  br label %1156

1117:                                             ; preds = %1107
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %5, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %6, align 4
  br label %1155

1121:                                             ; preds = %1109
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1122 unwind label %1127

1122:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %107) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef @.str.26, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1123 unwind label %1131

1123:                                             ; preds = %1122
  %1124 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef 1, ptr noundef @.str.3, i32 noundef 74, ptr noundef %1124)
          to label %1125 unwind label %1135

1125:                                             ; preds = %1123
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1126 unwind label %1139

1126:                                             ; preds = %1125
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  br label %1146

1127:                                             ; preds = %1121
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %5, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %6, align 4
  br label %1145

1131:                                             ; preds = %1122
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %5, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %6, align 4
  br label %1144

1135:                                             ; preds = %1123
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %5, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %6, align 4
  br label %1143

1139:                                             ; preds = %1125
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %5, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  br label %1143

1143:                                             ; preds = %1139, %1135
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  br label %1144

1144:                                             ; preds = %1143, %1131
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  br label %1145

1145:                                             ; preds = %1144, %1127
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  br label %1155

1146:                                             ; preds = %1126, %1110
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #8
  %1147 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %1148 unwind label %1157

1148:                                             ; preds = %1146
  %1149 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1147) #8
  %1150 = zext i1 %1149 to i8
  store i8 %1150, ptr %109, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %108, ptr noundef nonnull align 1 dereferenceable(1) %109, ptr noundef null)
          to label %1151 unwind label %1157

1151:                                             ; preds = %1148
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #8
  %1152 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %1153 unwind label %1161

1153:                                             ; preds = %1151
  br i1 %1152, label %1154, label %1165

1154:                                             ; preds = %1153
  br label %1190

1155:                                             ; preds = %1145, %1117
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #8
  br label %1156

1156:                                             ; preds = %1155, %1113
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  br label %3153

1157:                                             ; preds = %1148, %1146
  %1158 = landingpad { ptr, i32 }
          cleanup
  %1159 = extractvalue { ptr, i32 } %1158, 0
  store ptr %1159, ptr %5, align 8
  %1160 = extractvalue { ptr, i32 } %1158, 1
  store i32 %1160, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #8
  br label %1198

1161:                                             ; preds = %1151
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %5, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %6, align 4
  br label %1197

1165:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %1166 unwind label %1171

1166:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %112) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %108, ptr noundef @.str.27, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1167 unwind label %1175

1167:                                             ; preds = %1166
  %1168 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 1, ptr noundef @.str.3, i32 noundef 75, ptr noundef %1168)
          to label %1169 unwind label %1179

1169:                                             ; preds = %1167
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %1170 unwind label %1183

1170:                                             ; preds = %1169
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  br label %1190

1171:                                             ; preds = %1165
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %5, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %6, align 4
  br label %1189

1175:                                             ; preds = %1166
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %5, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %6, align 4
  br label %1188

1179:                                             ; preds = %1167
  %1180 = landingpad { ptr, i32 }
          cleanup
  %1181 = extractvalue { ptr, i32 } %1180, 0
  store ptr %1181, ptr %5, align 8
  %1182 = extractvalue { ptr, i32 } %1180, 1
  store i32 %1182, ptr %6, align 4
  br label %1187

1183:                                             ; preds = %1169
  %1184 = landingpad { ptr, i32 }
          cleanup
  %1185 = extractvalue { ptr, i32 } %1184, 0
  store ptr %1185, ptr %5, align 8
  %1186 = extractvalue { ptr, i32 } %1184, 1
  store i32 %1186, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #8
  br label %1187

1187:                                             ; preds = %1183, %1179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  br label %1188

1188:                                             ; preds = %1187, %1175
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  br label %1189

1189:                                             ; preds = %1188, %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  br label %1197

1190:                                             ; preds = %1170, %1154
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #8
  store i32 115, ptr %114, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #8
  %1191 = invoke noundef i32 @_ZNK4chen4json11getUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16) %97)
          to label %1192 unwind label %1199

1192:                                             ; preds = %1190
  store i32 %1191, ptr %115, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %113, ptr noundef @.str.28, ptr noundef @.str.29, ptr noundef nonnull align 4 dereferenceable(4) %114, ptr noundef nonnull align 4 dereferenceable(4) %115)
          to label %1193 unwind label %1199

1193:                                             ; preds = %1192
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #8
  %1194 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %1195 unwind label %1203

1195:                                             ; preds = %1193
  br i1 %1194, label %1196, label %1207

1196:                                             ; preds = %1195
  br label %1227

1197:                                             ; preds = %1189, %1161
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #8
  br label %1198

1198:                                             ; preds = %1197, %1157
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #8
  br label %3153

1199:                                             ; preds = %1192, %1190
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %5, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #8
  br label %1235

1203:                                             ; preds = %1193
  %1204 = landingpad { ptr, i32 }
          cleanup
  %1205 = extractvalue { ptr, i32 } %1204, 0
  store ptr %1205, ptr %5, align 8
  %1206 = extractvalue { ptr, i32 } %1204, 1
  store i32 %1206, ptr %6, align 4
  br label %1234

1207:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %1208 unwind label %1213

1208:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1209 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %1210 unwind label %1217

1210:                                             ; preds = %1208
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %117, i32 noundef 1, ptr noundef @.str.3, i32 noundef 76, ptr noundef %1209)
          to label %1211 unwind label %1217

1211:                                             ; preds = %1210
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %1212 unwind label %1221

1212:                                             ; preds = %1211
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  br label %1227

1213:                                             ; preds = %1207
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %5, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %6, align 4
  br label %1226

1217:                                             ; preds = %1210, %1208
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %5, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %6, align 4
  br label %1225

1221:                                             ; preds = %1211
  %1222 = landingpad { ptr, i32 }
          cleanup
  %1223 = extractvalue { ptr, i32 } %1222, 0
  store ptr %1223, ptr %5, align 8
  %1224 = extractvalue { ptr, i32 } %1222, 1
  store i32 %1224, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #8
  br label %1225

1225:                                             ; preds = %1221, %1217
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  br label %1226

1226:                                             ; preds = %1225, %1213
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  br label %1234

1227:                                             ; preds = %1212, %1196
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #8
  store i32 123, ptr %119, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %1228 = invoke noundef double @_ZNK4chen4json8toNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %1229 unwind label %1236

1229:                                             ; preds = %1227
  store double %1228, ptr %120, align 8, !tbaa !9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIidEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %118, ptr noundef @.str.18, ptr noundef @.str.30, ptr noundef nonnull align 4 dereferenceable(4) %119, ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %1230 unwind label %1236

1230:                                             ; preds = %1229
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #8
  %1231 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
          to label %1232 unwind label %1240

1232:                                             ; preds = %1230
  br i1 %1231, label %1233, label %1244

1233:                                             ; preds = %1232
  br label %1264

1234:                                             ; preds = %1226, %1203
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #8
  br label %1235

1235:                                             ; preds = %1234, %1199
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #8
  br label %3153

1236:                                             ; preds = %1229, %1227
  %1237 = landingpad { ptr, i32 }
          cleanup
  %1238 = extractvalue { ptr, i32 } %1237, 0
  store ptr %1238, ptr %5, align 8
  %1239 = extractvalue { ptr, i32 } %1237, 1
  store i32 %1239, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #8
  br label %1272

1240:                                             ; preds = %1230
  %1241 = landingpad { ptr, i32 }
          cleanup
  %1242 = extractvalue { ptr, i32 } %1241, 0
  store ptr %1242, ptr %5, align 8
  %1243 = extractvalue { ptr, i32 } %1241, 1
  store i32 %1243, ptr %6, align 4
  br label %1271

1244:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1245 unwind label %1250

1245:                                             ; preds = %1244
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  %1246 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
          to label %1247 unwind label %1254

1247:                                             ; preds = %1245
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef 1, ptr noundef @.str.3, i32 noundef 78, ptr noundef %1246)
          to label %1248 unwind label %1254

1248:                                             ; preds = %1247
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1249 unwind label %1258

1249:                                             ; preds = %1248
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1264

1250:                                             ; preds = %1244
  %1251 = landingpad { ptr, i32 }
          cleanup
  %1252 = extractvalue { ptr, i32 } %1251, 0
  store ptr %1252, ptr %5, align 8
  %1253 = extractvalue { ptr, i32 } %1251, 1
  store i32 %1253, ptr %6, align 4
  br label %1263

1254:                                             ; preds = %1247, %1245
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %5, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %6, align 4
  br label %1262

1258:                                             ; preds = %1248
  %1259 = landingpad { ptr, i32 }
          cleanup
  %1260 = extractvalue { ptr, i32 } %1259, 0
  store ptr %1260, ptr %5, align 8
  %1261 = extractvalue { ptr, i32 } %1259, 1
  store i32 %1261, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  br label %1262

1262:                                             ; preds = %1258, %1254
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  br label %1263

1263:                                             ; preds = %1262, %1250
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1271

1264:                                             ; preds = %1249, %1233
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #8
  store i32 123, ptr %124, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #8
  %1265 = invoke noundef i32 @_ZNK4chen4json9toIntegerEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %1266 unwind label %1273

1266:                                             ; preds = %1264
  store i32 %1265, ptr %125, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %123, ptr noundef @.str.18, ptr noundef @.str.31, ptr noundef nonnull align 4 dereferenceable(4) %124, ptr noundef nonnull align 4 dereferenceable(4) %125)
          to label %1267 unwind label %1273

1267:                                             ; preds = %1266
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #8
  %1268 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
          to label %1269 unwind label %1277

1269:                                             ; preds = %1267
  br i1 %1268, label %1270, label %1281

1270:                                             ; preds = %1269
  br label %1301

1271:                                             ; preds = %1263, %1240
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #8
  br label %1272

1272:                                             ; preds = %1271, %1236
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #8
  br label %3153

1273:                                             ; preds = %1266, %1264
  %1274 = landingpad { ptr, i32 }
          cleanup
  %1275 = extractvalue { ptr, i32 } %1274, 0
  store ptr %1275, ptr %5, align 8
  %1276 = extractvalue { ptr, i32 } %1274, 1
  store i32 %1276, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #8
  br label %1309

1277:                                             ; preds = %1267
  %1278 = landingpad { ptr, i32 }
          cleanup
  %1279 = extractvalue { ptr, i32 } %1278, 0
  store ptr %1279, ptr %5, align 8
  %1280 = extractvalue { ptr, i32 } %1278, 1
  store i32 %1280, ptr %6, align 4
  br label %1308

1281:                                             ; preds = %1269
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1282 unwind label %1287

1282:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #8
  %1283 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
          to label %1284 unwind label %1291

1284:                                             ; preds = %1282
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %127, i32 noundef 1, ptr noundef @.str.3, i32 noundef 79, ptr noundef %1283)
          to label %1285 unwind label %1291

1285:                                             ; preds = %1284
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1286 unwind label %1295

1286:                                             ; preds = %1285
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  br label %1301

1287:                                             ; preds = %1281
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %5, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %6, align 4
  br label %1300

1291:                                             ; preds = %1284, %1282
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %5, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %6, align 4
  br label %1299

1295:                                             ; preds = %1285
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %5, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  br label %1299

1299:                                             ; preds = %1295, %1291
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  br label %1300

1300:                                             ; preds = %1299, %1287
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  br label %1308

1301:                                             ; preds = %1286, %1270
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #8
  store i32 123, ptr %129, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #8
  %1302 = invoke noundef i32 @_ZNK4chen4json10toUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %1303 unwind label %1310

1303:                                             ; preds = %1301
  store i32 %1302, ptr %130, align 4, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %128, ptr noundef @.str.32, ptr noundef @.str.33, ptr noundef nonnull align 4 dereferenceable(4) %129, ptr noundef nonnull align 4 dereferenceable(4) %130)
          to label %1304 unwind label %1310

1304:                                             ; preds = %1303
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #8
  %1305 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %128)
          to label %1306 unwind label %1314

1306:                                             ; preds = %1304
  br i1 %1305, label %1307, label %1318

1307:                                             ; preds = %1306
  br label %1338

1308:                                             ; preds = %1300, %1277
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #8
  br label %1309

1309:                                             ; preds = %1308, %1273
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #8
  br label %3153

1310:                                             ; preds = %1303, %1301
  %1311 = landingpad { ptr, i32 }
          cleanup
  %1312 = extractvalue { ptr, i32 } %1311, 0
  store ptr %1312, ptr %5, align 8
  %1313 = extractvalue { ptr, i32 } %1311, 1
  store i32 %1313, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #8
  br label %1345

1314:                                             ; preds = %1304
  %1315 = landingpad { ptr, i32 }
          cleanup
  %1316 = extractvalue { ptr, i32 } %1315, 0
  store ptr %1316, ptr %5, align 8
  %1317 = extractvalue { ptr, i32 } %1315, 1
  store i32 %1317, ptr %6, align 4
  br label %1344

1318:                                             ; preds = %1306
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %1319 unwind label %1324

1319:                                             ; preds = %1318
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  %1320 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %128)
          to label %1321 unwind label %1328

1321:                                             ; preds = %1319
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %132, i32 noundef 1, ptr noundef @.str.3, i32 noundef 80, ptr noundef %1320)
          to label %1322 unwind label %1328

1322:                                             ; preds = %1321
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %1323 unwind label %1332

1323:                                             ; preds = %1322
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %1338

1324:                                             ; preds = %1318
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %5, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %6, align 4
  br label %1337

1328:                                             ; preds = %1321, %1319
  %1329 = landingpad { ptr, i32 }
          cleanup
  %1330 = extractvalue { ptr, i32 } %1329, 0
  store ptr %1330, ptr %5, align 8
  %1331 = extractvalue { ptr, i32 } %1329, 1
  store i32 %1331, ptr %6, align 4
  br label %1336

1332:                                             ; preds = %1322
  %1333 = landingpad { ptr, i32 }
          cleanup
  %1334 = extractvalue { ptr, i32 } %1333, 0
  store ptr %1334, ptr %5, align 8
  %1335 = extractvalue { ptr, i32 } %1333, 1
  store i32 %1335, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  br label %1336

1336:                                             ; preds = %1332, %1328
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #8
  br label %1337

1337:                                             ; preds = %1336, %1324
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %1344

1338:                                             ; preds = %1323, %1307
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #8
  invoke void @_ZNK4chen4json8toStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %134, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %1339 unwind label %1346

1339:                                             ; preds = %1338
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %133, ptr noundef @.str.34, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(4) @.str.36, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %1340 unwind label %1350

1340:                                             ; preds = %1339
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #8
  %1341 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %133)
          to label %1342 unwind label %1355

1342:                                             ; preds = %1340
  br i1 %1341, label %1343, label %1359

1343:                                             ; preds = %1342
  br label %1379

1344:                                             ; preds = %1337, %1314
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #8
  br label %1345

1345:                                             ; preds = %1344, %1310
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #8
  br label %3153

1346:                                             ; preds = %1338
  %1347 = landingpad { ptr, i32 }
          cleanup
  %1348 = extractvalue { ptr, i32 } %1347, 0
  store ptr %1348, ptr %5, align 8
  %1349 = extractvalue { ptr, i32 } %1347, 1
  store i32 %1349, ptr %6, align 4
  br label %1354

1350:                                             ; preds = %1339
  %1351 = landingpad { ptr, i32 }
          cleanup
  %1352 = extractvalue { ptr, i32 } %1351, 0
  store ptr %1352, ptr %5, align 8
  %1353 = extractvalue { ptr, i32 } %1351, 1
  store i32 %1353, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  br label %1354

1354:                                             ; preds = %1350, %1346
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #8
  br label %1388

1355:                                             ; preds = %1340
  %1356 = landingpad { ptr, i32 }
          cleanup
  %1357 = extractvalue { ptr, i32 } %1356, 0
  store ptr %1357, ptr %5, align 8
  %1358 = extractvalue { ptr, i32 } %1356, 1
  store i32 %1358, ptr %6, align 4
  br label %1387

1359:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %135)
          to label %1360 unwind label %1365

1360:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #8
  %1361 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %133)
          to label %1362 unwind label %1369

1362:                                             ; preds = %1360
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %136, i32 noundef 1, ptr noundef @.str.3, i32 noundef 81, ptr noundef %1361)
          to label %1363 unwind label %1369

1363:                                             ; preds = %1362
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %135)
          to label %1364 unwind label %1373

1364:                                             ; preds = %1363
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %1379

1365:                                             ; preds = %1359
  %1366 = landingpad { ptr, i32 }
          cleanup
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %5, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %6, align 4
  br label %1378

1369:                                             ; preds = %1362, %1360
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %5, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %6, align 4
  br label %1377

1373:                                             ; preds = %1363
  %1374 = landingpad { ptr, i32 }
          cleanup
  %1375 = extractvalue { ptr, i32 } %1374, 0
  store ptr %1375, ptr %5, align 8
  %1376 = extractvalue { ptr, i32 } %1374, 1
  store i32 %1376, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  br label %1377

1377:                                             ; preds = %1373, %1369
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  br label %1378

1378:                                             ; preds = %1377, %1365
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %1387

1379:                                             ; preds = %1364, %1343
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #8
  %1380 = invoke noundef zeroext i1 @_ZNK4chen4json6toBoolEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %1381 unwind label %1389

1381:                                             ; preds = %1379
  %1382 = zext i1 %1380 to i8
  store i8 %1382, ptr %138, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %137, ptr noundef nonnull align 1 dereferenceable(1) %138, ptr noundef null)
          to label %1383 unwind label %1389

1383:                                             ; preds = %1381
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #8
  %1384 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %1385 unwind label %1393

1385:                                             ; preds = %1383
  br i1 %1384, label %1386, label %1397

1386:                                             ; preds = %1385
  br label %1422

1387:                                             ; preds = %1378, %1355
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #8
  br label %1388

1388:                                             ; preds = %1387, %1354
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  br label %3153

1389:                                             ; preds = %1381, %1379
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %5, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #8
  br label %1432

1393:                                             ; preds = %1383
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %5, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %6, align 4
  br label %1431

1397:                                             ; preds = %1385
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %1398 unwind label %1403

1398:                                             ; preds = %1397
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %141) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %141, ptr noundef nonnull align 8 dereferenceable(16) %137, ptr noundef @.str.37, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1399 unwind label %1407

1399:                                             ; preds = %1398
  %1400 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %140, i32 noundef 1, ptr noundef @.str.3, i32 noundef 82, ptr noundef %1400)
          to label %1401 unwind label %1411

1401:                                             ; preds = %1399
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %1402 unwind label %1415

1402:                                             ; preds = %1401
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1422

1403:                                             ; preds = %1397
  %1404 = landingpad { ptr, i32 }
          cleanup
  %1405 = extractvalue { ptr, i32 } %1404, 0
  store ptr %1405, ptr %5, align 8
  %1406 = extractvalue { ptr, i32 } %1404, 1
  store i32 %1406, ptr %6, align 4
  br label %1421

1407:                                             ; preds = %1398
  %1408 = landingpad { ptr, i32 }
          cleanup
  %1409 = extractvalue { ptr, i32 } %1408, 0
  store ptr %1409, ptr %5, align 8
  %1410 = extractvalue { ptr, i32 } %1408, 1
  store i32 %1410, ptr %6, align 4
  br label %1420

1411:                                             ; preds = %1399
  %1412 = landingpad { ptr, i32 }
          cleanup
  %1413 = extractvalue { ptr, i32 } %1412, 0
  store ptr %1413, ptr %5, align 8
  %1414 = extractvalue { ptr, i32 } %1412, 1
  store i32 %1414, ptr %6, align 4
  br label %1419

1415:                                             ; preds = %1401
  %1416 = landingpad { ptr, i32 }
          cleanup
  %1417 = extractvalue { ptr, i32 } %1416, 0
  store ptr %1417, ptr %5, align 8
  %1418 = extractvalue { ptr, i32 } %1416, 1
  store i32 %1418, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br label %1419

1419:                                             ; preds = %1415, %1411
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  br label %1420

1420:                                             ; preds = %1419, %1407
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  br label %1421

1421:                                             ; preds = %1420, %1403
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1431

1422:                                             ; preds = %1402, %1386
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %137) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %144) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %144, i32 noundef 0)
          to label %1423 unwind label %1433

1423:                                             ; preds = %1422
  %1424 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %1425 unwind label %1437

1425:                                             ; preds = %1423
  %1426 = zext i1 %1424 to i8
  store i8 %1426, ptr %143, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %142, ptr noundef nonnull align 1 dereferenceable(1) %143, ptr noundef null)
          to label %1427 unwind label %1437

1427:                                             ; preds = %1425
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  %1428 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %142)
          to label %1429 unwind label %1442

1429:                                             ; preds = %1427
  br i1 %1428, label %1430, label %1446

1430:                                             ; preds = %1429
  br label %1471

1431:                                             ; preds = %1421, %1393
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %137) #8
  br label %1432

1432:                                             ; preds = %1431, %1389
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #8
  br label %3153

1433:                                             ; preds = %1422
  %1434 = landingpad { ptr, i32 }
          cleanup
  %1435 = extractvalue { ptr, i32 } %1434, 0
  store ptr %1435, ptr %5, align 8
  %1436 = extractvalue { ptr, i32 } %1434, 1
  store i32 %1436, ptr %6, align 4
  br label %1441

1437:                                             ; preds = %1425, %1423
  %1438 = landingpad { ptr, i32 }
          cleanup
  %1439 = extractvalue { ptr, i32 } %1438, 0
  store ptr %1439, ptr %5, align 8
  %1440 = extractvalue { ptr, i32 } %1438, 1
  store i32 %1440, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #8
  br label %1441

1441:                                             ; preds = %1437, %1433
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  br label %1480

1442:                                             ; preds = %1427
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %5, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %6, align 4
  br label %1479

1446:                                             ; preds = %1429
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1447 unwind label %1452

1447:                                             ; preds = %1446
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %147, ptr noundef nonnull align 8 dereferenceable(16) %142, ptr noundef @.str.38, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1448 unwind label %1456

1448:                                             ; preds = %1447
  %1449 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef 1, ptr noundef @.str.3, i32 noundef 84, ptr noundef %1449)
          to label %1450 unwind label %1460

1450:                                             ; preds = %1448
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1451 unwind label %1464

1451:                                             ; preds = %1450
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  br label %1471

1452:                                             ; preds = %1446
  %1453 = landingpad { ptr, i32 }
          cleanup
  %1454 = extractvalue { ptr, i32 } %1453, 0
  store ptr %1454, ptr %5, align 8
  %1455 = extractvalue { ptr, i32 } %1453, 1
  store i32 %1455, ptr %6, align 4
  br label %1470

1456:                                             ; preds = %1447
  %1457 = landingpad { ptr, i32 }
          cleanup
  %1458 = extractvalue { ptr, i32 } %1457, 0
  store ptr %1458, ptr %5, align 8
  %1459 = extractvalue { ptr, i32 } %1457, 1
  store i32 %1459, ptr %6, align 4
  br label %1469

1460:                                             ; preds = %1448
  %1461 = landingpad { ptr, i32 }
          cleanup
  %1462 = extractvalue { ptr, i32 } %1461, 0
  store ptr %1462, ptr %5, align 8
  %1463 = extractvalue { ptr, i32 } %1461, 1
  store i32 %1463, ptr %6, align 4
  br label %1468

1464:                                             ; preds = %1450
  %1465 = landingpad { ptr, i32 }
          cleanup
  %1466 = extractvalue { ptr, i32 } %1465, 0
  store ptr %1466, ptr %5, align 8
  %1467 = extractvalue { ptr, i32 } %1465, 1
  store i32 %1467, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #8
  br label %1468

1468:                                             ; preds = %1464, %1460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  br label %1469

1469:                                             ; preds = %1468, %1456
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  br label %1470

1470:                                             ; preds = %1469, %1452
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  br label %1479

1471:                                             ; preds = %1451, %1430
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #8
  %1472 = invoke noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %1473 unwind label %1481

1473:                                             ; preds = %1471
  %1474 = zext i1 %1472 to i8
  store i8 %1474, ptr %149, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 1 dereferenceable(1) %149, ptr noundef null)
          to label %1475 unwind label %1481

1475:                                             ; preds = %1473
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #8
  %1476 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %148)
          to label %1477 unwind label %1485

1477:                                             ; preds = %1475
  br i1 %1476, label %1478, label %1489

1478:                                             ; preds = %1477
  br label %1514

1479:                                             ; preds = %1470, %1442
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #8
  br label %1480

1480:                                             ; preds = %1479, %1441
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #8
  br label %3153

1481:                                             ; preds = %1473, %1471
  %1482 = landingpad { ptr, i32 }
          cleanup
  %1483 = extractvalue { ptr, i32 } %1482, 0
  store ptr %1483, ptr %5, align 8
  %1484 = extractvalue { ptr, i32 } %1482, 1
  store i32 %1484, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #8
  br label %1523

1485:                                             ; preds = %1475
  %1486 = landingpad { ptr, i32 }
          cleanup
  %1487 = extractvalue { ptr, i32 } %1486, 0
  store ptr %1487, ptr %5, align 8
  %1488 = extractvalue { ptr, i32 } %1486, 1
  store i32 %1488, ptr %6, align 4
  br label %1522

1489:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1490 unwind label %1495

1490:                                             ; preds = %1489
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %152) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %152, ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef @.str.39, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1491 unwind label %1499

1491:                                             ; preds = %1490
  %1492 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %151, i32 noundef 1, ptr noundef @.str.3, i32 noundef 85, ptr noundef %1492)
          to label %1493 unwind label %1503

1493:                                             ; preds = %1491
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1494 unwind label %1507

1494:                                             ; preds = %1493
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #8
  br label %1514

1495:                                             ; preds = %1489
  %1496 = landingpad { ptr, i32 }
          cleanup
  %1497 = extractvalue { ptr, i32 } %1496, 0
  store ptr %1497, ptr %5, align 8
  %1498 = extractvalue { ptr, i32 } %1496, 1
  store i32 %1498, ptr %6, align 4
  br label %1513

1499:                                             ; preds = %1490
  %1500 = landingpad { ptr, i32 }
          cleanup
  %1501 = extractvalue { ptr, i32 } %1500, 0
  store ptr %1501, ptr %5, align 8
  %1502 = extractvalue { ptr, i32 } %1500, 1
  store i32 %1502, ptr %6, align 4
  br label %1512

1503:                                             ; preds = %1491
  %1504 = landingpad { ptr, i32 }
          cleanup
  %1505 = extractvalue { ptr, i32 } %1504, 0
  store ptr %1505, ptr %5, align 8
  %1506 = extractvalue { ptr, i32 } %1504, 1
  store i32 %1506, ptr %6, align 4
  br label %1511

1507:                                             ; preds = %1493
  %1508 = landingpad { ptr, i32 }
          cleanup
  %1509 = extractvalue { ptr, i32 } %1508, 0
  store ptr %1509, ptr %5, align 8
  %1510 = extractvalue { ptr, i32 } %1508, 1
  store i32 %1510, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #8
  br label %1511

1511:                                             ; preds = %1507, %1503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  br label %1512

1512:                                             ; preds = %1511, %1499
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #8
  br label %1513

1513:                                             ; preds = %1512, %1495
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #8
  br label %1522

1514:                                             ; preds = %1494, %1478
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %154) #8
  %1515 = invoke noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %1516 unwind label %1524

1516:                                             ; preds = %1514
  %1517 = zext i1 %1515 to i8
  store i8 %1517, ptr %154, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef nonnull align 1 dereferenceable(1) %154, ptr noundef null)
          to label %1518 unwind label %1524

1518:                                             ; preds = %1516
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #8
  %1519 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
          to label %1520 unwind label %1528

1520:                                             ; preds = %1518
  br i1 %1519, label %1521, label %1532

1521:                                             ; preds = %1520
  br label %1557

1522:                                             ; preds = %1513, %1485
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #8
  br label %1523

1523:                                             ; preds = %1522, %1481
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #8
  br label %3153

1524:                                             ; preds = %1516, %1514
  %1525 = landingpad { ptr, i32 }
          cleanup
  %1526 = extractvalue { ptr, i32 } %1525, 0
  store ptr %1526, ptr %5, align 8
  %1527 = extractvalue { ptr, i32 } %1525, 1
  store i32 %1527, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #8
  br label %1566

1528:                                             ; preds = %1518
  %1529 = landingpad { ptr, i32 }
          cleanup
  %1530 = extractvalue { ptr, i32 } %1529, 0
  store ptr %1530, ptr %5, align 8
  %1531 = extractvalue { ptr, i32 } %1529, 1
  store i32 %1531, ptr %6, align 4
  br label %1565

1532:                                             ; preds = %1520
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1533 unwind label %1538

1533:                                             ; preds = %1532
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %157) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %157, ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef @.str.40, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1534 unwind label %1542

1534:                                             ; preds = %1533
  %1535 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %157) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef 1, ptr noundef @.str.3, i32 noundef 86, ptr noundef %1535)
          to label %1536 unwind label %1546

1536:                                             ; preds = %1534
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1537 unwind label %1550

1537:                                             ; preds = %1536
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  br label %1557

1538:                                             ; preds = %1532
  %1539 = landingpad { ptr, i32 }
          cleanup
  %1540 = extractvalue { ptr, i32 } %1539, 0
  store ptr %1540, ptr %5, align 8
  %1541 = extractvalue { ptr, i32 } %1539, 1
  store i32 %1541, ptr %6, align 4
  br label %1556

1542:                                             ; preds = %1533
  %1543 = landingpad { ptr, i32 }
          cleanup
  %1544 = extractvalue { ptr, i32 } %1543, 0
  store ptr %1544, ptr %5, align 8
  %1545 = extractvalue { ptr, i32 } %1543, 1
  store i32 %1545, ptr %6, align 4
  br label %1555

1546:                                             ; preds = %1534
  %1547 = landingpad { ptr, i32 }
          cleanup
  %1548 = extractvalue { ptr, i32 } %1547, 0
  store ptr %1548, ptr %5, align 8
  %1549 = extractvalue { ptr, i32 } %1547, 1
  store i32 %1549, ptr %6, align 4
  br label %1554

1550:                                             ; preds = %1536
  %1551 = landingpad { ptr, i32 }
          cleanup
  %1552 = extractvalue { ptr, i32 } %1551, 0
  store ptr %1552, ptr %5, align 8
  %1553 = extractvalue { ptr, i32 } %1551, 1
  store i32 %1553, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #8
  br label %1554

1554:                                             ; preds = %1550, %1546
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #8
  br label %1555

1555:                                             ; preds = %1554, %1542
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #8
  br label %1556

1556:                                             ; preds = %1555, %1538
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  br label %1565

1557:                                             ; preds = %1537, %1521
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %158) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #8
  %1558 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %1559 unwind label %1567

1559:                                             ; preds = %1557
  %1560 = zext i1 %1558 to i8
  store i8 %1560, ptr %159, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef nonnull align 1 dereferenceable(1) %159, ptr noundef null)
          to label %1561 unwind label %1567

1561:                                             ; preds = %1559
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #8
  %1562 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %1563 unwind label %1571

1563:                                             ; preds = %1561
  br i1 %1562, label %1564, label %1575

1564:                                             ; preds = %1563
  br label %1600

1565:                                             ; preds = %1556, %1528
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #8
  br label %1566

1566:                                             ; preds = %1565, %1524
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #8
  br label %3153

1567:                                             ; preds = %1559, %1557
  %1568 = landingpad { ptr, i32 }
          cleanup
  %1569 = extractvalue { ptr, i32 } %1568, 0
  store ptr %1569, ptr %5, align 8
  %1570 = extractvalue { ptr, i32 } %1568, 1
  store i32 %1570, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #8
  br label %1609

1571:                                             ; preds = %1561
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %5, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %6, align 4
  br label %1608

1575:                                             ; preds = %1563
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %160)
          to label %1576 unwind label %1581

1576:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %162, ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef @.str.41, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1577 unwind label %1585

1577:                                             ; preds = %1576
  %1578 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %161, i32 noundef 1, ptr noundef @.str.3, i32 noundef 87, ptr noundef %1578)
          to label %1579 unwind label %1589

1579:                                             ; preds = %1577
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(8) %160)
          to label %1580 unwind label %1593

1580:                                             ; preds = %1579
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  br label %1600

1581:                                             ; preds = %1575
  %1582 = landingpad { ptr, i32 }
          cleanup
  %1583 = extractvalue { ptr, i32 } %1582, 0
  store ptr %1583, ptr %5, align 8
  %1584 = extractvalue { ptr, i32 } %1582, 1
  store i32 %1584, ptr %6, align 4
  br label %1599

1585:                                             ; preds = %1576
  %1586 = landingpad { ptr, i32 }
          cleanup
  %1587 = extractvalue { ptr, i32 } %1586, 0
  store ptr %1587, ptr %5, align 8
  %1588 = extractvalue { ptr, i32 } %1586, 1
  store i32 %1588, ptr %6, align 4
  br label %1598

1589:                                             ; preds = %1577
  %1590 = landingpad { ptr, i32 }
          cleanup
  %1591 = extractvalue { ptr, i32 } %1590, 0
  store ptr %1591, ptr %5, align 8
  %1592 = extractvalue { ptr, i32 } %1590, 1
  store i32 %1592, ptr %6, align 4
  br label %1597

1593:                                             ; preds = %1579
  %1594 = landingpad { ptr, i32 }
          cleanup
  %1595 = extractvalue { ptr, i32 } %1594, 0
  store ptr %1595, ptr %5, align 8
  %1596 = extractvalue { ptr, i32 } %1594, 1
  store i32 %1596, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #8
  br label %1597

1597:                                             ; preds = %1593, %1589
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  br label %1598

1598:                                             ; preds = %1597, %1585
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #8
  br label %1599

1599:                                             ; preds = %1598, %1581
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  br label %1608

1600:                                             ; preds = %1580, %1564
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #8
  %1601 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %1602 unwind label %1610

1602:                                             ; preds = %1600
  %1603 = zext i1 %1601 to i8
  store i8 %1603, ptr %164, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 1 dereferenceable(1) %164, ptr noundef null)
          to label %1604 unwind label %1610

1604:                                             ; preds = %1602
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #8
  %1605 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %163)
          to label %1606 unwind label %1614

1606:                                             ; preds = %1604
  br i1 %1605, label %1607, label %1618

1607:                                             ; preds = %1606
  br label %1643

1608:                                             ; preds = %1599, %1571
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #8
  br label %1609

1609:                                             ; preds = %1608, %1567
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #8
  br label %3153

1610:                                             ; preds = %1602, %1600
  %1611 = landingpad { ptr, i32 }
          cleanup
  %1612 = extractvalue { ptr, i32 } %1611, 0
  store ptr %1612, ptr %5, align 8
  %1613 = extractvalue { ptr, i32 } %1611, 1
  store i32 %1613, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #8
  br label %1652

1614:                                             ; preds = %1604
  %1615 = landingpad { ptr, i32 }
          cleanup
  %1616 = extractvalue { ptr, i32 } %1615, 0
  store ptr %1616, ptr %5, align 8
  %1617 = extractvalue { ptr, i32 } %1615, 1
  store i32 %1617, ptr %6, align 4
  br label %1651

1618:                                             ; preds = %1606
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %1619 unwind label %1624

1619:                                             ; preds = %1618
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %167) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %167, ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef @.str.42, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1620 unwind label %1628

1620:                                             ; preds = %1619
  %1621 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %167) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %166, i32 noundef 1, ptr noundef @.str.3, i32 noundef 88, ptr noundef %1621)
          to label %1622 unwind label %1632

1622:                                             ; preds = %1620
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %1623 unwind label %1636

1623:                                             ; preds = %1622
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  br label %1643

1624:                                             ; preds = %1618
  %1625 = landingpad { ptr, i32 }
          cleanup
  %1626 = extractvalue { ptr, i32 } %1625, 0
  store ptr %1626, ptr %5, align 8
  %1627 = extractvalue { ptr, i32 } %1625, 1
  store i32 %1627, ptr %6, align 4
  br label %1642

1628:                                             ; preds = %1619
  %1629 = landingpad { ptr, i32 }
          cleanup
  %1630 = extractvalue { ptr, i32 } %1629, 0
  store ptr %1630, ptr %5, align 8
  %1631 = extractvalue { ptr, i32 } %1629, 1
  store i32 %1631, ptr %6, align 4
  br label %1641

1632:                                             ; preds = %1620
  %1633 = landingpad { ptr, i32 }
          cleanup
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %5, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %6, align 4
  br label %1640

1636:                                             ; preds = %1622
  %1637 = landingpad { ptr, i32 }
          cleanup
  %1638 = extractvalue { ptr, i32 } %1637, 0
  store ptr %1638, ptr %5, align 8
  %1639 = extractvalue { ptr, i32 } %1637, 1
  store i32 %1639, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  br label %1640

1640:                                             ; preds = %1636, %1632
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #8
  br label %1641

1641:                                             ; preds = %1640, %1628
  call void @llvm.lifetime.end.p0(i64 32, ptr %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  br label %1642

1642:                                             ; preds = %1641, %1624
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  br label %1651

1643:                                             ; preds = %1623, %1607
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %168) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %169) #8
  %1644 = invoke noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %1645 unwind label %1653

1645:                                             ; preds = %1643
  %1646 = zext i1 %1644 to i8
  store i8 %1646, ptr %169, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull align 1 dereferenceable(1) %169, ptr noundef null)
          to label %1647 unwind label %1653

1647:                                             ; preds = %1645
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #8
  %1648 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %168)
          to label %1649 unwind label %1657

1649:                                             ; preds = %1647
  br i1 %1648, label %1650, label %1661

1650:                                             ; preds = %1649
  br label %1686

1651:                                             ; preds = %1642, %1614
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #8
  br label %1652

1652:                                             ; preds = %1651, %1610
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #8
  br label %3153

1653:                                             ; preds = %1645, %1643
  %1654 = landingpad { ptr, i32 }
          cleanup
  %1655 = extractvalue { ptr, i32 } %1654, 0
  store ptr %1655, ptr %5, align 8
  %1656 = extractvalue { ptr, i32 } %1654, 1
  store i32 %1656, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #8
  br label %1695

1657:                                             ; preds = %1647
  %1658 = landingpad { ptr, i32 }
          cleanup
  %1659 = extractvalue { ptr, i32 } %1658, 0
  store ptr %1659, ptr %5, align 8
  %1660 = extractvalue { ptr, i32 } %1658, 1
  store i32 %1660, ptr %6, align 4
  br label %1694

1661:                                             ; preds = %1649
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %1662 unwind label %1667

1662:                                             ; preds = %1661
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %172) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %172, ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef @.str.43, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1663 unwind label %1671

1663:                                             ; preds = %1662
  %1664 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %171, i32 noundef 1, ptr noundef @.str.3, i32 noundef 89, ptr noundef %1664)
          to label %1665 unwind label %1675

1665:                                             ; preds = %1663
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %1666 unwind label %1679

1666:                                             ; preds = %1665
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #8
  br label %1686

1667:                                             ; preds = %1661
  %1668 = landingpad { ptr, i32 }
          cleanup
  %1669 = extractvalue { ptr, i32 } %1668, 0
  store ptr %1669, ptr %5, align 8
  %1670 = extractvalue { ptr, i32 } %1668, 1
  store i32 %1670, ptr %6, align 4
  br label %1685

1671:                                             ; preds = %1662
  %1672 = landingpad { ptr, i32 }
          cleanup
  %1673 = extractvalue { ptr, i32 } %1672, 0
  store ptr %1673, ptr %5, align 8
  %1674 = extractvalue { ptr, i32 } %1672, 1
  store i32 %1674, ptr %6, align 4
  br label %1684

1675:                                             ; preds = %1663
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %5, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %6, align 4
  br label %1683

1679:                                             ; preds = %1665
  %1680 = landingpad { ptr, i32 }
          cleanup
  %1681 = extractvalue { ptr, i32 } %1680, 0
  store ptr %1681, ptr %5, align 8
  %1682 = extractvalue { ptr, i32 } %1680, 1
  store i32 %1682, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  br label %1683

1683:                                             ; preds = %1679, %1675
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  br label %1684

1684:                                             ; preds = %1683, %1671
  call void @llvm.lifetime.end.p0(i64 32, ptr %172) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #8
  br label %1685

1685:                                             ; preds = %1684, %1667
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #8
  br label %1694

1686:                                             ; preds = %1666, %1650
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %168) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %173) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #8
  %1687 = invoke noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %1688 unwind label %1696

1688:                                             ; preds = %1686
  %1689 = zext i1 %1687 to i8
  store i8 %1689, ptr %174, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %173, ptr noundef nonnull align 1 dereferenceable(1) %174, ptr noundef null)
          to label %1690 unwind label %1696

1690:                                             ; preds = %1688
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #8
  %1691 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %1692 unwind label %1700

1692:                                             ; preds = %1690
  br i1 %1691, label %1693, label %1704

1693:                                             ; preds = %1692
  br label %1729

1694:                                             ; preds = %1685, %1657
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #8
  br label %1695

1695:                                             ; preds = %1694, %1653
  call void @llvm.lifetime.end.p0(i64 16, ptr %168) #8
  br label %3153

1696:                                             ; preds = %1688, %1686
  %1697 = landingpad { ptr, i32 }
          cleanup
  %1698 = extractvalue { ptr, i32 } %1697, 0
  store ptr %1698, ptr %5, align 8
  %1699 = extractvalue { ptr, i32 } %1697, 1
  store i32 %1699, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #8
  br label %1739

1700:                                             ; preds = %1690
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %5, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %6, align 4
  br label %1738

1704:                                             ; preds = %1692
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1705 unwind label %1710

1705:                                             ; preds = %1704
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %177) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %177, ptr noundef nonnull align 8 dereferenceable(16) %173, ptr noundef @.str.44, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1706 unwind label %1714

1706:                                             ; preds = %1705
  %1707 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %177) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef 1, ptr noundef @.str.3, i32 noundef 90, ptr noundef %1707)
          to label %1708 unwind label %1718

1708:                                             ; preds = %1706
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1709 unwind label %1722

1709:                                             ; preds = %1708
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %177) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #8
  br label %1729

1710:                                             ; preds = %1704
  %1711 = landingpad { ptr, i32 }
          cleanup
  %1712 = extractvalue { ptr, i32 } %1711, 0
  store ptr %1712, ptr %5, align 8
  %1713 = extractvalue { ptr, i32 } %1711, 1
  store i32 %1713, ptr %6, align 4
  br label %1728

1714:                                             ; preds = %1705
  %1715 = landingpad { ptr, i32 }
          cleanup
  %1716 = extractvalue { ptr, i32 } %1715, 0
  store ptr %1716, ptr %5, align 8
  %1717 = extractvalue { ptr, i32 } %1715, 1
  store i32 %1717, ptr %6, align 4
  br label %1727

1718:                                             ; preds = %1706
  %1719 = landingpad { ptr, i32 }
          cleanup
  %1720 = extractvalue { ptr, i32 } %1719, 0
  store ptr %1720, ptr %5, align 8
  %1721 = extractvalue { ptr, i32 } %1719, 1
  store i32 %1721, ptr %6, align 4
  br label %1726

1722:                                             ; preds = %1708
  %1723 = landingpad { ptr, i32 }
          cleanup
  %1724 = extractvalue { ptr, i32 } %1723, 0
  store ptr %1724, ptr %5, align 8
  %1725 = extractvalue { ptr, i32 } %1723, 1
  store i32 %1725, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #8
  br label %1726

1726:                                             ; preds = %1722, %1718
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #8
  br label %1727

1727:                                             ; preds = %1726, %1714
  call void @llvm.lifetime.end.p0(i64 32, ptr %177) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #8
  br label %1728

1728:                                             ; preds = %1727, %1710
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #8
  br label %1738

1729:                                             ; preds = %1709, %1693
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %178) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %180) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %180, i32 noundef 7)
          to label %1730 unwind label %1740

1730:                                             ; preds = %1729
  %1731 = invoke noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16) %180)
          to label %1732 unwind label %1744

1732:                                             ; preds = %1730
  %1733 = zext i1 %1731 to i8
  store i8 %1733, ptr %179, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef nonnull align 1 dereferenceable(1) %179, ptr noundef null)
          to label %1734 unwind label %1744

1734:                                             ; preds = %1732
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #8
  %1735 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %178)
          to label %1736 unwind label %1749

1736:                                             ; preds = %1734
  br i1 %1735, label %1737, label %1753

1737:                                             ; preds = %1736
  br label %1778

1738:                                             ; preds = %1728, %1700
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #8
  br label %1739

1739:                                             ; preds = %1738, %1696
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #8
  br label %3153

1740:                                             ; preds = %1729
  %1741 = landingpad { ptr, i32 }
          cleanup
  %1742 = extractvalue { ptr, i32 } %1741, 0
  store ptr %1742, ptr %5, align 8
  %1743 = extractvalue { ptr, i32 } %1741, 1
  store i32 %1743, ptr %6, align 4
  br label %1748

1744:                                             ; preds = %1732, %1730
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %5, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  br label %1748

1748:                                             ; preds = %1744, %1740
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #8
  br label %1787

1749:                                             ; preds = %1734
  %1750 = landingpad { ptr, i32 }
          cleanup
  %1751 = extractvalue { ptr, i32 } %1750, 0
  store ptr %1751, ptr %5, align 8
  %1752 = extractvalue { ptr, i32 } %1750, 1
  store i32 %1752, ptr %6, align 4
  br label %1786

1753:                                             ; preds = %1736
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %1754 unwind label %1759

1754:                                             ; preds = %1753
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %183) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %183, ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef @.str.45, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1755 unwind label %1763

1755:                                             ; preds = %1754
  %1756 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %183) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %182, i32 noundef 1, ptr noundef @.str.3, i32 noundef 91, ptr noundef %1756)
          to label %1757 unwind label %1767

1757:                                             ; preds = %1755
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %1758 unwind label %1771

1758:                                             ; preds = %1757
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #8
  br label %1778

1759:                                             ; preds = %1753
  %1760 = landingpad { ptr, i32 }
          cleanup
  %1761 = extractvalue { ptr, i32 } %1760, 0
  store ptr %1761, ptr %5, align 8
  %1762 = extractvalue { ptr, i32 } %1760, 1
  store i32 %1762, ptr %6, align 4
  br label %1777

1763:                                             ; preds = %1754
  %1764 = landingpad { ptr, i32 }
          cleanup
  %1765 = extractvalue { ptr, i32 } %1764, 0
  store ptr %1765, ptr %5, align 8
  %1766 = extractvalue { ptr, i32 } %1764, 1
  store i32 %1766, ptr %6, align 4
  br label %1776

1767:                                             ; preds = %1755
  %1768 = landingpad { ptr, i32 }
          cleanup
  %1769 = extractvalue { ptr, i32 } %1768, 0
  store ptr %1769, ptr %5, align 8
  %1770 = extractvalue { ptr, i32 } %1768, 1
  store i32 %1770, ptr %6, align 4
  br label %1775

1771:                                             ; preds = %1757
  %1772 = landingpad { ptr, i32 }
          cleanup
  %1773 = extractvalue { ptr, i32 } %1772, 0
  store ptr %1773, ptr %5, align 8
  %1774 = extractvalue { ptr, i32 } %1772, 1
  store i32 %1774, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #8
  br label %1775

1775:                                             ; preds = %1771, %1767
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #8
  br label %1776

1776:                                             ; preds = %1775, %1763
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  br label %1777

1777:                                             ; preds = %1776, %1759
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #8
  br label %1786

1778:                                             ; preds = %1758, %1737
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %184) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %186) #8
  call void @llvm.memset.p0.i64(ptr align 8 %186, i8 0, i64 16, i1 false)
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %186) #8
  %1779 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %186)
          to label %1780 unwind label %1788

1780:                                             ; preds = %1778
  %1781 = zext i1 %1779 to i8
  store i8 %1781, ptr %185, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef nonnull align 1 dereferenceable(1) %185, ptr noundef null)
          to label %1782 unwind label %1788

1782:                                             ; preds = %1780
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %186) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %186) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #8
  %1783 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %184)
          to label %1784 unwind label %1792

1784:                                             ; preds = %1782
  br i1 %1783, label %1785, label %1796

1785:                                             ; preds = %1784
  br label %1821

1786:                                             ; preds = %1777, %1749
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #8
  br label %1787

1787:                                             ; preds = %1786, %1748
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #8
  br label %3153

1788:                                             ; preds = %1780, %1778
  %1789 = landingpad { ptr, i32 }
          cleanup
  %1790 = extractvalue { ptr, i32 } %1789, 0
  store ptr %1790, ptr %5, align 8
  %1791 = extractvalue { ptr, i32 } %1789, 1
  store i32 %1791, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %186) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %186) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #8
  br label %1831

1792:                                             ; preds = %1782
  %1793 = landingpad { ptr, i32 }
          cleanup
  %1794 = extractvalue { ptr, i32 } %1793, 0
  store ptr %1794, ptr %5, align 8
  %1795 = extractvalue { ptr, i32 } %1793, 1
  store i32 %1795, ptr %6, align 4
  br label %1830

1796:                                             ; preds = %1784
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %1797 unwind label %1802

1797:                                             ; preds = %1796
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %189) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %189, ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef @.str.46, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1798 unwind label %1806

1798:                                             ; preds = %1797
  %1799 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %189) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %188, i32 noundef 1, ptr noundef @.str.3, i32 noundef 93, ptr noundef %1799)
          to label %1800 unwind label %1810

1800:                                             ; preds = %1798
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %1801 unwind label %1814

1801:                                             ; preds = %1800
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %189) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #8
  br label %1821

1802:                                             ; preds = %1796
  %1803 = landingpad { ptr, i32 }
          cleanup
  %1804 = extractvalue { ptr, i32 } %1803, 0
  store ptr %1804, ptr %5, align 8
  %1805 = extractvalue { ptr, i32 } %1803, 1
  store i32 %1805, ptr %6, align 4
  br label %1820

1806:                                             ; preds = %1797
  %1807 = landingpad { ptr, i32 }
          cleanup
  %1808 = extractvalue { ptr, i32 } %1807, 0
  store ptr %1808, ptr %5, align 8
  %1809 = extractvalue { ptr, i32 } %1807, 1
  store i32 %1809, ptr %6, align 4
  br label %1819

1810:                                             ; preds = %1798
  %1811 = landingpad { ptr, i32 }
          cleanup
  %1812 = extractvalue { ptr, i32 } %1811, 0
  store ptr %1812, ptr %5, align 8
  %1813 = extractvalue { ptr, i32 } %1811, 1
  store i32 %1813, ptr %6, align 4
  br label %1818

1814:                                             ; preds = %1800
  %1815 = landingpad { ptr, i32 }
          cleanup
  %1816 = extractvalue { ptr, i32 } %1815, 0
  store ptr %1816, ptr %5, align 8
  %1817 = extractvalue { ptr, i32 } %1815, 1
  store i32 %1817, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  br label %1818

1818:                                             ; preds = %1814, %1810
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #8
  br label %1819

1819:                                             ; preds = %1818, %1806
  call void @llvm.lifetime.end.p0(i64 32, ptr %189) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  br label %1820

1820:                                             ; preds = %1819, %1802
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #8
  br label %1830

1821:                                             ; preds = %1801, %1785
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %190) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %191) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %192) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %193) #8
  call void @llvm.memset.p0.i64(ptr align 8 %193, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %193) #8
  invoke void @_ZN4chen4jsonC1EOSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %192, ptr noundef nonnull align 8 dereferenceable(56) %193)
          to label %1822 unwind label %1832

1822:                                             ; preds = %1821
  %1823 = invoke noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16) %192)
          to label %1824 unwind label %1836

1824:                                             ; preds = %1822
  %1825 = zext i1 %1823 to i8
  store i8 %1825, ptr %191, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef nonnull align 1 dereferenceable(1) %191, ptr noundef null)
          to label %1826 unwind label %1836

1826:                                             ; preds = %1824
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %192) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %193) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #8
  %1827 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %190)
          to label %1828 unwind label %1841

1828:                                             ; preds = %1826
  br i1 %1827, label %1829, label %1845

1829:                                             ; preds = %1828
  br label %1870

1830:                                             ; preds = %1820, %1792
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #8
  br label %1831

1831:                                             ; preds = %1830, %1788
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #8
  br label %3153

1832:                                             ; preds = %1821
  %1833 = landingpad { ptr, i32 }
          cleanup
  %1834 = extractvalue { ptr, i32 } %1833, 0
  store ptr %1834, ptr %5, align 8
  %1835 = extractvalue { ptr, i32 } %1833, 1
  store i32 %1835, ptr %6, align 4
  br label %1840

1836:                                             ; preds = %1824, %1822
  %1837 = landingpad { ptr, i32 }
          cleanup
  %1838 = extractvalue { ptr, i32 } %1837, 0
  store ptr %1838, ptr %5, align 8
  %1839 = extractvalue { ptr, i32 } %1837, 1
  store i32 %1839, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %192) #8
  br label %1840

1840:                                             ; preds = %1836, %1832
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %193) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #8
  br label %1880

1841:                                             ; preds = %1826
  %1842 = landingpad { ptr, i32 }
          cleanup
  %1843 = extractvalue { ptr, i32 } %1842, 0
  store ptr %1843, ptr %5, align 8
  %1844 = extractvalue { ptr, i32 } %1842, 1
  store i32 %1844, ptr %6, align 4
  br label %1879

1845:                                             ; preds = %1828
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %1846 unwind label %1851

1846:                                             ; preds = %1845
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %196) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %196, ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef @.str.47, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1847 unwind label %1855

1847:                                             ; preds = %1846
  %1848 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %195, i32 noundef 1, ptr noundef @.str.3, i32 noundef 94, ptr noundef %1848)
          to label %1849 unwind label %1859

1849:                                             ; preds = %1847
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %1850 unwind label %1863

1850:                                             ; preds = %1849
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %196) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %1870

1851:                                             ; preds = %1845
  %1852 = landingpad { ptr, i32 }
          cleanup
  %1853 = extractvalue { ptr, i32 } %1852, 0
  store ptr %1853, ptr %5, align 8
  %1854 = extractvalue { ptr, i32 } %1852, 1
  store i32 %1854, ptr %6, align 4
  br label %1869

1855:                                             ; preds = %1846
  %1856 = landingpad { ptr, i32 }
          cleanup
  %1857 = extractvalue { ptr, i32 } %1856, 0
  store ptr %1857, ptr %5, align 8
  %1858 = extractvalue { ptr, i32 } %1856, 1
  store i32 %1858, ptr %6, align 4
  br label %1868

1859:                                             ; preds = %1847
  %1860 = landingpad { ptr, i32 }
          cleanup
  %1861 = extractvalue { ptr, i32 } %1860, 0
  store ptr %1861, ptr %5, align 8
  %1862 = extractvalue { ptr, i32 } %1860, 1
  store i32 %1862, ptr %6, align 4
  br label %1867

1863:                                             ; preds = %1849
  %1864 = landingpad { ptr, i32 }
          cleanup
  %1865 = extractvalue { ptr, i32 } %1864, 0
  store ptr %1865, ptr %5, align 8
  %1866 = extractvalue { ptr, i32 } %1864, 1
  store i32 %1866, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  br label %1867

1867:                                             ; preds = %1863, %1859
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  br label %1868

1868:                                             ; preds = %1867, %1855
  call void @llvm.lifetime.end.p0(i64 32, ptr %196) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  br label %1869

1869:                                             ; preds = %1868, %1851
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %1879

1870:                                             ; preds = %1850, %1829
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %197) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %198) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %199) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %200) #8
  call void @llvm.memset.p0.i64(ptr align 8 %200, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #8
  invoke void @_ZN4chen4jsonC1EOSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %199, ptr noundef nonnull align 8 dereferenceable(24) %200)
          to label %1871 unwind label %1881

1871:                                             ; preds = %1870
  %1872 = invoke noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %199)
          to label %1873 unwind label %1885

1873:                                             ; preds = %1871
  %1874 = zext i1 %1872 to i8
  store i8 %1874, ptr %198, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %197, ptr noundef nonnull align 1 dereferenceable(1) %198, ptr noundef null)
          to label %1875 unwind label %1885

1875:                                             ; preds = %1873
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %200) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #8
  %1876 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %197)
          to label %1877 unwind label %1890

1877:                                             ; preds = %1875
  br i1 %1876, label %1878, label %1894

1878:                                             ; preds = %1877
  br label %1919

1879:                                             ; preds = %1869, %1841
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %190) #8
  br label %1880

1880:                                             ; preds = %1879, %1840
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #8
  br label %3153

1881:                                             ; preds = %1870
  %1882 = landingpad { ptr, i32 }
          cleanup
  %1883 = extractvalue { ptr, i32 } %1882, 0
  store ptr %1883, ptr %5, align 8
  %1884 = extractvalue { ptr, i32 } %1882, 1
  store i32 %1884, ptr %6, align 4
  br label %1889

1885:                                             ; preds = %1873, %1871
  %1886 = landingpad { ptr, i32 }
          cleanup
  %1887 = extractvalue { ptr, i32 } %1886, 0
  store ptr %1887, ptr %5, align 8
  %1888 = extractvalue { ptr, i32 } %1886, 1
  store i32 %1888, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #8
  br label %1889

1889:                                             ; preds = %1885, %1881
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %200) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #8
  br label %1929

1890:                                             ; preds = %1875
  %1891 = landingpad { ptr, i32 }
          cleanup
  %1892 = extractvalue { ptr, i32 } %1891, 0
  store ptr %1892, ptr %5, align 8
  %1893 = extractvalue { ptr, i32 } %1891, 1
  store i32 %1893, ptr %6, align 4
  br label %1928

1894:                                             ; preds = %1877
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1895 unwind label %1900

1895:                                             ; preds = %1894
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %203) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %203, ptr noundef nonnull align 8 dereferenceable(16) %197, ptr noundef @.str.48, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1896 unwind label %1904

1896:                                             ; preds = %1895
  %1897 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %203) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef 1, ptr noundef @.str.3, i32 noundef 95, ptr noundef %1897)
          to label %1898 unwind label %1908

1898:                                             ; preds = %1896
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1899 unwind label %1912

1899:                                             ; preds = %1898
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #8
  br label %1919

1900:                                             ; preds = %1894
  %1901 = landingpad { ptr, i32 }
          cleanup
  %1902 = extractvalue { ptr, i32 } %1901, 0
  store ptr %1902, ptr %5, align 8
  %1903 = extractvalue { ptr, i32 } %1901, 1
  store i32 %1903, ptr %6, align 4
  br label %1918

1904:                                             ; preds = %1895
  %1905 = landingpad { ptr, i32 }
          cleanup
  %1906 = extractvalue { ptr, i32 } %1905, 0
  store ptr %1906, ptr %5, align 8
  %1907 = extractvalue { ptr, i32 } %1905, 1
  store i32 %1907, ptr %6, align 4
  br label %1917

1908:                                             ; preds = %1896
  %1909 = landingpad { ptr, i32 }
          cleanup
  %1910 = extractvalue { ptr, i32 } %1909, 0
  store ptr %1910, ptr %5, align 8
  %1911 = extractvalue { ptr, i32 } %1909, 1
  store i32 %1911, ptr %6, align 4
  br label %1916

1912:                                             ; preds = %1898
  %1913 = landingpad { ptr, i32 }
          cleanup
  %1914 = extractvalue { ptr, i32 } %1913, 0
  store ptr %1914, ptr %5, align 8
  %1915 = extractvalue { ptr, i32 } %1913, 1
  store i32 %1915, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #8
  br label %1916

1916:                                             ; preds = %1912, %1908
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #8
  br label %1917

1917:                                             ; preds = %1916, %1904
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #8
  br label %1918

1918:                                             ; preds = %1917, %1900
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #8
  br label %1928

1919:                                             ; preds = %1899, %1878
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %204) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %205) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %206) #8
  invoke void @_ZN4chen4jsonC1Ei(ptr noundef nonnull align 8 dereferenceable(16) %206, i32 noundef 115)
          to label %1920 unwind label %1930

1920:                                             ; preds = %1919
  %1921 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %206)
          to label %1922 unwind label %1934

1922:                                             ; preds = %1920
  %1923 = zext i1 %1921 to i8
  store i8 %1923, ptr %205, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull align 1 dereferenceable(1) %205, ptr noundef null)
          to label %1924 unwind label %1934

1924:                                             ; preds = %1922
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %206) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #8
  %1925 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
          to label %1926 unwind label %1939

1926:                                             ; preds = %1924
  br i1 %1925, label %1927, label %1943

1927:                                             ; preds = %1926
  br label %1968

1928:                                             ; preds = %1918, %1890
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #8
  br label %1929

1929:                                             ; preds = %1928, %1889
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #8
  br label %3153

1930:                                             ; preds = %1919
  %1931 = landingpad { ptr, i32 }
          cleanup
  %1932 = extractvalue { ptr, i32 } %1931, 0
  store ptr %1932, ptr %5, align 8
  %1933 = extractvalue { ptr, i32 } %1931, 1
  store i32 %1933, ptr %6, align 4
  br label %1938

1934:                                             ; preds = %1922, %1920
  %1935 = landingpad { ptr, i32 }
          cleanup
  %1936 = extractvalue { ptr, i32 } %1935, 0
  store ptr %1936, ptr %5, align 8
  %1937 = extractvalue { ptr, i32 } %1935, 1
  store i32 %1937, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %206) #8
  br label %1938

1938:                                             ; preds = %1934, %1930
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #8
  br label %1978

1939:                                             ; preds = %1924
  %1940 = landingpad { ptr, i32 }
          cleanup
  %1941 = extractvalue { ptr, i32 } %1940, 0
  store ptr %1941, ptr %5, align 8
  %1942 = extractvalue { ptr, i32 } %1940, 1
  store i32 %1942, ptr %6, align 4
  br label %1977

1943:                                             ; preds = %1926
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1944 unwind label %1949

1944:                                             ; preds = %1943
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %209) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %209, ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef @.str.49, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1945 unwind label %1953

1945:                                             ; preds = %1944
  %1946 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %209) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %208, i32 noundef 1, ptr noundef @.str.3, i32 noundef 96, ptr noundef %1946)
          to label %1947 unwind label %1957

1947:                                             ; preds = %1945
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1948 unwind label %1961

1948:                                             ; preds = %1947
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %209) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #8
  br label %1968

1949:                                             ; preds = %1943
  %1950 = landingpad { ptr, i32 }
          cleanup
  %1951 = extractvalue { ptr, i32 } %1950, 0
  store ptr %1951, ptr %5, align 8
  %1952 = extractvalue { ptr, i32 } %1950, 1
  store i32 %1952, ptr %6, align 4
  br label %1967

1953:                                             ; preds = %1944
  %1954 = landingpad { ptr, i32 }
          cleanup
  %1955 = extractvalue { ptr, i32 } %1954, 0
  store ptr %1955, ptr %5, align 8
  %1956 = extractvalue { ptr, i32 } %1954, 1
  store i32 %1956, ptr %6, align 4
  br label %1966

1957:                                             ; preds = %1945
  %1958 = landingpad { ptr, i32 }
          cleanup
  %1959 = extractvalue { ptr, i32 } %1958, 0
  store ptr %1959, ptr %5, align 8
  %1960 = extractvalue { ptr, i32 } %1958, 1
  store i32 %1960, ptr %6, align 4
  br label %1965

1961:                                             ; preds = %1947
  %1962 = landingpad { ptr, i32 }
          cleanup
  %1963 = extractvalue { ptr, i32 } %1962, 0
  store ptr %1963, ptr %5, align 8
  %1964 = extractvalue { ptr, i32 } %1962, 1
  store i32 %1964, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #8
  br label %1965

1965:                                             ; preds = %1961, %1957
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #8
  br label %1966

1966:                                             ; preds = %1965, %1953
  call void @llvm.lifetime.end.p0(i64 32, ptr %209) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  br label %1967

1967:                                             ; preds = %1966, %1949
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #8
  br label %1977

1968:                                             ; preds = %1948, %1927
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %210) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %211) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %212) #8
  invoke void @_ZN4chen4jsonC1Ej(ptr noundef nonnull align 8 dereferenceable(16) %212, i32 noundef 115)
          to label %1969 unwind label %1979

1969:                                             ; preds = %1968
  %1970 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %212)
          to label %1971 unwind label %1983

1971:                                             ; preds = %1969
  %1972 = zext i1 %1970 to i8
  store i8 %1972, ptr %211, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull align 1 dereferenceable(1) %211, ptr noundef null)
          to label %1973 unwind label %1983

1973:                                             ; preds = %1971
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %212) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #8
  %1974 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %1975 unwind label %1988

1975:                                             ; preds = %1973
  br i1 %1974, label %1976, label %1992

1976:                                             ; preds = %1975
  br label %2017

1977:                                             ; preds = %1967, %1939
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #8
  br label %1978

1978:                                             ; preds = %1977, %1938
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #8
  br label %3153

1979:                                             ; preds = %1968
  %1980 = landingpad { ptr, i32 }
          cleanup
  %1981 = extractvalue { ptr, i32 } %1980, 0
  store ptr %1981, ptr %5, align 8
  %1982 = extractvalue { ptr, i32 } %1980, 1
  store i32 %1982, ptr %6, align 4
  br label %1987

1983:                                             ; preds = %1971, %1969
  %1984 = landingpad { ptr, i32 }
          cleanup
  %1985 = extractvalue { ptr, i32 } %1984, 0
  store ptr %1985, ptr %5, align 8
  %1986 = extractvalue { ptr, i32 } %1984, 1
  store i32 %1986, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %212) #8
  br label %1987

1987:                                             ; preds = %1983, %1979
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %211) #8
  br label %2027

1988:                                             ; preds = %1973
  %1989 = landingpad { ptr, i32 }
          cleanup
  %1990 = extractvalue { ptr, i32 } %1989, 0
  store ptr %1990, ptr %5, align 8
  %1991 = extractvalue { ptr, i32 } %1989, 1
  store i32 %1991, ptr %6, align 4
  br label %2026

1992:                                             ; preds = %1975
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %1993 unwind label %1998

1993:                                             ; preds = %1992
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %215) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %215, ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef @.str.50, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %1994 unwind label %2002

1994:                                             ; preds = %1993
  %1995 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %215) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %214, i32 noundef 1, ptr noundef @.str.3, i32 noundef 97, ptr noundef %1995)
          to label %1996 unwind label %2006

1996:                                             ; preds = %1994
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %1997 unwind label %2010

1997:                                             ; preds = %1996
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %215) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #8
  br label %2017

1998:                                             ; preds = %1992
  %1999 = landingpad { ptr, i32 }
          cleanup
  %2000 = extractvalue { ptr, i32 } %1999, 0
  store ptr %2000, ptr %5, align 8
  %2001 = extractvalue { ptr, i32 } %1999, 1
  store i32 %2001, ptr %6, align 4
  br label %2016

2002:                                             ; preds = %1993
  %2003 = landingpad { ptr, i32 }
          cleanup
  %2004 = extractvalue { ptr, i32 } %2003, 0
  store ptr %2004, ptr %5, align 8
  %2005 = extractvalue { ptr, i32 } %2003, 1
  store i32 %2005, ptr %6, align 4
  br label %2015

2006:                                             ; preds = %1994
  %2007 = landingpad { ptr, i32 }
          cleanup
  %2008 = extractvalue { ptr, i32 } %2007, 0
  store ptr %2008, ptr %5, align 8
  %2009 = extractvalue { ptr, i32 } %2007, 1
  store i32 %2009, ptr %6, align 4
  br label %2014

2010:                                             ; preds = %1996
  %2011 = landingpad { ptr, i32 }
          cleanup
  %2012 = extractvalue { ptr, i32 } %2011, 0
  store ptr %2012, ptr %5, align 8
  %2013 = extractvalue { ptr, i32 } %2011, 1
  store i32 %2013, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  br label %2014

2014:                                             ; preds = %2010, %2006
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #8
  br label %2015

2015:                                             ; preds = %2014, %2002
  call void @llvm.lifetime.end.p0(i64 32, ptr %215) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #8
  br label %2016

2016:                                             ; preds = %2015, %1998
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #8
  br label %2026

2017:                                             ; preds = %1997, %1976
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %210) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %216) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %217) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %218) #8
  invoke void @_ZN4chen4jsonC1Ed(ptr noundef nonnull align 8 dereferenceable(16) %218, double noundef 0x3FE6E14D1A6D9D1A)
          to label %2018 unwind label %2028

2018:                                             ; preds = %2017
  %2019 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %218)
          to label %2020 unwind label %2032

2020:                                             ; preds = %2018
  %2021 = zext i1 %2019 to i8
  store i8 %2021, ptr %217, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull align 1 dereferenceable(1) %217, ptr noundef null)
          to label %2022 unwind label %2032

2022:                                             ; preds = %2020
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %218) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %218) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %217) #8
  %2023 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %216)
          to label %2024 unwind label %2037

2024:                                             ; preds = %2022
  br i1 %2023, label %2025, label %2041

2025:                                             ; preds = %2024
  br label %2066

2026:                                             ; preds = %2016, %1988
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #8
  br label %2027

2027:                                             ; preds = %2026, %1987
  call void @llvm.lifetime.end.p0(i64 16, ptr %210) #8
  br label %3153

2028:                                             ; preds = %2017
  %2029 = landingpad { ptr, i32 }
          cleanup
  %2030 = extractvalue { ptr, i32 } %2029, 0
  store ptr %2030, ptr %5, align 8
  %2031 = extractvalue { ptr, i32 } %2029, 1
  store i32 %2031, ptr %6, align 4
  br label %2036

2032:                                             ; preds = %2020, %2018
  %2033 = landingpad { ptr, i32 }
          cleanup
  %2034 = extractvalue { ptr, i32 } %2033, 0
  store ptr %2034, ptr %5, align 8
  %2035 = extractvalue { ptr, i32 } %2033, 1
  store i32 %2035, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %218) #8
  br label %2036

2036:                                             ; preds = %2032, %2028
  call void @llvm.lifetime.end.p0(i64 16, ptr %218) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %217) #8
  br label %2076

2037:                                             ; preds = %2022
  %2038 = landingpad { ptr, i32 }
          cleanup
  %2039 = extractvalue { ptr, i32 } %2038, 0
  store ptr %2039, ptr %5, align 8
  %2040 = extractvalue { ptr, i32 } %2038, 1
  store i32 %2040, ptr %6, align 4
  br label %2075

2041:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %2042 unwind label %2047

2042:                                             ; preds = %2041
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %221) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %221, ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef @.str.51, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2043 unwind label %2051

2043:                                             ; preds = %2042
  %2044 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %220, i32 noundef 1, ptr noundef @.str.3, i32 noundef 98, ptr noundef %2044)
          to label %2045 unwind label %2055

2045:                                             ; preds = %2043
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %2046 unwind label %2059

2046:                                             ; preds = %2045
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #8
  br label %2066

2047:                                             ; preds = %2041
  %2048 = landingpad { ptr, i32 }
          cleanup
  %2049 = extractvalue { ptr, i32 } %2048, 0
  store ptr %2049, ptr %5, align 8
  %2050 = extractvalue { ptr, i32 } %2048, 1
  store i32 %2050, ptr %6, align 4
  br label %2065

2051:                                             ; preds = %2042
  %2052 = landingpad { ptr, i32 }
          cleanup
  %2053 = extractvalue { ptr, i32 } %2052, 0
  store ptr %2053, ptr %5, align 8
  %2054 = extractvalue { ptr, i32 } %2052, 1
  store i32 %2054, ptr %6, align 4
  br label %2064

2055:                                             ; preds = %2043
  %2056 = landingpad { ptr, i32 }
          cleanup
  %2057 = extractvalue { ptr, i32 } %2056, 0
  store ptr %2057, ptr %5, align 8
  %2058 = extractvalue { ptr, i32 } %2056, 1
  store i32 %2058, ptr %6, align 4
  br label %2063

2059:                                             ; preds = %2045
  %2060 = landingpad { ptr, i32 }
          cleanup
  %2061 = extractvalue { ptr, i32 } %2060, 0
  store ptr %2061, ptr %5, align 8
  %2062 = extractvalue { ptr, i32 } %2060, 1
  store i32 %2062, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #8
  br label %2063

2063:                                             ; preds = %2059, %2055
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  br label %2064

2064:                                             ; preds = %2063, %2051
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #8
  br label %2065

2065:                                             ; preds = %2064, %2047
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #8
  br label %2075

2066:                                             ; preds = %2046, %2025
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %223) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %224) #8
  invoke void @_ZN4chen4jsonC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %224, ptr noundef @.str.52)
          to label %2067 unwind label %2077

2067:                                             ; preds = %2066
  %2068 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %224)
          to label %2069 unwind label %2081

2069:                                             ; preds = %2067
  %2070 = zext i1 %2068 to i8
  store i8 %2070, ptr %223, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef nonnull align 1 dereferenceable(1) %223, ptr noundef null)
          to label %2071 unwind label %2081

2071:                                             ; preds = %2069
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %224) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #8
  %2072 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %222)
          to label %2073 unwind label %2086

2073:                                             ; preds = %2071
  br i1 %2072, label %2074, label %2090

2074:                                             ; preds = %2073
  br label %2115

2075:                                             ; preds = %2065, %2037
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #8
  br label %2076

2076:                                             ; preds = %2075, %2036
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #8
  br label %3153

2077:                                             ; preds = %2066
  %2078 = landingpad { ptr, i32 }
          cleanup
  %2079 = extractvalue { ptr, i32 } %2078, 0
  store ptr %2079, ptr %5, align 8
  %2080 = extractvalue { ptr, i32 } %2078, 1
  store i32 %2080, ptr %6, align 4
  br label %2085

2081:                                             ; preds = %2069, %2067
  %2082 = landingpad { ptr, i32 }
          cleanup
  %2083 = extractvalue { ptr, i32 } %2082, 0
  store ptr %2083, ptr %5, align 8
  %2084 = extractvalue { ptr, i32 } %2082, 1
  store i32 %2084, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %224) #8
  br label %2085

2085:                                             ; preds = %2081, %2077
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #8
  br label %2126

2086:                                             ; preds = %2071
  %2087 = landingpad { ptr, i32 }
          cleanup
  %2088 = extractvalue { ptr, i32 } %2087, 0
  store ptr %2088, ptr %5, align 8
  %2089 = extractvalue { ptr, i32 } %2087, 1
  store i32 %2089, ptr %6, align 4
  br label %2125

2090:                                             ; preds = %2073
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %2091 unwind label %2096

2091:                                             ; preds = %2090
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %227) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %227, ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef @.str.53, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2092 unwind label %2100

2092:                                             ; preds = %2091
  %2093 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %227) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %226, i32 noundef 1, ptr noundef @.str.3, i32 noundef 99, ptr noundef %2093)
          to label %2094 unwind label %2104

2094:                                             ; preds = %2092
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %2095 unwind label %2108

2095:                                             ; preds = %2094
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %227) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #8
  br label %2115

2096:                                             ; preds = %2090
  %2097 = landingpad { ptr, i32 }
          cleanup
  %2098 = extractvalue { ptr, i32 } %2097, 0
  store ptr %2098, ptr %5, align 8
  %2099 = extractvalue { ptr, i32 } %2097, 1
  store i32 %2099, ptr %6, align 4
  br label %2114

2100:                                             ; preds = %2091
  %2101 = landingpad { ptr, i32 }
          cleanup
  %2102 = extractvalue { ptr, i32 } %2101, 0
  store ptr %2102, ptr %5, align 8
  %2103 = extractvalue { ptr, i32 } %2101, 1
  store i32 %2103, ptr %6, align 4
  br label %2113

2104:                                             ; preds = %2092
  %2105 = landingpad { ptr, i32 }
          cleanup
  %2106 = extractvalue { ptr, i32 } %2105, 0
  store ptr %2106, ptr %5, align 8
  %2107 = extractvalue { ptr, i32 } %2105, 1
  store i32 %2107, ptr %6, align 4
  br label %2112

2108:                                             ; preds = %2094
  %2109 = landingpad { ptr, i32 }
          cleanup
  %2110 = extractvalue { ptr, i32 } %2109, 0
  store ptr %2110, ptr %5, align 8
  %2111 = extractvalue { ptr, i32 } %2109, 1
  store i32 %2111, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #8
  br label %2112

2112:                                             ; preds = %2108, %2104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #8
  br label %2113

2113:                                             ; preds = %2112, %2100
  call void @llvm.lifetime.end.p0(i64 32, ptr %227) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #8
  br label %2114

2114:                                             ; preds = %2113, %2096
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #8
  br label %2125

2115:                                             ; preds = %2095, %2074
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %228) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %230) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %232) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef @.str.52, ptr noundef nonnull align 1 dereferenceable(1) %232)
          to label %2116 unwind label %2127

2116:                                             ; preds = %2115
  invoke void @_ZN4chen4jsonC1EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %230, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %2117 unwind label %2131

2117:                                             ; preds = %2116
  %2118 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %230)
          to label %2119 unwind label %2135

2119:                                             ; preds = %2117
  %2120 = zext i1 %2118 to i8
  store i8 %2120, ptr %229, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %228, ptr noundef nonnull align 1 dereferenceable(1) %229, ptr noundef null)
          to label %2121 unwind label %2135

2121:                                             ; preds = %2119
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %230) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #8
  %2122 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %228)
          to label %2123 unwind label %2141

2123:                                             ; preds = %2121
  br i1 %2122, label %2124, label %2145

2124:                                             ; preds = %2123
  br label %2170

2125:                                             ; preds = %2114, %2086
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #8
  br label %2126

2126:                                             ; preds = %2125, %2085
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #8
  br label %3153

2127:                                             ; preds = %2115
  %2128 = landingpad { ptr, i32 }
          cleanup
  %2129 = extractvalue { ptr, i32 } %2128, 0
  store ptr %2129, ptr %5, align 8
  %2130 = extractvalue { ptr, i32 } %2128, 1
  store i32 %2130, ptr %6, align 4
  br label %2140

2131:                                             ; preds = %2116
  %2132 = landingpad { ptr, i32 }
          cleanup
  %2133 = extractvalue { ptr, i32 } %2132, 0
  store ptr %2133, ptr %5, align 8
  %2134 = extractvalue { ptr, i32 } %2132, 1
  store i32 %2134, ptr %6, align 4
  br label %2139

2135:                                             ; preds = %2119, %2117
  %2136 = landingpad { ptr, i32 }
          cleanup
  %2137 = extractvalue { ptr, i32 } %2136, 0
  store ptr %2137, ptr %5, align 8
  %2138 = extractvalue { ptr, i32 } %2136, 1
  store i32 %2138, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %230) #8
  br label %2139

2139:                                             ; preds = %2135, %2131
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #8
  br label %2140

2140:                                             ; preds = %2139, %2127
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #8
  br label %2180

2141:                                             ; preds = %2121
  %2142 = landingpad { ptr, i32 }
          cleanup
  %2143 = extractvalue { ptr, i32 } %2142, 0
  store ptr %2143, ptr %5, align 8
  %2144 = extractvalue { ptr, i32 } %2142, 1
  store i32 %2144, ptr %6, align 4
  br label %2179

2145:                                             ; preds = %2123
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2146 unwind label %2151

2146:                                             ; preds = %2145
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %235) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %235, ptr noundef nonnull align 8 dereferenceable(16) %228, ptr noundef @.str.54, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2147 unwind label %2155

2147:                                             ; preds = %2146
  %2148 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %235) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %234, i32 noundef 1, ptr noundef @.str.3, i32 noundef 100, ptr noundef %2148)
          to label %2149 unwind label %2159

2149:                                             ; preds = %2147
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2150 unwind label %2163

2150:                                             ; preds = %2149
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %235) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #8
  br label %2170

2151:                                             ; preds = %2145
  %2152 = landingpad { ptr, i32 }
          cleanup
  %2153 = extractvalue { ptr, i32 } %2152, 0
  store ptr %2153, ptr %5, align 8
  %2154 = extractvalue { ptr, i32 } %2152, 1
  store i32 %2154, ptr %6, align 4
  br label %2169

2155:                                             ; preds = %2146
  %2156 = landingpad { ptr, i32 }
          cleanup
  %2157 = extractvalue { ptr, i32 } %2156, 0
  store ptr %2157, ptr %5, align 8
  %2158 = extractvalue { ptr, i32 } %2156, 1
  store i32 %2158, ptr %6, align 4
  br label %2168

2159:                                             ; preds = %2147
  %2160 = landingpad { ptr, i32 }
          cleanup
  %2161 = extractvalue { ptr, i32 } %2160, 0
  store ptr %2161, ptr %5, align 8
  %2162 = extractvalue { ptr, i32 } %2160, 1
  store i32 %2162, ptr %6, align 4
  br label %2167

2163:                                             ; preds = %2149
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %5, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #8
  br label %2167

2167:                                             ; preds = %2163, %2159
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #8
  br label %2168

2168:                                             ; preds = %2167, %2155
  call void @llvm.lifetime.end.p0(i64 32, ptr %235) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #8
  br label %2169

2169:                                             ; preds = %2168, %2151
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #8
  br label %2179

2170:                                             ; preds = %2150, %2124
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %228) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %236) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %237) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %238) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %238, i1 noundef zeroext true)
          to label %2171 unwind label %2181

2171:                                             ; preds = %2170
  %2172 = invoke noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16) %238)
          to label %2173 unwind label %2185

2173:                                             ; preds = %2171
  %2174 = zext i1 %2172 to i8
  store i8 %2174, ptr %237, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef nonnull align 1 dereferenceable(1) %237, ptr noundef null)
          to label %2175 unwind label %2185

2175:                                             ; preds = %2173
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %237) #8
  %2176 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %236)
          to label %2177 unwind label %2190

2177:                                             ; preds = %2175
  br i1 %2176, label %2178, label %2194

2178:                                             ; preds = %2177
  br label %2219

2179:                                             ; preds = %2169, %2141
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #8
  br label %2180

2180:                                             ; preds = %2179, %2140
  call void @llvm.lifetime.end.p0(i64 16, ptr %228) #8
  br label %3153

2181:                                             ; preds = %2170
  %2182 = landingpad { ptr, i32 }
          cleanup
  %2183 = extractvalue { ptr, i32 } %2182, 0
  store ptr %2183, ptr %5, align 8
  %2184 = extractvalue { ptr, i32 } %2182, 1
  store i32 %2184, ptr %6, align 4
  br label %2189

2185:                                             ; preds = %2173, %2171
  %2186 = landingpad { ptr, i32 }
          cleanup
  %2187 = extractvalue { ptr, i32 } %2186, 0
  store ptr %2187, ptr %5, align 8
  %2188 = extractvalue { ptr, i32 } %2186, 1
  store i32 %2188, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #8
  br label %2189

2189:                                             ; preds = %2185, %2181
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %237) #8
  br label %2229

2190:                                             ; preds = %2175
  %2191 = landingpad { ptr, i32 }
          cleanup
  %2192 = extractvalue { ptr, i32 } %2191, 0
  store ptr %2192, ptr %5, align 8
  %2193 = extractvalue { ptr, i32 } %2191, 1
  store i32 %2193, ptr %6, align 4
  br label %2228

2194:                                             ; preds = %2177
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %2195 unwind label %2200

2195:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %241) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %241, ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef @.str.55, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2196 unwind label %2204

2196:                                             ; preds = %2195
  %2197 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %241) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %240, i32 noundef 1, ptr noundef @.str.3, i32 noundef 101, ptr noundef %2197)
          to label %2198 unwind label %2208

2198:                                             ; preds = %2196
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %2199 unwind label %2212

2199:                                             ; preds = %2198
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #8
  br label %2219

2200:                                             ; preds = %2194
  %2201 = landingpad { ptr, i32 }
          cleanup
  %2202 = extractvalue { ptr, i32 } %2201, 0
  store ptr %2202, ptr %5, align 8
  %2203 = extractvalue { ptr, i32 } %2201, 1
  store i32 %2203, ptr %6, align 4
  br label %2218

2204:                                             ; preds = %2195
  %2205 = landingpad { ptr, i32 }
          cleanup
  %2206 = extractvalue { ptr, i32 } %2205, 0
  store ptr %2206, ptr %5, align 8
  %2207 = extractvalue { ptr, i32 } %2205, 1
  store i32 %2207, ptr %6, align 4
  br label %2217

2208:                                             ; preds = %2196
  %2209 = landingpad { ptr, i32 }
          cleanup
  %2210 = extractvalue { ptr, i32 } %2209, 0
  store ptr %2210, ptr %5, align 8
  %2211 = extractvalue { ptr, i32 } %2209, 1
  store i32 %2211, ptr %6, align 4
  br label %2216

2212:                                             ; preds = %2198
  %2213 = landingpad { ptr, i32 }
          cleanup
  %2214 = extractvalue { ptr, i32 } %2213, 0
  store ptr %2214, ptr %5, align 8
  %2215 = extractvalue { ptr, i32 } %2213, 1
  store i32 %2215, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #8
  br label %2216

2216:                                             ; preds = %2212, %2208
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #8
  br label %2217

2217:                                             ; preds = %2216, %2204
  call void @llvm.lifetime.end.p0(i64 32, ptr %241) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #8
  br label %2218

2218:                                             ; preds = %2217, %2200
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #8
  br label %2228

2219:                                             ; preds = %2199, %2178
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %236) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %242) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %243) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %244) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %244, i1 noundef zeroext false)
          to label %2220 unwind label %2230

2220:                                             ; preds = %2219
  %2221 = invoke noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16) %244)
          to label %2222 unwind label %2234

2222:                                             ; preds = %2220
  %2223 = zext i1 %2221 to i8
  store i8 %2223, ptr %243, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %242, ptr noundef nonnull align 1 dereferenceable(1) %243, ptr noundef null)
          to label %2224 unwind label %2234

2224:                                             ; preds = %2222
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %244) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %244) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #8
  %2225 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %242)
          to label %2226 unwind label %2239

2226:                                             ; preds = %2224
  br i1 %2225, label %2227, label %2243

2227:                                             ; preds = %2226
  br label %2268

2228:                                             ; preds = %2218, %2190
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #8
  br label %2229

2229:                                             ; preds = %2228, %2189
  call void @llvm.lifetime.end.p0(i64 16, ptr %236) #8
  br label %3153

2230:                                             ; preds = %2219
  %2231 = landingpad { ptr, i32 }
          cleanup
  %2232 = extractvalue { ptr, i32 } %2231, 0
  store ptr %2232, ptr %5, align 8
  %2233 = extractvalue { ptr, i32 } %2231, 1
  store i32 %2233, ptr %6, align 4
  br label %2238

2234:                                             ; preds = %2222, %2220
  %2235 = landingpad { ptr, i32 }
          cleanup
  %2236 = extractvalue { ptr, i32 } %2235, 0
  store ptr %2236, ptr %5, align 8
  %2237 = extractvalue { ptr, i32 } %2235, 1
  store i32 %2237, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %244) #8
  br label %2238

2238:                                             ; preds = %2234, %2230
  call void @llvm.lifetime.end.p0(i64 16, ptr %244) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %243) #8
  br label %2278

2239:                                             ; preds = %2224
  %2240 = landingpad { ptr, i32 }
          cleanup
  %2241 = extractvalue { ptr, i32 } %2240, 0
  store ptr %2241, ptr %5, align 8
  %2242 = extractvalue { ptr, i32 } %2240, 1
  store i32 %2242, ptr %6, align 4
  br label %2277

2243:                                             ; preds = %2226
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %2244 unwind label %2249

2244:                                             ; preds = %2243
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %247) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %247, ptr noundef nonnull align 8 dereferenceable(16) %242, ptr noundef @.str.56, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2245 unwind label %2253

2245:                                             ; preds = %2244
  %2246 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %247) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %246, i32 noundef 1, ptr noundef @.str.3, i32 noundef 102, ptr noundef %2246)
          to label %2247 unwind label %2257

2247:                                             ; preds = %2245
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %2248 unwind label %2261

2248:                                             ; preds = %2247
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %247) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #8
  br label %2268

2249:                                             ; preds = %2243
  %2250 = landingpad { ptr, i32 }
          cleanup
  %2251 = extractvalue { ptr, i32 } %2250, 0
  store ptr %2251, ptr %5, align 8
  %2252 = extractvalue { ptr, i32 } %2250, 1
  store i32 %2252, ptr %6, align 4
  br label %2267

2253:                                             ; preds = %2244
  %2254 = landingpad { ptr, i32 }
          cleanup
  %2255 = extractvalue { ptr, i32 } %2254, 0
  store ptr %2255, ptr %5, align 8
  %2256 = extractvalue { ptr, i32 } %2254, 1
  store i32 %2256, ptr %6, align 4
  br label %2266

2257:                                             ; preds = %2245
  %2258 = landingpad { ptr, i32 }
          cleanup
  %2259 = extractvalue { ptr, i32 } %2258, 0
  store ptr %2259, ptr %5, align 8
  %2260 = extractvalue { ptr, i32 } %2258, 1
  store i32 %2260, ptr %6, align 4
  br label %2265

2261:                                             ; preds = %2247
  %2262 = landingpad { ptr, i32 }
          cleanup
  %2263 = extractvalue { ptr, i32 } %2262, 0
  store ptr %2263, ptr %5, align 8
  %2264 = extractvalue { ptr, i32 } %2262, 1
  store i32 %2264, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #8
  br label %2265

2265:                                             ; preds = %2261, %2257
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #8
  br label %2266

2266:                                             ; preds = %2265, %2253
  call void @llvm.lifetime.end.p0(i64 32, ptr %247) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #8
  br label %2267

2267:                                             ; preds = %2266, %2249
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #8
  br label %2277

2268:                                             ; preds = %2248, %2227
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %242) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %248) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %249) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %250) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %250, i1 noundef zeroext true)
          to label %2269 unwind label %2279

2269:                                             ; preds = %2268
  %2270 = invoke noundef zeroext i1 @_ZNK4chen4json6isBoolEv(ptr noundef nonnull align 8 dereferenceable(16) %250)
          to label %2271 unwind label %2283

2271:                                             ; preds = %2269
  %2272 = zext i1 %2270 to i8
  store i8 %2272, ptr %249, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %248, ptr noundef nonnull align 1 dereferenceable(1) %249, ptr noundef null)
          to label %2273 unwind label %2283

2273:                                             ; preds = %2271
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #8
  %2274 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %248)
          to label %2275 unwind label %2288

2275:                                             ; preds = %2273
  br i1 %2274, label %2276, label %2292

2276:                                             ; preds = %2275
  br label %2317

2277:                                             ; preds = %2267, %2239
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #8
  br label %2278

2278:                                             ; preds = %2277, %2238
  call void @llvm.lifetime.end.p0(i64 16, ptr %242) #8
  br label %3153

2279:                                             ; preds = %2268
  %2280 = landingpad { ptr, i32 }
          cleanup
  %2281 = extractvalue { ptr, i32 } %2280, 0
  store ptr %2281, ptr %5, align 8
  %2282 = extractvalue { ptr, i32 } %2280, 1
  store i32 %2282, ptr %6, align 4
  br label %2287

2283:                                             ; preds = %2271, %2269
  %2284 = landingpad { ptr, i32 }
          cleanup
  %2285 = extractvalue { ptr, i32 } %2284, 0
  store ptr %2285, ptr %5, align 8
  %2286 = extractvalue { ptr, i32 } %2284, 1
  store i32 %2286, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #8
  br label %2287

2287:                                             ; preds = %2283, %2279
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #8
  br label %2327

2288:                                             ; preds = %2273
  %2289 = landingpad { ptr, i32 }
          cleanup
  %2290 = extractvalue { ptr, i32 } %2289, 0
  store ptr %2290, ptr %5, align 8
  %2291 = extractvalue { ptr, i32 } %2289, 1
  store i32 %2291, ptr %6, align 4
  br label %2326

2292:                                             ; preds = %2275
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %2293 unwind label %2298

2293:                                             ; preds = %2292
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %253) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %253, ptr noundef nonnull align 8 dereferenceable(16) %248, ptr noundef @.str.57, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2294 unwind label %2302

2294:                                             ; preds = %2293
  %2295 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %253) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %252, i32 noundef 1, ptr noundef @.str.3, i32 noundef 103, ptr noundef %2295)
          to label %2296 unwind label %2306

2296:                                             ; preds = %2294
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %2297 unwind label %2310

2297:                                             ; preds = %2296
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %253) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #8
  br label %2317

2298:                                             ; preds = %2292
  %2299 = landingpad { ptr, i32 }
          cleanup
  %2300 = extractvalue { ptr, i32 } %2299, 0
  store ptr %2300, ptr %5, align 8
  %2301 = extractvalue { ptr, i32 } %2299, 1
  store i32 %2301, ptr %6, align 4
  br label %2316

2302:                                             ; preds = %2293
  %2303 = landingpad { ptr, i32 }
          cleanup
  %2304 = extractvalue { ptr, i32 } %2303, 0
  store ptr %2304, ptr %5, align 8
  %2305 = extractvalue { ptr, i32 } %2303, 1
  store i32 %2305, ptr %6, align 4
  br label %2315

2306:                                             ; preds = %2294
  %2307 = landingpad { ptr, i32 }
          cleanup
  %2308 = extractvalue { ptr, i32 } %2307, 0
  store ptr %2308, ptr %5, align 8
  %2309 = extractvalue { ptr, i32 } %2307, 1
  store i32 %2309, ptr %6, align 4
  br label %2314

2310:                                             ; preds = %2296
  %2311 = landingpad { ptr, i32 }
          cleanup
  %2312 = extractvalue { ptr, i32 } %2311, 0
  store ptr %2312, ptr %5, align 8
  %2313 = extractvalue { ptr, i32 } %2311, 1
  store i32 %2313, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #8
  br label %2314

2314:                                             ; preds = %2310, %2306
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #8
  br label %2315

2315:                                             ; preds = %2314, %2302
  call void @llvm.lifetime.end.p0(i64 32, ptr %253) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #8
  br label %2316

2316:                                             ; preds = %2315, %2298
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #8
  br label %2326

2317:                                             ; preds = %2297, %2276
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %248) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %254) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %255) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %256) #8
  invoke void @_ZN4chen4jsonC1EDn(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr null)
          to label %2318 unwind label %2328

2318:                                             ; preds = %2317
  %2319 = invoke noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16) %256)
          to label %2320 unwind label %2332

2320:                                             ; preds = %2318
  %2321 = zext i1 %2319 to i8
  store i8 %2321, ptr %255, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %254, ptr noundef nonnull align 1 dereferenceable(1) %255, ptr noundef null)
          to label %2322 unwind label %2332

2322:                                             ; preds = %2320
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %255) #8
  %2323 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %254)
          to label %2324 unwind label %2337

2324:                                             ; preds = %2322
  br i1 %2323, label %2325, label %2341

2325:                                             ; preds = %2324
  br label %2366

2326:                                             ; preds = %2316, %2288
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %248) #8
  br label %2327

2327:                                             ; preds = %2326, %2287
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #8
  br label %3153

2328:                                             ; preds = %2317
  %2329 = landingpad { ptr, i32 }
          cleanup
  %2330 = extractvalue { ptr, i32 } %2329, 0
  store ptr %2330, ptr %5, align 8
  %2331 = extractvalue { ptr, i32 } %2329, 1
  store i32 %2331, ptr %6, align 4
  br label %2336

2332:                                             ; preds = %2320, %2318
  %2333 = landingpad { ptr, i32 }
          cleanup
  %2334 = extractvalue { ptr, i32 } %2333, 0
  store ptr %2334, ptr %5, align 8
  %2335 = extractvalue { ptr, i32 } %2333, 1
  store i32 %2335, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #8
  br label %2336

2336:                                             ; preds = %2332, %2328
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %255) #8
  br label %2377

2337:                                             ; preds = %2322
  %2338 = landingpad { ptr, i32 }
          cleanup
  %2339 = extractvalue { ptr, i32 } %2338, 0
  store ptr %2339, ptr %5, align 8
  %2340 = extractvalue { ptr, i32 } %2338, 1
  store i32 %2340, ptr %6, align 4
  br label %2376

2341:                                             ; preds = %2324
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2342 unwind label %2347

2342:                                             ; preds = %2341
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %259) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %259, ptr noundef nonnull align 8 dereferenceable(16) %254, ptr noundef @.str.58, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2343 unwind label %2351

2343:                                             ; preds = %2342
  %2344 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %259) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %258, i32 noundef 1, ptr noundef @.str.3, i32 noundef 104, ptr noundef %2344)
          to label %2345 unwind label %2355

2345:                                             ; preds = %2343
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2346 unwind label %2359

2346:                                             ; preds = %2345
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %259) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #8
  br label %2366

2347:                                             ; preds = %2341
  %2348 = landingpad { ptr, i32 }
          cleanup
  %2349 = extractvalue { ptr, i32 } %2348, 0
  store ptr %2349, ptr %5, align 8
  %2350 = extractvalue { ptr, i32 } %2348, 1
  store i32 %2350, ptr %6, align 4
  br label %2365

2351:                                             ; preds = %2342
  %2352 = landingpad { ptr, i32 }
          cleanup
  %2353 = extractvalue { ptr, i32 } %2352, 0
  store ptr %2353, ptr %5, align 8
  %2354 = extractvalue { ptr, i32 } %2352, 1
  store i32 %2354, ptr %6, align 4
  br label %2364

2355:                                             ; preds = %2343
  %2356 = landingpad { ptr, i32 }
          cleanup
  %2357 = extractvalue { ptr, i32 } %2356, 0
  store ptr %2357, ptr %5, align 8
  %2358 = extractvalue { ptr, i32 } %2356, 1
  store i32 %2358, ptr %6, align 4
  br label %2363

2359:                                             ; preds = %2345
  %2360 = landingpad { ptr, i32 }
          cleanup
  %2361 = extractvalue { ptr, i32 } %2360, 0
  store ptr %2361, ptr %5, align 8
  %2362 = extractvalue { ptr, i32 } %2360, 1
  store i32 %2362, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #8
  br label %2363

2363:                                             ; preds = %2359, %2355
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #8
  br label %2364

2364:                                             ; preds = %2363, %2351
  call void @llvm.lifetime.end.p0(i64 32, ptr %259) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #8
  br label %2365

2365:                                             ; preds = %2364, %2347
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #8
  br label %2376

2366:                                             ; preds = %2346, %2325
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %260) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %261) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %262) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %263) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %264) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %264)
          to label %2367 unwind label %2378

2367:                                             ; preds = %2366
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %262, ptr noundef nonnull align 8 dereferenceable(32) %263, i1 noundef zeroext false)
          to label %2368 unwind label %2382

2368:                                             ; preds = %2367
  %2369 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %262)
          to label %2370 unwind label %2386

2370:                                             ; preds = %2368
  %2371 = zext i1 %2369 to i8
  store i8 %2371, ptr %261, align 1, !tbaa !18
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %260, ptr noundef nonnull align 1 dereferenceable(1) %261, ptr noundef null)
          to label %2372 unwind label %2386

2372:                                             ; preds = %2370
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %262) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %263) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %262) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %261) #8
  %2373 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %260)
          to label %2374 unwind label %2392

2374:                                             ; preds = %2372
  br i1 %2373, label %2375, label %2396

2375:                                             ; preds = %2374
  br label %2421

2376:                                             ; preds = %2365, %2337
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #8
  br label %2377

2377:                                             ; preds = %2376, %2336
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #8
  br label %3153

2378:                                             ; preds = %2366
  %2379 = landingpad { ptr, i32 }
          cleanup
  %2380 = extractvalue { ptr, i32 } %2379, 0
  store ptr %2380, ptr %5, align 8
  %2381 = extractvalue { ptr, i32 } %2379, 1
  store i32 %2381, ptr %6, align 4
  br label %2391

2382:                                             ; preds = %2367
  %2383 = landingpad { ptr, i32 }
          cleanup
  %2384 = extractvalue { ptr, i32 } %2383, 0
  store ptr %2384, ptr %5, align 8
  %2385 = extractvalue { ptr, i32 } %2383, 1
  store i32 %2385, ptr %6, align 4
  br label %2390

2386:                                             ; preds = %2370, %2368
  %2387 = landingpad { ptr, i32 }
          cleanup
  %2388 = extractvalue { ptr, i32 } %2387, 0
  store ptr %2388, ptr %5, align 8
  %2389 = extractvalue { ptr, i32 } %2387, 1
  store i32 %2389, ptr %6, align 4
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %262) #8
  br label %2390

2390:                                             ; preds = %2386, %2382
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #8
  br label %2391

2391:                                             ; preds = %2390, %2378
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %263) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %262) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %261) #8
  br label %2432

2392:                                             ; preds = %2372
  %2393 = landingpad { ptr, i32 }
          cleanup
  %2394 = extractvalue { ptr, i32 } %2393, 0
  store ptr %2394, ptr %5, align 8
  %2395 = extractvalue { ptr, i32 } %2393, 1
  store i32 %2395, ptr %6, align 4
  br label %2431

2396:                                             ; preds = %2374
  call void @llvm.lifetime.start.p0(i64 8, ptr %265) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %2397 unwind label %2402

2397:                                             ; preds = %2396
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %267) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %267, ptr noundef nonnull align 8 dereferenceable(16) %260, ptr noundef @.str.60, ptr noundef @.str.20, ptr noundef @.str.16)
          to label %2398 unwind label %2406

2398:                                             ; preds = %2397
  %2399 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %266, i32 noundef 1, ptr noundef @.str.3, i32 noundef 107, ptr noundef %2399)
          to label %2400 unwind label %2410

2400:                                             ; preds = %2398
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %2401 unwind label %2414

2401:                                             ; preds = %2400
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %267) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #8
  br label %2421

2402:                                             ; preds = %2396
  %2403 = landingpad { ptr, i32 }
          cleanup
  %2404 = extractvalue { ptr, i32 } %2403, 0
  store ptr %2404, ptr %5, align 8
  %2405 = extractvalue { ptr, i32 } %2403, 1
  store i32 %2405, ptr %6, align 4
  br label %2420

2406:                                             ; preds = %2397
  %2407 = landingpad { ptr, i32 }
          cleanup
  %2408 = extractvalue { ptr, i32 } %2407, 0
  store ptr %2408, ptr %5, align 8
  %2409 = extractvalue { ptr, i32 } %2407, 1
  store i32 %2409, ptr %6, align 4
  br label %2419

2410:                                             ; preds = %2398
  %2411 = landingpad { ptr, i32 }
          cleanup
  %2412 = extractvalue { ptr, i32 } %2411, 0
  store ptr %2412, ptr %5, align 8
  %2413 = extractvalue { ptr, i32 } %2411, 1
  store i32 %2413, ptr %6, align 4
  br label %2418

2414:                                             ; preds = %2400
  %2415 = landingpad { ptr, i32 }
          cleanup
  %2416 = extractvalue { ptr, i32 } %2415, 0
  store ptr %2416, ptr %5, align 8
  %2417 = extractvalue { ptr, i32 } %2415, 1
  store i32 %2417, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #8
  br label %2418

2418:                                             ; preds = %2414, %2410
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  br label %2419

2419:                                             ; preds = %2418, %2406
  call void @llvm.lifetime.end.p0(i64 32, ptr %267) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #8
  br label %2420

2420:                                             ; preds = %2419, %2402
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #8
  br label %2431

2421:                                             ; preds = %2401, %2375
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %260) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %268) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef @.str.61)
          to label %2422 unwind label %2433

2422:                                             ; preds = %2421
  %2423 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %268)
          to label %2424 unwind label %2433

2424:                                             ; preds = %2422
  br i1 %2423, label %2425, label %2482

2425:                                             ; preds = %2424
  call void @llvm.lifetime.start.p0(i64 1, ptr %269) #8
  store i8 0, ptr %269, align 1, !tbaa !18
  %2426 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2427 unwind label %2437

2427:                                             ; preds = %2425
  br i1 %2426, label %2428, label %2467

2428:                                             ; preds = %2427
  call void @llvm.lifetime.start.p0(i64 32, ptr %271) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %272) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef @.str.62, ptr noundef nonnull align 1 dereferenceable(1) %272)
          to label %2429 unwind label %2441

2429:                                             ; preds = %2428
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %270, ptr noundef nonnull align 8 dereferenceable(32) %271, i1 noundef zeroext false)
          to label %2430 unwind label %2445

2430:                                             ; preds = %2429
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %271) #8
  br label %2467

2431:                                             ; preds = %2420, %2392
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %260) #8
  br label %2432

2432:                                             ; preds = %2431, %2391
  call void @llvm.lifetime.end.p0(i64 16, ptr %260) #8
  br label %3153

2433:                                             ; preds = %2422, %2421
  %2434 = landingpad { ptr, i32 }
          cleanup
  %2435 = extractvalue { ptr, i32 } %2434, 0
  store ptr %2435, ptr %5, align 8
  %2436 = extractvalue { ptr, i32 } %2434, 1
  store i32 %2436, ptr %6, align 4
  br label %2513

2437:                                             ; preds = %2425
  %2438 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2439 = extractvalue { ptr, i32 } %2438, 0
  store ptr %2439, ptr %5, align 8
  %2440 = extractvalue { ptr, i32 } %2438, 1
  store i32 %2440, ptr %6, align 4
  br label %2450

2441:                                             ; preds = %2428
  %2442 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2443 = extractvalue { ptr, i32 } %2442, 0
  store ptr %2443, ptr %5, align 8
  %2444 = extractvalue { ptr, i32 } %2442, 1
  store i32 %2444, ptr %6, align 4
  br label %2449

2445:                                             ; preds = %2429
  %2446 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2447 = extractvalue { ptr, i32 } %2446, 0
  store ptr %2447, ptr %5, align 8
  %2448 = extractvalue { ptr, i32 } %2446, 1
  store i32 %2448, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #8
  br label %2449

2449:                                             ; preds = %2445, %2441
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %271) #8
  br label %2450

2450:                                             ; preds = %2449, %2437
  %2451 = load i32, ptr %6, align 4
  %2452 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2453 = icmp eq i32 %2451, %2452
  br i1 %2453, label %2454, label %2463

2454:                                             ; preds = %2450
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #8
  %2455 = load ptr, ptr %5, align 8
  %2456 = call ptr @__cxa_begin_catch(ptr %2455) #8
  store ptr %2456, ptr %274, align 8
  store i8 1, ptr %269, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2457 unwind label %2473

2457:                                             ; preds = %2454
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #8
  br label %2458

2458:                                             ; preds = %2467, %2457
  %2459 = load i8, ptr %269, align 1, !tbaa !18, !range !20, !noundef !21
  %2460 = trunc i8 %2459 to i1
  br i1 %2460, label %2477, label %2461

2461:                                             ; preds = %2458
  %2462 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %268, i32 0, i32 0
  store ptr @.str.64, ptr %2462, align 8, !tbaa !22
  store i32 2, ptr %273, align 4
  br label %2478

2463:                                             ; preds = %2450
  %2464 = load ptr, ptr %5, align 8
  %2465 = call ptr @__cxa_begin_catch(ptr %2464) #8
  %2466 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %268, i32 0, i32 0
  store ptr @.str.63, ptr %2466, align 8, !tbaa !22
  store i32 2, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2468 unwind label %2469

2467:                                             ; preds = %2430, %2427
  br label %2458

2468:                                             ; preds = %2463
  br label %2478

2469:                                             ; preds = %2463
  %2470 = landingpad { ptr, i32 }
          cleanup
  %2471 = extractvalue { ptr, i32 } %2470, 0
  store ptr %2471, ptr %5, align 8
  %2472 = extractvalue { ptr, i32 } %2470, 1
  store i32 %2472, ptr %6, align 4
  br label %2481

2473:                                             ; preds = %2454
  %2474 = landingpad { ptr, i32 }
          cleanup
  %2475 = extractvalue { ptr, i32 } %2474, 0
  store ptr %2475, ptr %5, align 8
  %2476 = extractvalue { ptr, i32 } %2474, 1
  store i32 %2476, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #8
  br label %2481

2477:                                             ; preds = %2458
  store i32 0, ptr %273, align 4
  br label %2478

2478:                                             ; preds = %2477, %2468, %2461
  call void @llvm.lifetime.end.p0(i64 1, ptr %269) #8
  %2479 = load i32, ptr %273, align 4
  switch i32 %2479, label %3177 [
    i32 0, label %2480
    i32 2, label %2483
  ]

2480:                                             ; preds = %2478
  br label %2503

2481:                                             ; preds = %2473, %2469
  call void @llvm.lifetime.end.p0(i64 1, ptr %269) #8
  br label %2513

2482:                                             ; preds = %2424
  br label %2483

2483:                                             ; preds = %2482, %2478
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %2484 unwind label %2489

2484:                                             ; preds = %2483
  call void @llvm.lifetime.start.p0(i64 8, ptr %276) #8
  %2485 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %268, i32 0, i32 0
  %2486 = load ptr, ptr %2485, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %276, i32 noundef 1, ptr noundef @.str.3, i32 noundef 108, ptr noundef %2486)
          to label %2487 unwind label %2493

2487:                                             ; preds = %2484
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %2488 unwind label %2497

2488:                                             ; preds = %2487
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #8
  br label %2503

2489:                                             ; preds = %2483
  %2490 = landingpad { ptr, i32 }
          cleanup
  %2491 = extractvalue { ptr, i32 } %2490, 0
  store ptr %2491, ptr %5, align 8
  %2492 = extractvalue { ptr, i32 } %2490, 1
  store i32 %2492, ptr %6, align 4
  br label %2502

2493:                                             ; preds = %2484
  %2494 = landingpad { ptr, i32 }
          cleanup
  %2495 = extractvalue { ptr, i32 } %2494, 0
  store ptr %2495, ptr %5, align 8
  %2496 = extractvalue { ptr, i32 } %2494, 1
  store i32 %2496, ptr %6, align 4
  br label %2501

2497:                                             ; preds = %2487
  %2498 = landingpad { ptr, i32 }
          cleanup
  %2499 = extractvalue { ptr, i32 } %2498, 0
  store ptr %2499, ptr %5, align 8
  %2500 = extractvalue { ptr, i32 } %2498, 1
  store i32 %2500, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #8
  br label %2501

2501:                                             ; preds = %2497, %2493
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  br label %2502

2502:                                             ; preds = %2501, %2489
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #8
  br label %2513

2503:                                             ; preds = %2488, %2480
  call void @llvm.lifetime.end.p0(i64 8, ptr %268) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %277) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef @.str.61)
          to label %2504 unwind label %2514

2504:                                             ; preds = %2503
  %2505 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %277)
          to label %2506 unwind label %2514

2506:                                             ; preds = %2504
  br i1 %2505, label %2507, label %2563

2507:                                             ; preds = %2506
  call void @llvm.lifetime.start.p0(i64 1, ptr %278) #8
  store i8 0, ptr %278, align 1, !tbaa !18
  %2508 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2509 unwind label %2518

2509:                                             ; preds = %2507
  br i1 %2508, label %2510, label %2548

2510:                                             ; preds = %2509
  call void @llvm.lifetime.start.p0(i64 32, ptr %280) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %281) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %281)
          to label %2511 unwind label %2522

2511:                                             ; preds = %2510
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %279, ptr noundef nonnull align 8 dereferenceable(32) %280, i1 noundef zeroext false)
          to label %2512 unwind label %2526

2512:                                             ; preds = %2511
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #8
  br label %2548

2513:                                             ; preds = %2502, %2481, %2433
  call void @llvm.lifetime.end.p0(i64 8, ptr %268) #8
  br label %3153

2514:                                             ; preds = %2504, %2503
  %2515 = landingpad { ptr, i32 }
          cleanup
  %2516 = extractvalue { ptr, i32 } %2515, 0
  store ptr %2516, ptr %5, align 8
  %2517 = extractvalue { ptr, i32 } %2515, 1
  store i32 %2517, ptr %6, align 4
  br label %2594

2518:                                             ; preds = %2507
  %2519 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2520 = extractvalue { ptr, i32 } %2519, 0
  store ptr %2520, ptr %5, align 8
  %2521 = extractvalue { ptr, i32 } %2519, 1
  store i32 %2521, ptr %6, align 4
  br label %2531

2522:                                             ; preds = %2510
  %2523 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2524 = extractvalue { ptr, i32 } %2523, 0
  store ptr %2524, ptr %5, align 8
  %2525 = extractvalue { ptr, i32 } %2523, 1
  store i32 %2525, ptr %6, align 4
  br label %2530

2526:                                             ; preds = %2511
  %2527 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2528 = extractvalue { ptr, i32 } %2527, 0
  store ptr %2528, ptr %5, align 8
  %2529 = extractvalue { ptr, i32 } %2527, 1
  store i32 %2529, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #8
  br label %2530

2530:                                             ; preds = %2526, %2522
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %281) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #8
  br label %2531

2531:                                             ; preds = %2530, %2518
  %2532 = load i32, ptr %6, align 4
  %2533 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2534 = icmp eq i32 %2532, %2533
  br i1 %2534, label %2535, label %2544

2535:                                             ; preds = %2531
  call void @llvm.lifetime.start.p0(i64 8, ptr %282) #8
  %2536 = load ptr, ptr %5, align 8
  %2537 = call ptr @__cxa_begin_catch(ptr %2536) #8
  store ptr %2537, ptr %282, align 8
  store i8 1, ptr %278, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2538 unwind label %2554

2538:                                             ; preds = %2535
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #8
  br label %2539

2539:                                             ; preds = %2548, %2538
  %2540 = load i8, ptr %278, align 1, !tbaa !18, !range !20, !noundef !21
  %2541 = trunc i8 %2540 to i1
  br i1 %2541, label %2558, label %2542

2542:                                             ; preds = %2539
  %2543 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %277, i32 0, i32 0
  store ptr @.str.67, ptr %2543, align 8, !tbaa !22
  store i32 3, ptr %273, align 4
  br label %2559

2544:                                             ; preds = %2531
  %2545 = load ptr, ptr %5, align 8
  %2546 = call ptr @__cxa_begin_catch(ptr %2545) #8
  %2547 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %277, i32 0, i32 0
  store ptr @.str.66, ptr %2547, align 8, !tbaa !22
  store i32 3, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2549 unwind label %2550

2548:                                             ; preds = %2512, %2509
  br label %2539

2549:                                             ; preds = %2544
  br label %2559

2550:                                             ; preds = %2544
  %2551 = landingpad { ptr, i32 }
          cleanup
  %2552 = extractvalue { ptr, i32 } %2551, 0
  store ptr %2552, ptr %5, align 8
  %2553 = extractvalue { ptr, i32 } %2551, 1
  store i32 %2553, ptr %6, align 4
  br label %2562

2554:                                             ; preds = %2535
  %2555 = landingpad { ptr, i32 }
          cleanup
  %2556 = extractvalue { ptr, i32 } %2555, 0
  store ptr %2556, ptr %5, align 8
  %2557 = extractvalue { ptr, i32 } %2555, 1
  store i32 %2557, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #8
  br label %2562

2558:                                             ; preds = %2539
  store i32 0, ptr %273, align 4
  br label %2559

2559:                                             ; preds = %2558, %2549, %2542
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #8
  %2560 = load i32, ptr %273, align 4
  switch i32 %2560, label %3177 [
    i32 0, label %2561
    i32 3, label %2564
  ]

2561:                                             ; preds = %2559
  br label %2584

2562:                                             ; preds = %2554, %2550
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #8
  br label %2594

2563:                                             ; preds = %2506
  br label %2564

2564:                                             ; preds = %2563, %2559
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %2565 unwind label %2570

2565:                                             ; preds = %2564
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #8
  %2566 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %277, i32 0, i32 0
  %2567 = load ptr, ptr %2566, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %284, i32 noundef 1, ptr noundef @.str.3, i32 noundef 109, ptr noundef %2567)
          to label %2568 unwind label %2574

2568:                                             ; preds = %2565
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %2569 unwind label %2578

2569:                                             ; preds = %2568
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %283) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #8
  br label %2584

2570:                                             ; preds = %2564
  %2571 = landingpad { ptr, i32 }
          cleanup
  %2572 = extractvalue { ptr, i32 } %2571, 0
  store ptr %2572, ptr %5, align 8
  %2573 = extractvalue { ptr, i32 } %2571, 1
  store i32 %2573, ptr %6, align 4
  br label %2583

2574:                                             ; preds = %2565
  %2575 = landingpad { ptr, i32 }
          cleanup
  %2576 = extractvalue { ptr, i32 } %2575, 0
  store ptr %2576, ptr %5, align 8
  %2577 = extractvalue { ptr, i32 } %2575, 1
  store i32 %2577, ptr %6, align 4
  br label %2582

2578:                                             ; preds = %2568
  %2579 = landingpad { ptr, i32 }
          cleanup
  %2580 = extractvalue { ptr, i32 } %2579, 0
  store ptr %2580, ptr %5, align 8
  %2581 = extractvalue { ptr, i32 } %2579, 1
  store i32 %2581, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #8
  br label %2582

2582:                                             ; preds = %2578, %2574
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %283) #8
  br label %2583

2583:                                             ; preds = %2582, %2570
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #8
  br label %2594

2584:                                             ; preds = %2569, %2561
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @.str.61)
          to label %2585 unwind label %2595

2585:                                             ; preds = %2584
  %2586 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %2587 unwind label %2595

2587:                                             ; preds = %2585
  br i1 %2586, label %2588, label %2644

2588:                                             ; preds = %2587
  call void @llvm.lifetime.start.p0(i64 1, ptr %286) #8
  store i8 0, ptr %286, align 1, !tbaa !18
  %2589 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2590 unwind label %2599

2590:                                             ; preds = %2588
  br i1 %2589, label %2591, label %2629

2591:                                             ; preds = %2590
  call void @llvm.lifetime.start.p0(i64 32, ptr %288) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %289) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %288, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %289)
          to label %2592 unwind label %2603

2592:                                             ; preds = %2591
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %287, ptr noundef nonnull align 8 dereferenceable(32) %288, i1 noundef zeroext false)
          to label %2593 unwind label %2607

2593:                                             ; preds = %2592
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #8
  br label %2629

2594:                                             ; preds = %2583, %2562, %2514
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #8
  br label %3153

2595:                                             ; preds = %2585, %2584
  %2596 = landingpad { ptr, i32 }
          cleanup
  %2597 = extractvalue { ptr, i32 } %2596, 0
  store ptr %2597, ptr %5, align 8
  %2598 = extractvalue { ptr, i32 } %2596, 1
  store i32 %2598, ptr %6, align 4
  br label %2675

2599:                                             ; preds = %2588
  %2600 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2601 = extractvalue { ptr, i32 } %2600, 0
  store ptr %2601, ptr %5, align 8
  %2602 = extractvalue { ptr, i32 } %2600, 1
  store i32 %2602, ptr %6, align 4
  br label %2612

2603:                                             ; preds = %2591
  %2604 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2605 = extractvalue { ptr, i32 } %2604, 0
  store ptr %2605, ptr %5, align 8
  %2606 = extractvalue { ptr, i32 } %2604, 1
  store i32 %2606, ptr %6, align 4
  br label %2611

2607:                                             ; preds = %2592
  %2608 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2609 = extractvalue { ptr, i32 } %2608, 0
  store ptr %2609, ptr %5, align 8
  %2610 = extractvalue { ptr, i32 } %2608, 1
  store i32 %2610, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #8
  br label %2611

2611:                                             ; preds = %2607, %2603
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %288) #8
  br label %2612

2612:                                             ; preds = %2611, %2599
  %2613 = load i32, ptr %6, align 4
  %2614 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2615 = icmp eq i32 %2613, %2614
  br i1 %2615, label %2616, label %2625

2616:                                             ; preds = %2612
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #8
  %2617 = load ptr, ptr %5, align 8
  %2618 = call ptr @__cxa_begin_catch(ptr %2617) #8
  store ptr %2618, ptr %290, align 8
  store i8 1, ptr %286, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2619 unwind label %2635

2619:                                             ; preds = %2616
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #8
  br label %2620

2620:                                             ; preds = %2629, %2619
  %2621 = load i8, ptr %286, align 1, !tbaa !18, !range !20, !noundef !21
  %2622 = trunc i8 %2621 to i1
  br i1 %2622, label %2639, label %2623

2623:                                             ; preds = %2620
  %2624 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %285, i32 0, i32 0
  store ptr @.str.70, ptr %2624, align 8, !tbaa !22
  store i32 4, ptr %273, align 4
  br label %2640

2625:                                             ; preds = %2612
  %2626 = load ptr, ptr %5, align 8
  %2627 = call ptr @__cxa_begin_catch(ptr %2626) #8
  %2628 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %285, i32 0, i32 0
  store ptr @.str.69, ptr %2628, align 8, !tbaa !22
  store i32 4, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2630 unwind label %2631

2629:                                             ; preds = %2593, %2590
  br label %2620

2630:                                             ; preds = %2625
  br label %2640

2631:                                             ; preds = %2625
  %2632 = landingpad { ptr, i32 }
          cleanup
  %2633 = extractvalue { ptr, i32 } %2632, 0
  store ptr %2633, ptr %5, align 8
  %2634 = extractvalue { ptr, i32 } %2632, 1
  store i32 %2634, ptr %6, align 4
  br label %2643

2635:                                             ; preds = %2616
  %2636 = landingpad { ptr, i32 }
          cleanup
  %2637 = extractvalue { ptr, i32 } %2636, 0
  store ptr %2637, ptr %5, align 8
  %2638 = extractvalue { ptr, i32 } %2636, 1
  store i32 %2638, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #8
  br label %2643

2639:                                             ; preds = %2620
  store i32 0, ptr %273, align 4
  br label %2640

2640:                                             ; preds = %2639, %2630, %2623
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #8
  %2641 = load i32, ptr %273, align 4
  switch i32 %2641, label %3177 [
    i32 0, label %2642
    i32 4, label %2645
  ]

2642:                                             ; preds = %2640
  br label %2665

2643:                                             ; preds = %2635, %2631
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #8
  br label %2675

2644:                                             ; preds = %2587
  br label %2645

2645:                                             ; preds = %2644, %2640
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291)
          to label %2646 unwind label %2651

2646:                                             ; preds = %2645
  call void @llvm.lifetime.start.p0(i64 8, ptr %292) #8
  %2647 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %285, i32 0, i32 0
  %2648 = load ptr, ptr %2647, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %292, i32 noundef 1, ptr noundef @.str.3, i32 noundef 110, ptr noundef %2648)
          to label %2649 unwind label %2655

2649:                                             ; preds = %2646
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef nonnull align 8 dereferenceable(8) %291)
          to label %2650 unwind label %2659

2650:                                             ; preds = %2649
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #8
  br label %2665

2651:                                             ; preds = %2645
  %2652 = landingpad { ptr, i32 }
          cleanup
  %2653 = extractvalue { ptr, i32 } %2652, 0
  store ptr %2653, ptr %5, align 8
  %2654 = extractvalue { ptr, i32 } %2652, 1
  store i32 %2654, ptr %6, align 4
  br label %2664

2655:                                             ; preds = %2646
  %2656 = landingpad { ptr, i32 }
          cleanup
  %2657 = extractvalue { ptr, i32 } %2656, 0
  store ptr %2657, ptr %5, align 8
  %2658 = extractvalue { ptr, i32 } %2656, 1
  store i32 %2658, ptr %6, align 4
  br label %2663

2659:                                             ; preds = %2649
  %2660 = landingpad { ptr, i32 }
          cleanup
  %2661 = extractvalue { ptr, i32 } %2660, 0
  store ptr %2661, ptr %5, align 8
  %2662 = extractvalue { ptr, i32 } %2660, 1
  store i32 %2662, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #8
  br label %2663

2663:                                             ; preds = %2659, %2655
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #8
  br label %2664

2664:                                             ; preds = %2663, %2651
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #8
  br label %2675

2665:                                             ; preds = %2650, %2642
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef @.str.61)
          to label %2666 unwind label %2676

2666:                                             ; preds = %2665
  %2667 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %2668 unwind label %2676

2668:                                             ; preds = %2666
  br i1 %2667, label %2669, label %2725

2669:                                             ; preds = %2668
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #8
  store i8 0, ptr %294, align 1, !tbaa !18
  %2670 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2671 unwind label %2680

2671:                                             ; preds = %2669
  br i1 %2670, label %2672, label %2710

2672:                                             ; preds = %2671
  call void @llvm.lifetime.start.p0(i64 32, ptr %296) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %297) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %296, ptr noundef @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %297)
          to label %2673 unwind label %2684

2673:                                             ; preds = %2672
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %295, ptr noundef nonnull align 8 dereferenceable(32) %296, i1 noundef zeroext false)
          to label %2674 unwind label %2688

2674:                                             ; preds = %2673
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #8
  br label %2710

2675:                                             ; preds = %2664, %2643, %2595
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  br label %3153

2676:                                             ; preds = %2666, %2665
  %2677 = landingpad { ptr, i32 }
          cleanup
  %2678 = extractvalue { ptr, i32 } %2677, 0
  store ptr %2678, ptr %5, align 8
  %2679 = extractvalue { ptr, i32 } %2677, 1
  store i32 %2679, ptr %6, align 4
  br label %2756

2680:                                             ; preds = %2669
  %2681 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2682 = extractvalue { ptr, i32 } %2681, 0
  store ptr %2682, ptr %5, align 8
  %2683 = extractvalue { ptr, i32 } %2681, 1
  store i32 %2683, ptr %6, align 4
  br label %2693

2684:                                             ; preds = %2672
  %2685 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2686 = extractvalue { ptr, i32 } %2685, 0
  store ptr %2686, ptr %5, align 8
  %2687 = extractvalue { ptr, i32 } %2685, 1
  store i32 %2687, ptr %6, align 4
  br label %2692

2688:                                             ; preds = %2673
  %2689 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2690 = extractvalue { ptr, i32 } %2689, 0
  store ptr %2690, ptr %5, align 8
  %2691 = extractvalue { ptr, i32 } %2689, 1
  store i32 %2691, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #8
  br label %2692

2692:                                             ; preds = %2688, %2684
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %297) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #8
  br label %2693

2693:                                             ; preds = %2692, %2680
  %2694 = load i32, ptr %6, align 4
  %2695 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2696 = icmp eq i32 %2694, %2695
  br i1 %2696, label %2697, label %2706

2697:                                             ; preds = %2693
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #8
  %2698 = load ptr, ptr %5, align 8
  %2699 = call ptr @__cxa_begin_catch(ptr %2698) #8
  store ptr %2699, ptr %298, align 8
  store i8 1, ptr %294, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2700 unwind label %2716

2700:                                             ; preds = %2697
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #8
  br label %2701

2701:                                             ; preds = %2710, %2700
  %2702 = load i8, ptr %294, align 1, !tbaa !18, !range !20, !noundef !21
  %2703 = trunc i8 %2702 to i1
  br i1 %2703, label %2720, label %2704

2704:                                             ; preds = %2701
  %2705 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %293, i32 0, i32 0
  store ptr @.str.73, ptr %2705, align 8, !tbaa !22
  store i32 5, ptr %273, align 4
  br label %2721

2706:                                             ; preds = %2693
  %2707 = load ptr, ptr %5, align 8
  %2708 = call ptr @__cxa_begin_catch(ptr %2707) #8
  %2709 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %293, i32 0, i32 0
  store ptr @.str.72, ptr %2709, align 8, !tbaa !22
  store i32 5, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2711 unwind label %2712

2710:                                             ; preds = %2674, %2671
  br label %2701

2711:                                             ; preds = %2706
  br label %2721

2712:                                             ; preds = %2706
  %2713 = landingpad { ptr, i32 }
          cleanup
  %2714 = extractvalue { ptr, i32 } %2713, 0
  store ptr %2714, ptr %5, align 8
  %2715 = extractvalue { ptr, i32 } %2713, 1
  store i32 %2715, ptr %6, align 4
  br label %2724

2716:                                             ; preds = %2697
  %2717 = landingpad { ptr, i32 }
          cleanup
  %2718 = extractvalue { ptr, i32 } %2717, 0
  store ptr %2718, ptr %5, align 8
  %2719 = extractvalue { ptr, i32 } %2717, 1
  store i32 %2719, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #8
  br label %2724

2720:                                             ; preds = %2701
  store i32 0, ptr %273, align 4
  br label %2721

2721:                                             ; preds = %2720, %2711, %2704
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #8
  %2722 = load i32, ptr %273, align 4
  switch i32 %2722, label %3177 [
    i32 0, label %2723
    i32 5, label %2726
  ]

2723:                                             ; preds = %2721
  br label %2746

2724:                                             ; preds = %2716, %2712
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #8
  br label %2756

2725:                                             ; preds = %2668
  br label %2726

2726:                                             ; preds = %2725, %2721
  call void @llvm.lifetime.start.p0(i64 8, ptr %299) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %2727 unwind label %2732

2727:                                             ; preds = %2726
  call void @llvm.lifetime.start.p0(i64 8, ptr %300) #8
  %2728 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %293, i32 0, i32 0
  %2729 = load ptr, ptr %2728, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %300, i32 noundef 1, ptr noundef @.str.3, i32 noundef 111, ptr noundef %2729)
          to label %2730 unwind label %2736

2730:                                             ; preds = %2727
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %2731 unwind label %2740

2731:                                             ; preds = %2730
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #8
  br label %2746

2732:                                             ; preds = %2726
  %2733 = landingpad { ptr, i32 }
          cleanup
  %2734 = extractvalue { ptr, i32 } %2733, 0
  store ptr %2734, ptr %5, align 8
  %2735 = extractvalue { ptr, i32 } %2733, 1
  store i32 %2735, ptr %6, align 4
  br label %2745

2736:                                             ; preds = %2727
  %2737 = landingpad { ptr, i32 }
          cleanup
  %2738 = extractvalue { ptr, i32 } %2737, 0
  store ptr %2738, ptr %5, align 8
  %2739 = extractvalue { ptr, i32 } %2737, 1
  store i32 %2739, ptr %6, align 4
  br label %2744

2740:                                             ; preds = %2730
  %2741 = landingpad { ptr, i32 }
          cleanup
  %2742 = extractvalue { ptr, i32 } %2741, 0
  store ptr %2742, ptr %5, align 8
  %2743 = extractvalue { ptr, i32 } %2741, 1
  store i32 %2743, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #8
  br label %2744

2744:                                             ; preds = %2740, %2736
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #8
  br label %2745

2745:                                             ; preds = %2744, %2732
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #8
  br label %2756

2746:                                             ; preds = %2731, %2723
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %301) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef @.str.61)
          to label %2747 unwind label %2757

2747:                                             ; preds = %2746
  %2748 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %301)
          to label %2749 unwind label %2757

2749:                                             ; preds = %2747
  br i1 %2748, label %2750, label %2806

2750:                                             ; preds = %2749
  call void @llvm.lifetime.start.p0(i64 1, ptr %302) #8
  store i8 0, ptr %302, align 1, !tbaa !18
  %2751 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2752 unwind label %2761

2752:                                             ; preds = %2750
  br i1 %2751, label %2753, label %2791

2753:                                             ; preds = %2752
  call void @llvm.lifetime.start.p0(i64 32, ptr %304) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %305) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %304, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %305)
          to label %2754 unwind label %2765

2754:                                             ; preds = %2753
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %303, ptr noundef nonnull align 8 dereferenceable(32) %304, i1 noundef zeroext false)
          to label %2755 unwind label %2769

2755:                                             ; preds = %2754
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %303) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %304) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %305) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #8
  br label %2791

2756:                                             ; preds = %2745, %2724, %2676
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #8
  br label %3153

2757:                                             ; preds = %2747, %2746
  %2758 = landingpad { ptr, i32 }
          cleanup
  %2759 = extractvalue { ptr, i32 } %2758, 0
  store ptr %2759, ptr %5, align 8
  %2760 = extractvalue { ptr, i32 } %2758, 1
  store i32 %2760, ptr %6, align 4
  br label %2837

2761:                                             ; preds = %2750
  %2762 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2763 = extractvalue { ptr, i32 } %2762, 0
  store ptr %2763, ptr %5, align 8
  %2764 = extractvalue { ptr, i32 } %2762, 1
  store i32 %2764, ptr %6, align 4
  br label %2774

2765:                                             ; preds = %2753
  %2766 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2767 = extractvalue { ptr, i32 } %2766, 0
  store ptr %2767, ptr %5, align 8
  %2768 = extractvalue { ptr, i32 } %2766, 1
  store i32 %2768, ptr %6, align 4
  br label %2773

2769:                                             ; preds = %2754
  %2770 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2771 = extractvalue { ptr, i32 } %2770, 0
  store ptr %2771, ptr %5, align 8
  %2772 = extractvalue { ptr, i32 } %2770, 1
  store i32 %2772, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %304) #8
  br label %2773

2773:                                             ; preds = %2769, %2765
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %305) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %305) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #8
  br label %2774

2774:                                             ; preds = %2773, %2761
  %2775 = load i32, ptr %6, align 4
  %2776 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2777 = icmp eq i32 %2775, %2776
  br i1 %2777, label %2778, label %2787

2778:                                             ; preds = %2774
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #8
  %2779 = load ptr, ptr %5, align 8
  %2780 = call ptr @__cxa_begin_catch(ptr %2779) #8
  store ptr %2780, ptr %306, align 8
  store i8 1, ptr %302, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2781 unwind label %2797

2781:                                             ; preds = %2778
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #8
  br label %2782

2782:                                             ; preds = %2791, %2781
  %2783 = load i8, ptr %302, align 1, !tbaa !18, !range !20, !noundef !21
  %2784 = trunc i8 %2783 to i1
  br i1 %2784, label %2801, label %2785

2785:                                             ; preds = %2782
  %2786 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %301, i32 0, i32 0
  store ptr @.str.76, ptr %2786, align 8, !tbaa !22
  store i32 6, ptr %273, align 4
  br label %2802

2787:                                             ; preds = %2774
  %2788 = load ptr, ptr %5, align 8
  %2789 = call ptr @__cxa_begin_catch(ptr %2788) #8
  %2790 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %301, i32 0, i32 0
  store ptr @.str.75, ptr %2790, align 8, !tbaa !22
  store i32 6, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2792 unwind label %2793

2791:                                             ; preds = %2755, %2752
  br label %2782

2792:                                             ; preds = %2787
  br label %2802

2793:                                             ; preds = %2787
  %2794 = landingpad { ptr, i32 }
          cleanup
  %2795 = extractvalue { ptr, i32 } %2794, 0
  store ptr %2795, ptr %5, align 8
  %2796 = extractvalue { ptr, i32 } %2794, 1
  store i32 %2796, ptr %6, align 4
  br label %2805

2797:                                             ; preds = %2778
  %2798 = landingpad { ptr, i32 }
          cleanup
  %2799 = extractvalue { ptr, i32 } %2798, 0
  store ptr %2799, ptr %5, align 8
  %2800 = extractvalue { ptr, i32 } %2798, 1
  store i32 %2800, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #8
  br label %2805

2801:                                             ; preds = %2782
  store i32 0, ptr %273, align 4
  br label %2802

2802:                                             ; preds = %2801, %2792, %2785
  call void @llvm.lifetime.end.p0(i64 1, ptr %302) #8
  %2803 = load i32, ptr %273, align 4
  switch i32 %2803, label %3177 [
    i32 0, label %2804
    i32 6, label %2807
  ]

2804:                                             ; preds = %2802
  br label %2827

2805:                                             ; preds = %2797, %2793
  call void @llvm.lifetime.end.p0(i64 1, ptr %302) #8
  br label %2837

2806:                                             ; preds = %2749
  br label %2807

2807:                                             ; preds = %2806, %2802
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %2808 unwind label %2813

2808:                                             ; preds = %2807
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #8
  %2809 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %301, i32 0, i32 0
  %2810 = load ptr, ptr %2809, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %308, i32 noundef 1, ptr noundef @.str.3, i32 noundef 112, ptr noundef %2810)
          to label %2811 unwind label %2817

2811:                                             ; preds = %2808
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %2812 unwind label %2821

2812:                                             ; preds = %2811
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #8
  br label %2827

2813:                                             ; preds = %2807
  %2814 = landingpad { ptr, i32 }
          cleanup
  %2815 = extractvalue { ptr, i32 } %2814, 0
  store ptr %2815, ptr %5, align 8
  %2816 = extractvalue { ptr, i32 } %2814, 1
  store i32 %2816, ptr %6, align 4
  br label %2826

2817:                                             ; preds = %2808
  %2818 = landingpad { ptr, i32 }
          cleanup
  %2819 = extractvalue { ptr, i32 } %2818, 0
  store ptr %2819, ptr %5, align 8
  %2820 = extractvalue { ptr, i32 } %2818, 1
  store i32 %2820, ptr %6, align 4
  br label %2825

2821:                                             ; preds = %2811
  %2822 = landingpad { ptr, i32 }
          cleanup
  %2823 = extractvalue { ptr, i32 } %2822, 0
  store ptr %2823, ptr %5, align 8
  %2824 = extractvalue { ptr, i32 } %2822, 1
  store i32 %2824, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #8
  br label %2825

2825:                                             ; preds = %2821, %2817
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #8
  br label %2826

2826:                                             ; preds = %2825, %2813
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #8
  br label %2837

2827:                                             ; preds = %2812, %2804
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef @.str.61)
          to label %2828 unwind label %2838

2828:                                             ; preds = %2827
  %2829 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %309)
          to label %2830 unwind label %2838

2830:                                             ; preds = %2828
  br i1 %2829, label %2831, label %2887

2831:                                             ; preds = %2830
  call void @llvm.lifetime.start.p0(i64 1, ptr %310) #8
  store i8 0, ptr %310, align 1, !tbaa !18
  %2832 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2833 unwind label %2842

2833:                                             ; preds = %2831
  br i1 %2832, label %2834, label %2872

2834:                                             ; preds = %2833
  call void @llvm.lifetime.start.p0(i64 32, ptr %312) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %313) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %2835 unwind label %2846

2835:                                             ; preds = %2834
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %311, ptr noundef nonnull align 8 dereferenceable(32) %312, i1 noundef zeroext false)
          to label %2836 unwind label %2850

2836:                                             ; preds = %2835
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %311) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #8
  br label %2872

2837:                                             ; preds = %2826, %2805, %2757
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #8
  br label %3153

2838:                                             ; preds = %2828, %2827
  %2839 = landingpad { ptr, i32 }
          cleanup
  %2840 = extractvalue { ptr, i32 } %2839, 0
  store ptr %2840, ptr %5, align 8
  %2841 = extractvalue { ptr, i32 } %2839, 1
  store i32 %2841, ptr %6, align 4
  br label %2918

2842:                                             ; preds = %2831
  %2843 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2844 = extractvalue { ptr, i32 } %2843, 0
  store ptr %2844, ptr %5, align 8
  %2845 = extractvalue { ptr, i32 } %2843, 1
  store i32 %2845, ptr %6, align 4
  br label %2855

2846:                                             ; preds = %2834
  %2847 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2848 = extractvalue { ptr, i32 } %2847, 0
  store ptr %2848, ptr %5, align 8
  %2849 = extractvalue { ptr, i32 } %2847, 1
  store i32 %2849, ptr %6, align 4
  br label %2854

2850:                                             ; preds = %2835
  %2851 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2852 = extractvalue { ptr, i32 } %2851, 0
  store ptr %2852, ptr %5, align 8
  %2853 = extractvalue { ptr, i32 } %2851, 1
  store i32 %2853, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #8
  br label %2854

2854:                                             ; preds = %2850, %2846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %313) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #8
  br label %2855

2855:                                             ; preds = %2854, %2842
  %2856 = load i32, ptr %6, align 4
  %2857 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2858 = icmp eq i32 %2856, %2857
  br i1 %2858, label %2859, label %2868

2859:                                             ; preds = %2855
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #8
  %2860 = load ptr, ptr %5, align 8
  %2861 = call ptr @__cxa_begin_catch(ptr %2860) #8
  store ptr %2861, ptr %314, align 8
  store i8 1, ptr %310, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2862 unwind label %2878

2862:                                             ; preds = %2859
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  br label %2863

2863:                                             ; preds = %2872, %2862
  %2864 = load i8, ptr %310, align 1, !tbaa !18, !range !20, !noundef !21
  %2865 = trunc i8 %2864 to i1
  br i1 %2865, label %2882, label %2866

2866:                                             ; preds = %2863
  %2867 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %309, i32 0, i32 0
  store ptr @.str.79, ptr %2867, align 8, !tbaa !22
  store i32 7, ptr %273, align 4
  br label %2883

2868:                                             ; preds = %2855
  %2869 = load ptr, ptr %5, align 8
  %2870 = call ptr @__cxa_begin_catch(ptr %2869) #8
  %2871 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %309, i32 0, i32 0
  store ptr @.str.78, ptr %2871, align 8, !tbaa !22
  store i32 7, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2873 unwind label %2874

2872:                                             ; preds = %2836, %2833
  br label %2863

2873:                                             ; preds = %2868
  br label %2883

2874:                                             ; preds = %2868
  %2875 = landingpad { ptr, i32 }
          cleanup
  %2876 = extractvalue { ptr, i32 } %2875, 0
  store ptr %2876, ptr %5, align 8
  %2877 = extractvalue { ptr, i32 } %2875, 1
  store i32 %2877, ptr %6, align 4
  br label %2886

2878:                                             ; preds = %2859
  %2879 = landingpad { ptr, i32 }
          cleanup
  %2880 = extractvalue { ptr, i32 } %2879, 0
  store ptr %2880, ptr %5, align 8
  %2881 = extractvalue { ptr, i32 } %2879, 1
  store i32 %2881, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  br label %2886

2882:                                             ; preds = %2863
  store i32 0, ptr %273, align 4
  br label %2883

2883:                                             ; preds = %2882, %2873, %2866
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #8
  %2884 = load i32, ptr %273, align 4
  switch i32 %2884, label %3177 [
    i32 0, label %2885
    i32 7, label %2888
  ]

2885:                                             ; preds = %2883
  br label %2908

2886:                                             ; preds = %2878, %2874
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #8
  br label %2918

2887:                                             ; preds = %2830
  br label %2888

2888:                                             ; preds = %2887, %2883
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315)
          to label %2889 unwind label %2894

2889:                                             ; preds = %2888
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #8
  %2890 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %309, i32 0, i32 0
  %2891 = load ptr, ptr %2890, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %316, i32 noundef 1, ptr noundef @.str.3, i32 noundef 113, ptr noundef %2891)
          to label %2892 unwind label %2898

2892:                                             ; preds = %2889
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %315)
          to label %2893 unwind label %2902

2893:                                             ; preds = %2892
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  br label %2908

2894:                                             ; preds = %2888
  %2895 = landingpad { ptr, i32 }
          cleanup
  %2896 = extractvalue { ptr, i32 } %2895, 0
  store ptr %2896, ptr %5, align 8
  %2897 = extractvalue { ptr, i32 } %2895, 1
  store i32 %2897, ptr %6, align 4
  br label %2907

2898:                                             ; preds = %2889
  %2899 = landingpad { ptr, i32 }
          cleanup
  %2900 = extractvalue { ptr, i32 } %2899, 0
  store ptr %2900, ptr %5, align 8
  %2901 = extractvalue { ptr, i32 } %2899, 1
  store i32 %2901, ptr %6, align 4
  br label %2906

2902:                                             ; preds = %2892
  %2903 = landingpad { ptr, i32 }
          cleanup
  %2904 = extractvalue { ptr, i32 } %2903, 0
  store ptr %2904, ptr %5, align 8
  %2905 = extractvalue { ptr, i32 } %2903, 1
  store i32 %2905, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #8
  br label %2906

2906:                                             ; preds = %2902, %2898
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #8
  br label %2907

2907:                                             ; preds = %2906, %2894
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  br label %2918

2908:                                             ; preds = %2893, %2885
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %317) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef @.str.61)
          to label %2909 unwind label %2919

2909:                                             ; preds = %2908
  %2910 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %317)
          to label %2911 unwind label %2919

2911:                                             ; preds = %2909
  br i1 %2910, label %2912, label %2968

2912:                                             ; preds = %2911
  call void @llvm.lifetime.start.p0(i64 1, ptr %318) #8
  store i8 0, ptr %318, align 1, !tbaa !18
  %2913 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2914 unwind label %2923

2914:                                             ; preds = %2912
  br i1 %2913, label %2915, label %2953

2915:                                             ; preds = %2914
  call void @llvm.lifetime.start.p0(i64 32, ptr %320) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %321) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %321)
          to label %2916 unwind label %2927

2916:                                             ; preds = %2915
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %319, ptr noundef nonnull align 8 dereferenceable(32) %320, i1 noundef zeroext false)
          to label %2917 unwind label %2931

2917:                                             ; preds = %2916
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %319) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %320) #8
  br label %2953

2918:                                             ; preds = %2907, %2886, %2838
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  br label %3153

2919:                                             ; preds = %2909, %2908
  %2920 = landingpad { ptr, i32 }
          cleanup
  %2921 = extractvalue { ptr, i32 } %2920, 0
  store ptr %2921, ptr %5, align 8
  %2922 = extractvalue { ptr, i32 } %2920, 1
  store i32 %2922, ptr %6, align 4
  br label %2999

2923:                                             ; preds = %2912
  %2924 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %5, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %6, align 4
  br label %2936

2927:                                             ; preds = %2915
  %2928 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2929 = extractvalue { ptr, i32 } %2928, 0
  store ptr %2929, ptr %5, align 8
  %2930 = extractvalue { ptr, i32 } %2928, 1
  store i32 %2930, ptr %6, align 4
  br label %2935

2931:                                             ; preds = %2916
  %2932 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %2933 = extractvalue { ptr, i32 } %2932, 0
  store ptr %2933, ptr %5, align 8
  %2934 = extractvalue { ptr, i32 } %2932, 1
  store i32 %2934, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #8
  br label %2935

2935:                                             ; preds = %2931, %2927
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %321) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %320) #8
  br label %2936

2936:                                             ; preds = %2935, %2923
  %2937 = load i32, ptr %6, align 4
  %2938 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %2939 = icmp eq i32 %2937, %2938
  br i1 %2939, label %2940, label %2949

2940:                                             ; preds = %2936
  call void @llvm.lifetime.start.p0(i64 8, ptr %322) #8
  %2941 = load ptr, ptr %5, align 8
  %2942 = call ptr @__cxa_begin_catch(ptr %2941) #8
  store ptr %2942, ptr %322, align 8
  store i8 1, ptr %318, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %2943 unwind label %2959

2943:                                             ; preds = %2940
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #8
  br label %2944

2944:                                             ; preds = %2953, %2943
  %2945 = load i8, ptr %318, align 1, !tbaa !18, !range !20, !noundef !21
  %2946 = trunc i8 %2945 to i1
  br i1 %2946, label %2963, label %2947

2947:                                             ; preds = %2944
  %2948 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %317, i32 0, i32 0
  store ptr @.str.82, ptr %2948, align 8, !tbaa !22
  store i32 8, ptr %273, align 4
  br label %2964

2949:                                             ; preds = %2936
  %2950 = load ptr, ptr %5, align 8
  %2951 = call ptr @__cxa_begin_catch(ptr %2950) #8
  %2952 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %317, i32 0, i32 0
  store ptr @.str.81, ptr %2952, align 8, !tbaa !22
  store i32 8, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %2954 unwind label %2955

2953:                                             ; preds = %2917, %2914
  br label %2944

2954:                                             ; preds = %2949
  br label %2964

2955:                                             ; preds = %2949
  %2956 = landingpad { ptr, i32 }
          cleanup
  %2957 = extractvalue { ptr, i32 } %2956, 0
  store ptr %2957, ptr %5, align 8
  %2958 = extractvalue { ptr, i32 } %2956, 1
  store i32 %2958, ptr %6, align 4
  br label %2967

2959:                                             ; preds = %2940
  %2960 = landingpad { ptr, i32 }
          cleanup
  %2961 = extractvalue { ptr, i32 } %2960, 0
  store ptr %2961, ptr %5, align 8
  %2962 = extractvalue { ptr, i32 } %2960, 1
  store i32 %2962, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #8
  br label %2967

2963:                                             ; preds = %2944
  store i32 0, ptr %273, align 4
  br label %2964

2964:                                             ; preds = %2963, %2954, %2947
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #8
  %2965 = load i32, ptr %273, align 4
  switch i32 %2965, label %3177 [
    i32 0, label %2966
    i32 8, label %2969
  ]

2966:                                             ; preds = %2964
  br label %2989

2967:                                             ; preds = %2959, %2955
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #8
  br label %2999

2968:                                             ; preds = %2911
  br label %2969

2969:                                             ; preds = %2968, %2964
  call void @llvm.lifetime.start.p0(i64 8, ptr %323) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %323)
          to label %2970 unwind label %2975

2970:                                             ; preds = %2969
  call void @llvm.lifetime.start.p0(i64 8, ptr %324) #8
  %2971 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %317, i32 0, i32 0
  %2972 = load ptr, ptr %2971, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %324, i32 noundef 1, ptr noundef @.str.3, i32 noundef 114, ptr noundef %2972)
          to label %2973 unwind label %2979

2973:                                             ; preds = %2970
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(8) %323)
          to label %2974 unwind label %2983

2974:                                             ; preds = %2973
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %323) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #8
  br label %2989

2975:                                             ; preds = %2969
  %2976 = landingpad { ptr, i32 }
          cleanup
  %2977 = extractvalue { ptr, i32 } %2976, 0
  store ptr %2977, ptr %5, align 8
  %2978 = extractvalue { ptr, i32 } %2976, 1
  store i32 %2978, ptr %6, align 4
  br label %2988

2979:                                             ; preds = %2970
  %2980 = landingpad { ptr, i32 }
          cleanup
  %2981 = extractvalue { ptr, i32 } %2980, 0
  store ptr %2981, ptr %5, align 8
  %2982 = extractvalue { ptr, i32 } %2980, 1
  store i32 %2982, ptr %6, align 4
  br label %2987

2983:                                             ; preds = %2973
  %2984 = landingpad { ptr, i32 }
          cleanup
  %2985 = extractvalue { ptr, i32 } %2984, 0
  store ptr %2985, ptr %5, align 8
  %2986 = extractvalue { ptr, i32 } %2984, 1
  store i32 %2986, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #8
  br label %2987

2987:                                             ; preds = %2983, %2979
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %323) #8
  br label %2988

2988:                                             ; preds = %2987, %2975
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #8
  br label %2999

2989:                                             ; preds = %2974, %2966
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %325) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef @.str.61)
          to label %2990 unwind label %3000

2990:                                             ; preds = %2989
  %2991 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %325)
          to label %2992 unwind label %3000

2992:                                             ; preds = %2990
  br i1 %2991, label %2993, label %3049

2993:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 1, ptr %326) #8
  store i8 0, ptr %326, align 1, !tbaa !18
  %2994 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %2995 unwind label %3004

2995:                                             ; preds = %2993
  br i1 %2994, label %2996, label %3034

2996:                                             ; preds = %2995
  call void @llvm.lifetime.start.p0(i64 32, ptr %328) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %329) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %328, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %329)
          to label %2997 unwind label %3008

2997:                                             ; preds = %2996
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %327, ptr noundef nonnull align 8 dereferenceable(32) %328, i1 noundef zeroext false)
          to label %2998 unwind label %3012

2998:                                             ; preds = %2997
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %327) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #8
  br label %3034

2999:                                             ; preds = %2988, %2967, %2919
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #8
  br label %3153

3000:                                             ; preds = %2990, %2989
  %3001 = landingpad { ptr, i32 }
          cleanup
  %3002 = extractvalue { ptr, i32 } %3001, 0
  store ptr %3002, ptr %5, align 8
  %3003 = extractvalue { ptr, i32 } %3001, 1
  store i32 %3003, ptr %6, align 4
  br label %3080

3004:                                             ; preds = %2993
  %3005 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3006 = extractvalue { ptr, i32 } %3005, 0
  store ptr %3006, ptr %5, align 8
  %3007 = extractvalue { ptr, i32 } %3005, 1
  store i32 %3007, ptr %6, align 4
  br label %3017

3008:                                             ; preds = %2996
  %3009 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3010 = extractvalue { ptr, i32 } %3009, 0
  store ptr %3010, ptr %5, align 8
  %3011 = extractvalue { ptr, i32 } %3009, 1
  store i32 %3011, ptr %6, align 4
  br label %3016

3012:                                             ; preds = %2997
  %3013 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3014 = extractvalue { ptr, i32 } %3013, 0
  store ptr %3014, ptr %5, align 8
  %3015 = extractvalue { ptr, i32 } %3013, 1
  store i32 %3015, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #8
  br label %3016

3016:                                             ; preds = %3012, %3008
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %329) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #8
  br label %3017

3017:                                             ; preds = %3016, %3004
  %3018 = load i32, ptr %6, align 4
  %3019 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %3020 = icmp eq i32 %3018, %3019
  br i1 %3020, label %3021, label %3030

3021:                                             ; preds = %3017
  call void @llvm.lifetime.start.p0(i64 8, ptr %330) #8
  %3022 = load ptr, ptr %5, align 8
  %3023 = call ptr @__cxa_begin_catch(ptr %3022) #8
  store ptr %3023, ptr %330, align 8
  store i8 1, ptr %326, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %3024 unwind label %3040

3024:                                             ; preds = %3021
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #8
  br label %3025

3025:                                             ; preds = %3034, %3024
  %3026 = load i8, ptr %326, align 1, !tbaa !18, !range !20, !noundef !21
  %3027 = trunc i8 %3026 to i1
  br i1 %3027, label %3044, label %3028

3028:                                             ; preds = %3025
  %3029 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %325, i32 0, i32 0
  store ptr @.str.85, ptr %3029, align 8, !tbaa !22
  store i32 9, ptr %273, align 4
  br label %3045

3030:                                             ; preds = %3017
  %3031 = load ptr, ptr %5, align 8
  %3032 = call ptr @__cxa_begin_catch(ptr %3031) #8
  %3033 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %325, i32 0, i32 0
  store ptr @.str.84, ptr %3033, align 8, !tbaa !22
  store i32 9, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %3035 unwind label %3036

3034:                                             ; preds = %2998, %2995
  br label %3025

3035:                                             ; preds = %3030
  br label %3045

3036:                                             ; preds = %3030
  %3037 = landingpad { ptr, i32 }
          cleanup
  %3038 = extractvalue { ptr, i32 } %3037, 0
  store ptr %3038, ptr %5, align 8
  %3039 = extractvalue { ptr, i32 } %3037, 1
  store i32 %3039, ptr %6, align 4
  br label %3048

3040:                                             ; preds = %3021
  %3041 = landingpad { ptr, i32 }
          cleanup
  %3042 = extractvalue { ptr, i32 } %3041, 0
  store ptr %3042, ptr %5, align 8
  %3043 = extractvalue { ptr, i32 } %3041, 1
  store i32 %3043, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #8
  br label %3048

3044:                                             ; preds = %3025
  store i32 0, ptr %273, align 4
  br label %3045

3045:                                             ; preds = %3044, %3035, %3028
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #8
  %3046 = load i32, ptr %273, align 4
  switch i32 %3046, label %3177 [
    i32 0, label %3047
    i32 9, label %3050
  ]

3047:                                             ; preds = %3045
  br label %3070

3048:                                             ; preds = %3040, %3036
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #8
  br label %3080

3049:                                             ; preds = %2992
  br label %3050

3050:                                             ; preds = %3049, %3045
  call void @llvm.lifetime.start.p0(i64 8, ptr %331) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %331)
          to label %3051 unwind label %3056

3051:                                             ; preds = %3050
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #8
  %3052 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %325, i32 0, i32 0
  %3053 = load ptr, ptr %3052, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %332, i32 noundef 1, ptr noundef @.str.3, i32 noundef 115, ptr noundef %3053)
          to label %3054 unwind label %3060

3054:                                             ; preds = %3051
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(8) %331)
          to label %3055 unwind label %3064

3055:                                             ; preds = %3054
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #8
  br label %3070

3056:                                             ; preds = %3050
  %3057 = landingpad { ptr, i32 }
          cleanup
  %3058 = extractvalue { ptr, i32 } %3057, 0
  store ptr %3058, ptr %5, align 8
  %3059 = extractvalue { ptr, i32 } %3057, 1
  store i32 %3059, ptr %6, align 4
  br label %3069

3060:                                             ; preds = %3051
  %3061 = landingpad { ptr, i32 }
          cleanup
  %3062 = extractvalue { ptr, i32 } %3061, 0
  store ptr %3062, ptr %5, align 8
  %3063 = extractvalue { ptr, i32 } %3061, 1
  store i32 %3063, ptr %6, align 4
  br label %3068

3064:                                             ; preds = %3054
  %3065 = landingpad { ptr, i32 }
          cleanup
  %3066 = extractvalue { ptr, i32 } %3065, 0
  store ptr %3066, ptr %5, align 8
  %3067 = extractvalue { ptr, i32 } %3065, 1
  store i32 %3067, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #8
  br label %3068

3068:                                             ; preds = %3064, %3060
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #8
  br label %3069

3069:                                             ; preds = %3068, %3056
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #8
  br label %3080

3070:                                             ; preds = %3055, %3047
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %333) #8
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef @.str.61)
          to label %3071 unwind label %3081

3071:                                             ; preds = %3070
  %3072 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %3073 unwind label %3081

3073:                                             ; preds = %3071
  br i1 %3072, label %3074, label %3130

3074:                                             ; preds = %3073
  call void @llvm.lifetime.start.p0(i64 1, ptr %334) #8
  store i8 0, ptr %334, align 1, !tbaa !18
  %3075 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3076 unwind label %3085

3076:                                             ; preds = %3074
  br i1 %3075, label %3077, label %3115

3077:                                             ; preds = %3076
  call void @llvm.lifetime.start.p0(i64 32, ptr %336) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %337) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %336, ptr noundef @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %337)
          to label %3078 unwind label %3089

3078:                                             ; preds = %3077
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8 %335, ptr noundef nonnull align 8 dereferenceable(32) %336, i1 noundef zeroext false)
          to label %3079 unwind label %3093

3079:                                             ; preds = %3078
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %336) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %336) #8
  br label %3115

3080:                                             ; preds = %3069, %3048, %3000
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #8
  br label %3153

3081:                                             ; preds = %3071, %3070
  %3082 = landingpad { ptr, i32 }
          cleanup
  %3083 = extractvalue { ptr, i32 } %3082, 0
  store ptr %3083, ptr %5, align 8
  %3084 = extractvalue { ptr, i32 } %3082, 1
  store i32 %3084, ptr %6, align 4
  br label %3152

3085:                                             ; preds = %3074
  %3086 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3087 = extractvalue { ptr, i32 } %3086, 0
  store ptr %3087, ptr %5, align 8
  %3088 = extractvalue { ptr, i32 } %3086, 1
  store i32 %3088, ptr %6, align 4
  br label %3098

3089:                                             ; preds = %3077
  %3090 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3091 = extractvalue { ptr, i32 } %3090, 0
  store ptr %3091, ptr %5, align 8
  %3092 = extractvalue { ptr, i32 } %3090, 1
  store i32 %3092, ptr %6, align 4
  br label %3097

3093:                                             ; preds = %3078
  %3094 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  %3095 = extractvalue { ptr, i32 } %3094, 0
  store ptr %3095, ptr %5, align 8
  %3096 = extractvalue { ptr, i32 } %3094, 1
  store i32 %3096, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %336) #8
  br label %3097

3097:                                             ; preds = %3093, %3089
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %337) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %336) #8
  br label %3098

3098:                                             ; preds = %3097, %3085
  %3099 = load i32, ptr %6, align 4
  %3100 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4chen4json5errorE) #8
  %3101 = icmp eq i32 %3099, %3100
  br i1 %3101, label %3102, label %3111

3102:                                             ; preds = %3098
  call void @llvm.lifetime.start.p0(i64 8, ptr %338) #8
  %3103 = load ptr, ptr %5, align 8
  %3104 = call ptr @__cxa_begin_catch(ptr %3103) #8
  store ptr %3104, ptr %338, align 8
  store i8 1, ptr %334, align 1, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %3105 unwind label %3121

3105:                                             ; preds = %3102
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #8
  br label %3106

3106:                                             ; preds = %3115, %3105
  %3107 = load i8, ptr %334, align 1, !tbaa !18, !range !20, !noundef !21
  %3108 = trunc i8 %3107 to i1
  br i1 %3108, label %3125, label %3109

3109:                                             ; preds = %3106
  %3110 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %333, i32 0, i32 0
  store ptr @.str.88, ptr %3110, align 8, !tbaa !22
  store i32 10, ptr %273, align 4
  br label %3126

3111:                                             ; preds = %3098
  %3112 = load ptr, ptr %5, align 8
  %3113 = call ptr @__cxa_begin_catch(ptr %3112) #8
  %3114 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %333, i32 0, i32 0
  store ptr @.str.87, ptr %3114, align 8, !tbaa !22
  store i32 10, ptr %273, align 4
  invoke void @__cxa_end_catch()
          to label %3116 unwind label %3117

3115:                                             ; preds = %3079, %3076
  br label %3106

3116:                                             ; preds = %3111
  br label %3126

3117:                                             ; preds = %3111
  %3118 = landingpad { ptr, i32 }
          cleanup
  %3119 = extractvalue { ptr, i32 } %3118, 0
  store ptr %3119, ptr %5, align 8
  %3120 = extractvalue { ptr, i32 } %3118, 1
  store i32 %3120, ptr %6, align 4
  br label %3129

3121:                                             ; preds = %3102
  %3122 = landingpad { ptr, i32 }
          cleanup
  %3123 = extractvalue { ptr, i32 } %3122, 0
  store ptr %3123, ptr %5, align 8
  %3124 = extractvalue { ptr, i32 } %3122, 1
  store i32 %3124, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #8
  br label %3129

3125:                                             ; preds = %3106
  store i32 0, ptr %273, align 4
  br label %3126

3126:                                             ; preds = %3125, %3116, %3109
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #8
  %3127 = load i32, ptr %273, align 4
  switch i32 %3127, label %3177 [
    i32 0, label %3128
    i32 10, label %3131
  ]

3128:                                             ; preds = %3126
  br label %3151

3129:                                             ; preds = %3121, %3117
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #8
  br label %3152

3130:                                             ; preds = %3073
  br label %3131

3131:                                             ; preds = %3130, %3126
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %339)
          to label %3132 unwind label %3137

3132:                                             ; preds = %3131
  call void @llvm.lifetime.start.p0(i64 8, ptr %340) #8
  %3133 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %333, i32 0, i32 0
  %3134 = load ptr, ptr %3133, align 8, !tbaa !22
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %340, i32 noundef 1, ptr noundef @.str.3, i32 noundef 116, ptr noundef %3134)
          to label %3135 unwind label %3141

3135:                                             ; preds = %3132
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %339)
          to label %3136 unwind label %3145

3136:                                             ; preds = %3135
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #8
  br label %3151

3137:                                             ; preds = %3131
  %3138 = landingpad { ptr, i32 }
          cleanup
  %3139 = extractvalue { ptr, i32 } %3138, 0
  store ptr %3139, ptr %5, align 8
  %3140 = extractvalue { ptr, i32 } %3138, 1
  store i32 %3140, ptr %6, align 4
  br label %3150

3141:                                             ; preds = %3132
  %3142 = landingpad { ptr, i32 }
          cleanup
  %3143 = extractvalue { ptr, i32 } %3142, 0
  store ptr %3143, ptr %5, align 8
  %3144 = extractvalue { ptr, i32 } %3142, 1
  store i32 %3144, ptr %6, align 4
  br label %3149

3145:                                             ; preds = %3135
  %3146 = landingpad { ptr, i32 }
          cleanup
  %3147 = extractvalue { ptr, i32 } %3146, 0
  store ptr %3147, ptr %5, align 8
  %3148 = extractvalue { ptr, i32 } %3146, 1
  store i32 %3148, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #8
  br label %3149

3149:                                             ; preds = %3145, %3141
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #8
  br label %3150

3150:                                             ; preds = %3149, %3137
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #8
  br label %3152

3151:                                             ; preds = %3136, %3128
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #8
  ret void

3152:                                             ; preds = %3150, %3129, %3081
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #8
  br label %3153

3153:                                             ; preds = %3152, %3080, %2999, %2918, %2837, %2756, %2675, %2594, %2513, %2432, %2377, %2327, %2278, %2229, %2180, %2126, %2076, %2027, %1978, %1929, %1880, %1831, %1787, %1739, %1695, %1652, %1609, %1566, %1523, %1480, %1432, %1388, %1345, %1309, %1272, %1235, %1198, %1156, %1112, %1065
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  br label %3154

3154:                                             ; preds = %3153, %1064, %1007, %957, %907, %857, %809, %761, %726, %691, %656, %621, %586, %551, %516, %481, %443
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %3155

3155:                                             ; preds = %3154, %439
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %3156

3156:                                             ; preds = %3155, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %3157

3157:                                             ; preds = %3156, %431
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %3158

3158:                                             ; preds = %3157, %427
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %3159

3159:                                             ; preds = %3158, %423
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %3160

3160:                                             ; preds = %3159, %419
  call void @llvm.lifetime.end.p0(i64 2, ptr %17) #8
  br label %3161

3161:                                             ; preds = %3160, %415
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #8
  br label %3162

3162:                                             ; preds = %3161, %411
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  br label %3163

3163:                                             ; preds = %3162, %407
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  br label %3164

3164:                                             ; preds = %3163, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  br label %3165

3165:                                             ; preds = %3164, %399
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  br label %3166

3166:                                             ; preds = %3165, %395
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br label %3167

3167:                                             ; preds = %3166, %391
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br label %3168

3168:                                             ; preds = %3167, %387
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #8
  br label %3169

3169:                                             ; preds = %3168, %383
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  br label %3170

3170:                                             ; preds = %3169, %379
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #8
  br label %3171

3171:                                             ; preds = %3170, %375
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #8
  br label %3172

3172:                                             ; preds = %3171
  %3173 = load ptr, ptr %5, align 8
  %3174 = load i32, ptr %6, align 4
  %3175 = insertvalue { ptr, i32 } poison, ptr %3173, 0
  %3176 = insertvalue { ptr, i32 } %3175, i32 %3174, 1
  resume { ptr, i32 } %3176

3177:                                             ; preds = %3126, %3045, %2964, %2883, %2802, %2721, %2640, %2559, %2478
  unreachable
}

declare void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZNK4chen4jsoncvSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEEEv(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

declare void @_ZNK4chen4jsoncvSt6vectorIS0_SaIS0_EEEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef double @_ZNK4chen4jsoncvdEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef signext i8 @_ZNK4chen4jsoncvaEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i8 @_ZNK4chen4jsoncvhEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef signext i16 @_ZNK4chen4jsoncvsEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i16 @_ZNK4chen4jsoncvtEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef i32 @_ZNK4chen4jsoncviEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef i32 @_ZNK4chen4jsoncvjEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef i64 @_ZNK4chen4jsoncvlEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef i64 @_ZNK4chen4jsoncvmEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare void @_ZNK4chen4jsoncvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4jsoncvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIddEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

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

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: nounwind
declare void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIiaEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIisEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIitEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIilEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIbbEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16)) #3

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN4chen4json9getNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16)) #3

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

declare void @_ZNK4chen4json8toObjectB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5 align 2

declare void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, ptr noundef) #3

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

declare void @_ZNK4chen4json7toArrayEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

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

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

declare void @_ZN4chen4jsonC1ERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4

declare void @_ZN4chen4jsonC1ERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen4jsonC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

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

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

declare noundef i32 @_ZNK4chen4json11getUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIidEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

declare noundef double @_ZNK4chen4json8toNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

declare noundef i32 @_ZNK4chen4json9toIntegerEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef i32 @_ZNK4chen4json10toUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare void @_ZNK4chen4json8toStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json6toBoolEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

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

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

declare void @_ZN4chen4jsonC1EOSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3

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

declare void @_ZN4chen4jsonC1EOSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ei(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6isBoolEv(ptr noundef nonnull align 8 dereferenceable(16)) #3

declare void @_ZN4chen4jsonC1EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) unnamed_addr #3

declare void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #3

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

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

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() #3

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = !{!23, !6, i64 0}
!23 = !{!"_ZTSN7testing8internal12ConstCharPtrE", !6, i64 0}


; 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.chen::json" = type { i32, %"union.chen::json::Data" }
%"union.chen::json::Data" = type { ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl" }
%"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl" = type { %"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_Vector_impl_data" }
%"struct.std::_Vector_base<chen::json, std::allocator<chen::json>>::_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.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr" }
%"class.testing::internal::scoped_ptr" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.8" }
%"class.testing::internal::scoped_ptr.8" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::allocator" = type { i8 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIN4chen4json5errorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [99 x i8], align 1

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

; Function Attrs: mustprogress 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

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 nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 uwtable
define dso_local void @_ZN22DataJsonTest_Type_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.chen::json", align 8
  %3 = alloca %"class.chen::json", align 8
  %4 = alloca %"class.chen::json", align 8
  %5 = alloca %"class.chen::json", align 8
  %6 = alloca %"class.chen::json", align 8
  %7 = alloca %"class.chen::json", align 8
  %8 = alloca %"class.std::unordered_map", align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca double, align 8
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i16, align 2
  %14 = alloca i16, align 2
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i8, align 1
  %21 = alloca %"class.testing::AssertionResult", align 8
  %22 = alloca double, align 8
  %23 = alloca %"class.testing::Message", align 8
  %24 = alloca %"class.testing::internal::AssertHelper", align 8
  %25 = alloca %"class.testing::AssertionResult", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.testing::Message", align 8
  %28 = alloca %"class.testing::internal::AssertHelper", align 8
  %29 = alloca %"class.testing::AssertionResult", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.testing::Message", align 8
  %32 = alloca %"class.testing::internal::AssertHelper", align 8
  %33 = alloca %"class.testing::AssertionResult", align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.testing::Message", align 8
  %36 = alloca %"class.testing::internal::AssertHelper", align 8
  %37 = alloca %"class.testing::AssertionResult", align 8
  %38 = alloca i32, align 4
  %39 = alloca %"class.testing::Message", align 8
  %40 = alloca %"class.testing::internal::AssertHelper", align 8
  %41 = alloca %"class.testing::AssertionResult", align 8
  %42 = alloca i32, align 4
  %43 = alloca %"class.testing::Message", align 8
  %44 = alloca %"class.testing::internal::AssertHelper", align 8
  %45 = alloca %"class.testing::AssertionResult", align 8
  %46 = alloca i32, align 4
  %47 = alloca %"class.testing::Message", align 8
  %48 = alloca %"class.testing::internal::AssertHelper", align 8
  %49 = alloca %"class.testing::AssertionResult", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"class.testing::Message", align 8
  %52 = alloca %"class.testing::internal::AssertHelper", align 8
  %53 = alloca %"class.testing::AssertionResult", align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.testing::Message", align 8
  %56 = alloca %"class.testing::internal::AssertHelper", align 8
  %57 = alloca %"class.testing::AssertionResult", align 8
  %58 = alloca i8, align 1
  %59 = alloca %"class.testing::Message", align 8
  %60 = alloca %"class.testing::internal::AssertHelper", align 8
  %61 = alloca %"class.testing::AssertionResult", align 8
  %62 = alloca i8, align 1
  %63 = alloca %"class.std::unordered_map", align 8
  %64 = alloca %"class.testing::Message", align 8
  %65 = alloca %"class.testing::internal::AssertHelper", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.testing::AssertionResult", align 8
  %68 = alloca i8, align 1
  %69 = alloca %"class.std::vector", align 8
  %70 = alloca %"class.testing::Message", align 8
  %71 = alloca %"class.testing::internal::AssertHelper", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.testing::AssertionResult", align 8
  %74 = alloca i8, align 1
  %75 = alloca %"class.chen::json", align 8
  %76 = alloca %"class.testing::Message", align 8
  %77 = alloca %"class.testing::internal::AssertHelper", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.testing::AssertionResult", align 8
  %80 = alloca i8, align 1
  %81 = alloca %"class.chen::json", align 8
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"class.testing::internal::AssertHelper", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.testing::AssertionResult", align 8
  %86 = alloca i8, align 1
  %87 = alloca %"class.chen::json", align 8
  %88 = alloca %"class.testing::Message", align 8
  %89 = alloca %"class.testing::internal::AssertHelper", align 8
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.chen::json", align 8
  %92 = alloca %"class.chen::json", align 8
  %93 = alloca %"class.chen::json", align 8
  %94 = alloca %"class.chen::json", align 8
  %95 = alloca %"class.testing::AssertionResult", align 8
  %96 = alloca i8, align 1
  %97 = alloca %"class.testing::Message", align 8
  %98 = alloca %"class.testing::internal::AssertHelper", align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.testing::AssertionResult", align 8
  %101 = alloca i8, align 1
  %102 = alloca %"class.testing::Message", align 8
  %103 = alloca %"class.testing::internal::AssertHelper", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.testing::AssertionResult", align 8
  %106 = alloca i8, align 1
  %107 = alloca %"class.testing::Message", align 8
  %108 = alloca %"class.testing::internal::AssertHelper", align 8
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.testing::AssertionResult", align 8
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca %"class.testing::Message", align 8
  %114 = alloca %"class.testing::internal::AssertHelper", align 8
  %115 = alloca %"class.testing::AssertionResult", align 8
  %116 = alloca i32, align 4
  %117 = alloca double, align 8
  %118 = alloca %"class.testing::Message", align 8
  %119 = alloca %"class.testing::internal::AssertHelper", align 8
  %120 = alloca %"class.testing::AssertionResult", align 8
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca %"class.testing::Message", align 8
  %124 = alloca %"class.testing::internal::AssertHelper", align 8
  %125 = alloca %"class.testing::AssertionResult", align 8
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca %"class.testing::Message", align 8
  %129 = alloca %"class.testing::internal::AssertHelper", align 8
  %130 = alloca %"class.testing::AssertionResult", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.testing::Message", align 8
  %133 = alloca %"class.testing::internal::AssertHelper", align 8
  %134 = alloca %"class.testing::AssertionResult", align 8
  %135 = alloca i8, align 1
  %136 = alloca %"class.testing::Message", align 8
  %137 = alloca %"class.testing::internal::AssertHelper", align 8
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.testing::AssertionResult", align 8
  %140 = alloca i8, align 1
  %141 = alloca %"class.chen::json", align 8
  %142 = alloca %"class.testing::Message", align 8
  %143 = alloca %"class.testing::internal::AssertHelper", align 8
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.testing::AssertionResult", align 8
  %146 = alloca i8, align 1
  %147 = alloca %"class.testing::Message", align 8
  %148 = alloca %"class.testing::internal::AssertHelper", align 8
  %149 = alloca %"class.std::__cxx11::basic_string", align 8
  %150 = alloca %"class.testing::AssertionResult", align 8
  %151 = alloca i8, align 1
  %152 = alloca %"class.testing::Message", align 8
  %153 = alloca %"class.testing::internal::AssertHelper", align 8
  %154 = alloca %"class.std::__cxx11::basic_string", align 8
  %155 = alloca %"class.testing::AssertionResult", align 8
  %156 = alloca i8, align 1
  %157 = alloca %"class.testing::Message", align 8
  %158 = alloca %"class.testing::internal::AssertHelper", align 8
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.testing::AssertionResult", align 8
  %161 = alloca i8, align 1
  %162 = alloca %"class.testing::Message", align 8
  %163 = alloca %"class.testing::internal::AssertHelper", align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.testing::AssertionResult", align 8
  %166 = alloca i8, align 1
  %167 = alloca %"class.testing::Message", align 8
  %168 = alloca %"class.testing::internal::AssertHelper", align 8
  %169 = alloca %"class.std::__cxx11::basic_string", align 8
  %170 = alloca %"class.testing::AssertionResult", align 8
  %171 = alloca i8, align 1
  %172 = alloca %"class.testing::Message", align 8
  %173 = alloca %"class.testing::internal::AssertHelper", align 8
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca %"class.testing::AssertionResult", align 8
  %176 = alloca i8, align 1
  %177 = alloca %"class.chen::json", align 8
  %178 = alloca %"class.testing::Message", align 8
  %179 = alloca %"class.testing::internal::AssertHelper", align 8
  %180 = alloca %"class.std::__cxx11::basic_string", align 8
  %181 = alloca %"class.testing::AssertionResult", align 8
  %182 = alloca i8, align 1
  %183 = alloca %"class.chen::json", align 8
  %184 = alloca %"class.testing::Message", align 8
  %185 = alloca %"class.testing::internal::AssertHelper", align 8
  %186 = alloca %"class.std::__cxx11::basic_string", align 8
  %187 = alloca %"class.testing::AssertionResult", align 8
  %188 = alloca i8, align 1
  %189 = alloca %"class.chen::json", align 8
  %190 = alloca %"class.std::unordered_map", align 8
  %191 = alloca %"class.testing::Message", align 8
  %192 = alloca %"class.testing::internal::AssertHelper", align 8
  %193 = alloca %"class.std::__cxx11::basic_string", align 8
  %194 = alloca %"class.testing::AssertionResult", align 8
  %195 = alloca i8, align 1
  %196 = alloca %"class.chen::json", align 8
  %197 = alloca %"class.std::vector", align 8
  %198 = alloca %"class.testing::Message", align 8
  %199 = alloca %"class.testing::internal::AssertHelper", align 8
  %200 = alloca %"class.std::__cxx11::basic_string", align 8
  %201 = alloca %"class.testing::AssertionResult", align 8
  %202 = alloca i8, align 1
  %203 = alloca %"class.chen::json", align 8
  %204 = alloca %"class.testing::Message", align 8
  %205 = alloca %"class.testing::internal::AssertHelper", align 8
  %206 = alloca %"class.std::__cxx11::basic_string", align 8
  %207 = alloca %"class.testing::AssertionResult", align 8
  %208 = alloca i8, align 1
  %209 = alloca %"class.chen::json", align 8
  %210 = alloca %"class.testing::Message", align 8
  %211 = alloca %"class.testing::internal::AssertHelper", align 8
  %212 = alloca %"class.std::__cxx11::basic_string", align 8
  %213 = alloca %"class.testing::AssertionResult", align 8
  %214 = alloca i8, align 1
  %215 = alloca %"class.chen::json", align 8
  %216 = alloca %"class.testing::Message", align 8
  %217 = alloca %"class.testing::internal::AssertHelper", align 8
  %218 = alloca %"class.std::__cxx11::basic_string", align 8
  %219 = alloca %"class.testing::AssertionResult", align 8
  %220 = alloca i8, align 1
  %221 = alloca %"class.chen::json", align 8
  %222 = alloca %"class.testing::Message", align 8
  %223 = alloca %"class.testing::internal::AssertHelper", align 8
  %224 = alloca %"class.std::__cxx11::basic_string", align 8
  %225 = alloca %"class.testing::AssertionResult", align 8
  %226 = alloca i8, align 1
  %227 = alloca %"class.chen::json", align 8
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::allocator", align 1
  %230 = alloca %"class.testing::Message", align 8
  %231 = alloca %"class.testing::internal::AssertHelper", align 8
  %232 = alloca %"class.std::__cxx11::basic_string", align 8
  %233 = alloca %"class.testing::AssertionResult", align 8
  %234 = alloca i8, align 1
  %235 = alloca %"class.chen::json", align 8
  %236 = alloca %"class.testing::Message", align 8
  %237 = alloca %"class.testing::internal::AssertHelper", align 8
  %238 = alloca %"class.std::__cxx11::basic_string", align 8
  %239 = alloca %"class.testing::AssertionResult", align 8
  %240 = alloca i8, align 1
  %241 = alloca %"class.chen::json", align 8
  %242 = alloca %"class.testing::Message", align 8
  %243 = alloca %"class.testing::internal::AssertHelper", align 8
  %244 = alloca %"class.std::__cxx11::basic_string", align 8
  %245 = alloca %"class.testing::AssertionResult", align 8
  %246 = alloca i8, align 1
  %247 = alloca %"class.chen::json", align 8
  %248 = alloca %"class.testing::Message", align 8
  %249 = alloca %"class.testing::internal::AssertHelper", align 8
  %250 = alloca %"class.std::__cxx11::basic_string", align 8
  %251 = alloca %"class.testing::AssertionResult", align 8
  %252 = alloca i8, align 1
  %253 = alloca %"class.chen::json", align 8
  %254 = alloca %"class.testing::Message", align 8
  %255 = alloca %"class.testing::internal::AssertHelper", align 8
  %256 = alloca %"class.std::__cxx11::basic_string", align 8
  %257 = alloca %"class.testing::AssertionResult", align 8
  %258 = alloca i8, align 1
  %259 = alloca %"class.chen::json", align 8
  %260 = alloca %"class.std::__cxx11::basic_string", align 8
  %261 = alloca %"class.std::allocator", align 1
  %262 = alloca %"class.testing::Message", align 8
  %263 = alloca %"class.testing::internal::AssertHelper", align 8
  %264 = alloca %"class.std::__cxx11::basic_string", align 8
  %265 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %266 = alloca %"class.chen::json", align 8
  %267 = alloca %"class.std::__cxx11::basic_string", align 8
  %268 = alloca %"class.std::allocator", align 1
  %269 = alloca %"class.testing::Message", align 8
  %270 = alloca %"class.testing::internal::AssertHelper", align 8
  %271 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %272 = alloca %"class.chen::json", align 8
  %273 = alloca %"class.std::__cxx11::basic_string", align 8
  %274 = alloca %"class.std::allocator", align 1
  %275 = alloca %"class.testing::Message", align 8
  %276 = alloca %"class.testing::internal::AssertHelper", align 8
  %277 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %278 = alloca %"class.chen::json", align 8
  %279 = alloca %"class.std::__cxx11::basic_string", align 8
  %280 = alloca %"class.std::allocator", align 1
  %281 = alloca %"class.testing::Message", align 8
  %282 = alloca %"class.testing::internal::AssertHelper", align 8
  %283 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %284 = alloca %"class.chen::json", align 8
  %285 = alloca %"class.std::__cxx11::basic_string", align 8
  %286 = alloca %"class.std::allocator", align 1
  %287 = alloca %"class.testing::Message", align 8
  %288 = alloca %"class.testing::internal::AssertHelper", align 8
  %289 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %290 = alloca %"class.chen::json", align 8
  %291 = alloca %"class.std::__cxx11::basic_string", align 8
  %292 = alloca %"class.std::allocator", align 1
  %293 = alloca %"class.testing::Message", align 8
  %294 = alloca %"class.testing::internal::AssertHelper", align 8
  %295 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %296 = alloca %"class.chen::json", align 8
  %297 = alloca %"class.std::__cxx11::basic_string", align 8
  %298 = alloca %"class.std::allocator", align 1
  %299 = alloca %"class.testing::Message", align 8
  %300 = alloca %"class.testing::internal::AssertHelper", align 8
  %301 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %302 = alloca %"class.chen::json", align 8
  %303 = alloca %"class.std::__cxx11::basic_string", align 8
  %304 = alloca %"class.std::allocator", align 1
  %305 = alloca %"class.testing::Message", align 8
  %306 = alloca %"class.testing::internal::AssertHelper", align 8
  %307 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %308 = alloca %"class.chen::json", align 8
  %309 = alloca %"class.std::__cxx11::basic_string", align 8
  %310 = alloca %"class.std::allocator", align 1
  %311 = alloca %"class.testing::Message", align 8
  %312 = alloca %"class.testing::internal::AssertHelper", align 8
  %313 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %314 = alloca %"class.chen::json", align 8
  %315 = alloca %"class.std::__cxx11::basic_string", align 8
  %316 = alloca %"class.std::allocator", align 1
  %317 = alloca %"class.testing::Message", align 8
  %318 = alloca %"class.testing::internal::AssertHelper", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #8
  call void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %2, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 2)
          to label %319 unwind label %350

319:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef 3)
          to label %320 unwind label %352

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef 4)
          to label %321 unwind label %354

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef 5)
          to label %322 unwind label %356

322:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 6)
          to label %323 unwind label %358

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) #8
  invoke void @_ZNK4chen4jsoncvSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEEEv(ptr dead_on_unwind nonnull writable sret(%"class.std::unordered_map") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %324 unwind label %360

324:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  invoke void @_ZNK4chen4jsoncvSt6vectorIS0_SaIS0_EEEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %325 unwind label %362

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %326 = invoke noundef double @_ZNK4chen4jsoncvdEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %327 unwind label %364

327:                                              ; preds = %325
  store double %326, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  %328 = invoke noundef signext i8 @_ZNK4chen4jsoncvaEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %329 unwind label %366

329:                                              ; preds = %327
  store i8 %328, ptr %11, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  %330 = invoke noundef zeroext i8 @_ZNK4chen4jsoncvhEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %331 unwind label %368

331:                                              ; preds = %329
  store i8 %330, ptr %12, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %13) #8
  %332 = invoke noundef signext i16 @_ZNK4chen4jsoncvsEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %333 unwind label %370

333:                                              ; preds = %331
  store i16 %332, ptr %13, align 2, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %14) #8
  %334 = invoke noundef zeroext i16 @_ZNK4chen4jsoncvtEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %335 unwind label %372

335:                                              ; preds = %333
  store i16 %334, ptr %14, align 2, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  %336 = invoke noundef i32 @_ZNK4chen4jsoncviEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %337 unwind label %374

337:                                              ; preds = %335
  store i32 %336, ptr %15, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  %338 = invoke noundef i32 @_ZNK4chen4jsoncvjEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %339 unwind label %376

339:                                              ; preds = %337
  store i32 %338, ptr %16, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %340 = invoke noundef i64 @_ZNK4chen4jsoncvlEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %341 unwind label %378

341:                                              ; preds = %339
  store i64 %340, ptr %17, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %342 = invoke noundef i64 @_ZNK4chen4jsoncvmEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %343 unwind label %380

343:                                              ; preds = %341
  store i64 %342, ptr %18, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  invoke void @_ZNK4chen4jsoncvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %344 unwind label %382

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  %345 = invoke noundef zeroext i1 @_ZNK4chen4jsoncvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %346 unwind label %384

346:                                              ; preds = %344
  %347 = zext i1 %345 to i8
  store i8 %347, ptr %20, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  store double 0.000000e+00, ptr %22, align 8, !tbaa !5
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIddEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %21, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %348 unwind label %386

348:                                              ; preds = %346
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  %349 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
  br i1 %349, label %402, label %388

350:                                              ; preds = %1
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %1944

352:                                              ; preds = %319
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %1943

354:                                              ; preds = %320
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %1942

356:                                              ; preds = %321
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %1941

358:                                              ; preds = %322
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %1940

360:                                              ; preds = %323
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %1939

362:                                              ; preds = %324
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %1938

364:                                              ; preds = %325
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %1937

366:                                              ; preds = %327
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %1936

368:                                              ; preds = %329
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %1935

370:                                              ; preds = %331
  %371 = landingpad { ptr, i32 }
          cleanup
  br label %1934

372:                                              ; preds = %333
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %1933

374:                                              ; preds = %335
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %1932

376:                                              ; preds = %337
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %1931

378:                                              ; preds = %339
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %1930

380:                                              ; preds = %341
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %1929

382:                                              ; preds = %343
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %1928

384:                                              ; preds = %590, %588, %586, %584, %582, %344
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %1927

386:                                              ; preds = %346
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %405

388:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %389 unwind label %394

389:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %390 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %391 unwind label %396

391:                                              ; preds = %389
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %24, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 40, ptr noundef %390)
          to label %392 unwind label %396

392:                                              ; preds = %391
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %393 unwind label %398

393:                                              ; preds = %392
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %402

394:                                              ; preds = %388
  %395 = landingpad { ptr, i32 }
          cleanup
  br label %401

396:                                              ; preds = %391, %389
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %400

398:                                              ; preds = %392
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %400

400:                                              ; preds = %398, %396
  %.pn = phi { ptr, i32 } [ %399, %398 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %401

401:                                              ; preds = %400, %394
  %.pn.pn = phi { ptr, i32 } [ %.pn, %400 ], [ %395, %394 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  br label %405

402:                                              ; preds = %348, %393
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  store i32 0, ptr %26, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIiaEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %25, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef null)
          to label %403 unwind label %406

403:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  %404 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
  br i1 %404, label %422, label %408

405:                                              ; preds = %401, %386
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %401 ], [ %387, %386 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %1927

406:                                              ; preds = %402
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  br label %425

408:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %409 unwind label %414

409:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %410 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %411 unwind label %416

411:                                              ; preds = %409
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 41, ptr noundef %410)
          to label %412 unwind label %416

412:                                              ; preds = %411
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %413 unwind label %418

413:                                              ; preds = %412
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %422

414:                                              ; preds = %408
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %421

416:                                              ; preds = %411, %409
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %420

418:                                              ; preds = %412
  %419 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %420

420:                                              ; preds = %418, %416
  %.pn379 = phi { ptr, i32 } [ %419, %418 ], [ %417, %416 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %421

421:                                              ; preds = %420, %414
  %.pn379.pn = phi { ptr, i32 } [ %.pn379, %420 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br label %425

422:                                              ; preds = %403, %413
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #8
  store i32 0, ptr %30, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %29, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef null)
          to label %423 unwind label %426

423:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  %424 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
  br i1 %424, label %442, label %428

425:                                              ; preds = %421, %406
  %.pn379.pn.pn = phi { ptr, i32 } [ %.pn379.pn, %421 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %1927

426:                                              ; preds = %422
  %427 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  br label %445

428:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %429 unwind label %434

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %430 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %431 unwind label %436

431:                                              ; preds = %429
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 42, ptr noundef %430)
          to label %432 unwind label %436

432:                                              ; preds = %431
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %433 unwind label %438

433:                                              ; preds = %432
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %442

434:                                              ; preds = %428
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %441

436:                                              ; preds = %431, %429
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %440

438:                                              ; preds = %432
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br label %440

440:                                              ; preds = %438, %436
  %.pn383 = phi { ptr, i32 } [ %439, %438 ], [ %437, %436 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %441

441:                                              ; preds = %440, %434
  %.pn383.pn = phi { ptr, i32 } [ %.pn383, %440 ], [ %435, %434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #8
  br label %445

442:                                              ; preds = %423, %433
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #8
  store i32 0, ptr %34, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIisEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %33, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 2 dereferenceable(2) %13, ptr noundef null)
          to label %443 unwind label %446

443:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #8
  %444 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  br i1 %444, label %462, label %448

445:                                              ; preds = %441, %426
  %.pn383.pn.pn = phi { ptr, i32 } [ %.pn383.pn, %441 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  br label %1927

446:                                              ; preds = %442
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #8
  br label %465

448:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %449 unwind label %454

449:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  %450 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %451 unwind label %456

451:                                              ; preds = %449
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 43, ptr noundef %450)
          to label %452 unwind label %456

452:                                              ; preds = %451
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %453 unwind label %458

453:                                              ; preds = %452
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  br label %462

454:                                              ; preds = %448
  %455 = landingpad { ptr, i32 }
          cleanup
  br label %461

456:                                              ; preds = %451, %449
  %457 = landingpad { ptr, i32 }
          cleanup
  br label %460

458:                                              ; preds = %452
  %459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %460

460:                                              ; preds = %458, %456
  %.pn387 = phi { ptr, i32 } [ %459, %458 ], [ %457, %456 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %461

461:                                              ; preds = %460, %454
  %.pn387.pn = phi { ptr, i32 } [ %.pn387, %460 ], [ %455, %454 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  br label %465

462:                                              ; preds = %443, %453
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #8
  store i32 0, ptr %38, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIitEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %37, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.10, ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 2 dereferenceable(2) %14, ptr noundef null)
          to label %463 unwind label %466

463:                                              ; preds = %462
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  %464 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  br i1 %464, label %482, label %468

465:                                              ; preds = %461, %446
  %.pn387.pn.pn = phi { ptr, i32 } [ %.pn387.pn, %461 ], [ %447, %446 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %1927

466:                                              ; preds = %462
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  br label %485

468:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %469 unwind label %474

469:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  %470 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %471 unwind label %476

471:                                              ; preds = %469
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 44, ptr noundef %470)
          to label %472 unwind label %476

472:                                              ; preds = %471
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %473 unwind label %478

473:                                              ; preds = %472
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %482

474:                                              ; preds = %468
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %481

476:                                              ; preds = %471, %469
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %480

478:                                              ; preds = %472
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %480

480:                                              ; preds = %478, %476
  %.pn391 = phi { ptr, i32 } [ %479, %478 ], [ %477, %476 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %481

481:                                              ; preds = %480, %474
  %.pn391.pn = phi { ptr, i32 } [ %.pn391, %480 ], [ %475, %474 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  br label %485

482:                                              ; preds = %463, %473
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #8
  store i32 0, ptr %42, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %41, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.11, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef null)
          to label %483 unwind label %486

483:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  %484 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  br i1 %484, label %502, label %488

485:                                              ; preds = %481, %466
  %.pn391.pn.pn = phi { ptr, i32 } [ %.pn391.pn, %481 ], [ %467, %466 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #8
  br label %1927

486:                                              ; preds = %482
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  br label %505

488:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %489 unwind label %494

489:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %490 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %491 unwind label %496

491:                                              ; preds = %489
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %44, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 45, ptr noundef %490)
          to label %492 unwind label %496

492:                                              ; preds = %491
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %493 unwind label %498

493:                                              ; preds = %492
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %502

494:                                              ; preds = %488
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %501

496:                                              ; preds = %491, %489
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %500

498:                                              ; preds = %492
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br label %500

500:                                              ; preds = %498, %496
  %.pn395 = phi { ptr, i32 } [ %499, %498 ], [ %497, %496 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %501

501:                                              ; preds = %500, %494
  %.pn395.pn = phi { ptr, i32 } [ %.pn395, %500 ], [ %495, %494 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  br label %505

502:                                              ; preds = %483, %493
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #8
  store i32 0, ptr %46, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %45, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef null)
          to label %503 unwind label %506

503:                                              ; preds = %502
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #8
  %504 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
  br i1 %504, label %522, label %508

505:                                              ; preds = %501, %486
  %.pn395.pn.pn = phi { ptr, i32 } [ %.pn395.pn, %501 ], [ %487, %486 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  br label %1927

506:                                              ; preds = %502
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #8
  br label %525

508:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %509 unwind label %514

509:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #8
  %510 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %511 unwind label %516

511:                                              ; preds = %509
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 46, ptr noundef %510)
          to label %512 unwind label %516

512:                                              ; preds = %511
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %513 unwind label %518

513:                                              ; preds = %512
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  br label %522

514:                                              ; preds = %508
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %521

516:                                              ; preds = %511, %509
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %520

518:                                              ; preds = %512
  %519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %520

520:                                              ; preds = %518, %516
  %.pn399 = phi { ptr, i32 } [ %519, %518 ], [ %517, %516 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %521

521:                                              ; preds = %520, %514
  %.pn399.pn = phi { ptr, i32 } [ %.pn399, %520 ], [ %515, %514 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  br label %525

522:                                              ; preds = %503, %513
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #8
  store i32 0, ptr %50, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIilEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %49, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.14, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef null)
          to label %523 unwind label %526

523:                                              ; preds = %522
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #8
  %524 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
  br i1 %524, label %542, label %528

525:                                              ; preds = %521, %506
  %.pn399.pn.pn = phi { ptr, i32 } [ %.pn399.pn, %521 ], [ %507, %506 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  br label %1927

526:                                              ; preds = %522
  %527 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #8
  br label %545

528:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %529 unwind label %534

529:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %530 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %531 unwind label %536

531:                                              ; preds = %529
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 47, ptr noundef %530)
          to label %532 unwind label %536

532:                                              ; preds = %531
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %533 unwind label %538

533:                                              ; preds = %532
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %542

534:                                              ; preds = %528
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %541

536:                                              ; preds = %531, %529
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %540

538:                                              ; preds = %532
  %539 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %540

540:                                              ; preds = %538, %536
  %.pn403 = phi { ptr, i32 } [ %539, %538 ], [ %537, %536 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %541

541:                                              ; preds = %540, %534
  %.pn403.pn = phi { ptr, i32 } [ %.pn403, %540 ], [ %535, %534 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #8
  br label %545

542:                                              ; preds = %523, %533
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #8
  store i32 0, ptr %54, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb1EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %53, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.15, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef null)
          to label %543 unwind label %546

543:                                              ; preds = %542
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #8
  %544 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
  br i1 %544, label %562, label %548

545:                                              ; preds = %541, %526
  %.pn403.pn.pn = phi { ptr, i32 } [ %.pn403.pn, %541 ], [ %527, %526 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  br label %1927

546:                                              ; preds = %542
  %547 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #8
  br label %565

548:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %549 unwind label %554

549:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #8
  %550 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %551 unwind label %556

551:                                              ; preds = %549
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 48, ptr noundef %550)
          to label %552 unwind label %556

552:                                              ; preds = %551
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %553 unwind label %558

553:                                              ; preds = %552
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  br label %562

554:                                              ; preds = %548
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %561

556:                                              ; preds = %551, %549
  %557 = landingpad { ptr, i32 }
          cleanup
  br label %560

558:                                              ; preds = %552
  %559 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %560

560:                                              ; preds = %558, %556
  %.pn407 = phi { ptr, i32 } [ %559, %558 ], [ %557, %556 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %561

561:                                              ; preds = %560, %554
  %.pn407.pn = phi { ptr, i32 } [ %.pn407, %560 ], [ %555, %554 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #8
  br label %565

562:                                              ; preds = %543, %553
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #8
  store i8 1, ptr %58, align 1, !tbaa !16
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIbbEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %57, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %58, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %563 unwind label %566

563:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #8
  %564 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %57)
  br i1 %564, label %582, label %568

565:                                              ; preds = %561, %546
  %.pn407.pn.pn = phi { ptr, i32 } [ %.pn407.pn, %561 ], [ %547, %546 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  br label %1927

566:                                              ; preds = %562
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #8
  br label %598

568:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %569 unwind label %574

569:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #8
  %570 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %571 unwind label %576

571:                                              ; preds = %569
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 49, ptr noundef %570)
          to label %572 unwind label %576

572:                                              ; preds = %571
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %573 unwind label %578

573:                                              ; preds = %572
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  br label %582

574:                                              ; preds = %568
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %581

576:                                              ; preds = %571, %569
  %577 = landingpad { ptr, i32 }
          cleanup
  br label %580

578:                                              ; preds = %572
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  br label %580

580:                                              ; preds = %578, %576
  %.pn411 = phi { ptr, i32 } [ %579, %578 ], [ %577, %576 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %581

581:                                              ; preds = %580, %574
  %.pn411.pn = phi { ptr, i32 } [ %.pn411, %580 ], [ %575, %574 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #8
  br label %598

582:                                              ; preds = %563, %573
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #8
  %583 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %584 unwind label %384

584:                                              ; preds = %582
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %583) #8
  %585 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %586 unwind label %384

586:                                              ; preds = %584
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %585) #8
  %587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4chen4json9getNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %588 unwind label %384

588:                                              ; preds = %586
  store double 1.150000e+02, ptr %587, align 8, !tbaa !5
  %589 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %590 unwind label %384

590:                                              ; preds = %588
  %591 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %589, ptr noundef nonnull @.str.18)
          to label %592 unwind label %384

592:                                              ; preds = %590
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %63) #8
  invoke void @_ZNK4chen4json8toObjectB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::unordered_map") align 8 %63, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %593 unwind label %599

593:                                              ; preds = %592
  %594 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %63) #8
  %595 = zext i1 %594 to i8
  store i8 %595, ptr %62, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull align 1 dereferenceable(1) %62, ptr noundef null)
          to label %596 unwind label %601

596:                                              ; preds = %593
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %63) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #8
  %597 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
  br i1 %597, label %621, label %604

598:                                              ; preds = %581, %566
  %.pn411.pn.pn = phi { ptr, i32 } [ %.pn411.pn, %581 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #8
  br label %1927

599:                                              ; preds = %592
  %600 = landingpad { ptr, i32 }
          cleanup
  br label %603

601:                                              ; preds = %593
  %602 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %63) #8
  br label %603

603:                                              ; preds = %601, %599
  %.pn415 = phi { ptr, i32 } [ %602, %601 ], [ %600, %599 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #8
  br label %627

604:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %605 unwind label %610

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %606 unwind label %612

606:                                              ; preds = %605
  %607 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 56, ptr noundef %607)
          to label %608 unwind label %614

608:                                              ; preds = %606
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %609 unwind label %616

609:                                              ; preds = %608
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %621

610:                                              ; preds = %604
  %611 = landingpad { ptr, i32 }
          cleanup
  br label %620

612:                                              ; preds = %605
  %613 = landingpad { ptr, i32 }
          cleanup
  br label %619

614:                                              ; preds = %606
  %615 = landingpad { ptr, i32 }
          cleanup
  br label %618

616:                                              ; preds = %608
  %617 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %618

618:                                              ; preds = %616, %614
  %.pn417 = phi { ptr, i32 } [ %617, %616 ], [ %615, %614 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %619

619:                                              ; preds = %618, %612
  %.pn417.pn = phi { ptr, i32 } [ %.pn417, %618 ], [ %613, %612 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %620

620:                                              ; preds = %619, %610
  %.pn417.pn.pn = phi { ptr, i32 } [ %.pn417.pn, %619 ], [ %611, %610 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #8
  br label %627

621:                                              ; preds = %596, %609
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #8
  invoke void @_ZNK4chen4json7toArrayEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %622 unwind label %628

622:                                              ; preds = %621
  %623 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  %624 = zext i1 %623 to i8
  store i8 %624, ptr %68, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef null)
          to label %625 unwind label %630

625:                                              ; preds = %622
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #8
  %626 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %67)
  br i1 %626, label %650, label %633

627:                                              ; preds = %620, %603
  %.pn417.pn.pn.pn = phi { ptr, i32 } [ %.pn417.pn.pn, %620 ], [ %.pn415, %603 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #8
  br label %1927

628:                                              ; preds = %621
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %632

630:                                              ; preds = %622
  %631 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  br label %632

632:                                              ; preds = %630, %628
  %.pn422 = phi { ptr, i32 } [ %631, %630 ], [ %629, %628 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #8
  br label %658

633:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %634 unwind label %639

634:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %635 unwind label %641

635:                                              ; preds = %634
  %636 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %71, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 57, ptr noundef %636)
          to label %637 unwind label %643

637:                                              ; preds = %635
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %638 unwind label %645

638:                                              ; preds = %637
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  br label %650

639:                                              ; preds = %633
  %640 = landingpad { ptr, i32 }
          cleanup
  br label %649

641:                                              ; preds = %634
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %648

643:                                              ; preds = %635
  %644 = landingpad { ptr, i32 }
          cleanup
  br label %647

645:                                              ; preds = %637
  %646 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  br label %647

647:                                              ; preds = %645, %643
  %.pn424 = phi { ptr, i32 } [ %646, %645 ], [ %644, %643 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %648

648:                                              ; preds = %647, %641
  %.pn424.pn = phi { ptr, i32 } [ %.pn424, %647 ], [ %642, %641 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %649

649:                                              ; preds = %648, %639
  %.pn424.pn.pn = phi { ptr, i32 } [ %.pn424.pn, %648 ], [ %640, %639 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  br label %658

650:                                              ; preds = %625, %638
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #8
  invoke void @_ZN4chen4jsonC1ERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %651 unwind label %659

651:                                              ; preds = %650
  %652 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %75)
          to label %653 unwind label %661

653:                                              ; preds = %651
  %654 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %652) #8
  %655 = zext i1 %654 to i8
  store i8 %655, ptr %74, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 1 dereferenceable(1) %74, ptr noundef null)
          to label %656 unwind label %661

656:                                              ; preds = %653
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #8
  %657 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
  br i1 %657, label %681, label %664

658:                                              ; preds = %649, %632
  %.pn424.pn.pn.pn = phi { ptr, i32 } [ %.pn424.pn.pn, %649 ], [ %.pn422, %632 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  br label %1927

659:                                              ; preds = %650
  %660 = landingpad { ptr, i32 }
          cleanup
  br label %663

661:                                              ; preds = %653, %651
  %662 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #8
  br label %663

663:                                              ; preds = %661, %659
  %.pn429 = phi { ptr, i32 } [ %662, %661 ], [ %660, %659 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #8
  br label %689

664:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %665 unwind label %670

665:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %666 unwind label %672

666:                                              ; preds = %665
  %667 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %77, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 59, ptr noundef %667)
          to label %668 unwind label %674

668:                                              ; preds = %666
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %669 unwind label %676

669:                                              ; preds = %668
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #8
  br label %681

670:                                              ; preds = %664
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %680

672:                                              ; preds = %665
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %679

674:                                              ; preds = %666
  %675 = landingpad { ptr, i32 }
          cleanup
  br label %678

676:                                              ; preds = %668
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %678

678:                                              ; preds = %676, %674
  %.pn431 = phi { ptr, i32 } [ %677, %676 ], [ %675, %674 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %679

679:                                              ; preds = %678, %672
  %.pn431.pn = phi { ptr, i32 } [ %.pn431, %678 ], [ %673, %672 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %680

680:                                              ; preds = %679, %670
  %.pn431.pn.pn = phi { ptr, i32 } [ %.pn431.pn, %679 ], [ %671, %670 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #8
  br label %689

681:                                              ; preds = %656, %669
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #8
  invoke void @_ZN4chen4jsonC1ERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %682 unwind label %690

682:                                              ; preds = %681
  %683 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %684 unwind label %692

684:                                              ; preds = %682
  %685 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %683) #8
  %686 = zext i1 %685 to i8
  store i8 %686, ptr %80, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 1 dereferenceable(1) %80, ptr noundef null)
          to label %687 unwind label %692

687:                                              ; preds = %684
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #8
  %688 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %79)
  br i1 %688, label %712, label %695

689:                                              ; preds = %680, %663
  %.pn431.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn, %680 ], [ %.pn429, %663 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #8
  br label %1927

690:                                              ; preds = %681
  %691 = landingpad { ptr, i32 }
          cleanup
  br label %694

692:                                              ; preds = %684, %682
  %693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #8
  br label %694

694:                                              ; preds = %692, %690
  %.pn436 = phi { ptr, i32 } [ %693, %692 ], [ %691, %690 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #8
  br label %720

695:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %696 unwind label %701

696:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %697 unwind label %703

697:                                              ; preds = %696
  %698 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %83, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 60, ptr noundef %698)
          to label %699 unwind label %705

699:                                              ; preds = %697
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %700 unwind label %707

700:                                              ; preds = %699
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  br label %712

701:                                              ; preds = %695
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %711

703:                                              ; preds = %696
  %704 = landingpad { ptr, i32 }
          cleanup
  br label %710

705:                                              ; preds = %697
  %706 = landingpad { ptr, i32 }
          cleanup
  br label %709

707:                                              ; preds = %699
  %708 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  br label %709

709:                                              ; preds = %707, %705
  %.pn438 = phi { ptr, i32 } [ %708, %707 ], [ %706, %705 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %710

710:                                              ; preds = %709, %703
  %.pn438.pn = phi { ptr, i32 } [ %.pn438, %709 ], [ %704, %703 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %711

711:                                              ; preds = %710, %701
  %.pn438.pn.pn = phi { ptr, i32 } [ %.pn438.pn, %710 ], [ %702, %701 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  br label %720

712:                                              ; preds = %687, %700
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #8
  invoke void @_ZN4chen4jsonC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %713 unwind label %721

713:                                              ; preds = %712
  %714 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %715 unwind label %723

715:                                              ; preds = %713
  %716 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %714) #8
  %717 = zext i1 %716 to i8
  store i8 %717, ptr %86, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull align 1 dereferenceable(1) %86, ptr noundef null)
          to label %718 unwind label %723

718:                                              ; preds = %715
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #8
  %719 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  br i1 %719, label %743, label %726

720:                                              ; preds = %711, %694
  %.pn438.pn.pn.pn = phi { ptr, i32 } [ %.pn438.pn.pn, %711 ], [ %.pn436, %694 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #8
  br label %1927

721:                                              ; preds = %712
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %725

723:                                              ; preds = %715, %713
  %724 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  br label %725

725:                                              ; preds = %723, %721
  %.pn443 = phi { ptr, i32 } [ %724, %723 ], [ %722, %721 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #8
  br label %758

726:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %727 unwind label %732

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %728 unwind label %734

728:                                              ; preds = %727
  %729 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 61, ptr noundef %729)
          to label %730 unwind label %736

730:                                              ; preds = %728
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %731 unwind label %738

731:                                              ; preds = %730
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  br label %743

732:                                              ; preds = %726
  %733 = landingpad { ptr, i32 }
          cleanup
  br label %742

734:                                              ; preds = %727
  %735 = landingpad { ptr, i32 }
          cleanup
  br label %741

736:                                              ; preds = %728
  %737 = landingpad { ptr, i32 }
          cleanup
  br label %740

738:                                              ; preds = %730
  %739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  br label %740

740:                                              ; preds = %738, %736
  %.pn445 = phi { ptr, i32 } [ %739, %738 ], [ %737, %736 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %741

741:                                              ; preds = %740, %734
  %.pn445.pn = phi { ptr, i32 } [ %.pn445, %740 ], [ %735, %734 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %742

742:                                              ; preds = %741, %732
  %.pn445.pn.pn = phi { ptr, i32 } [ %.pn445.pn, %741 ], [ %733, %732 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #8
  br label %758

743:                                              ; preds = %718, %731
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %92) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #8
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  %744 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %745 unwind label %759

745:                                              ; preds = %743
  %746 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %747 unwind label %759

747:                                              ; preds = %745
  %748 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %749 unwind label %759

749:                                              ; preds = %747
  %750 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSEj(ptr noundef nonnull align 8 dereferenceable(16) %94, i32 noundef 115)
          to label %751 unwind label %759

751:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #8
  %752 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %753 unwind label %761

753:                                              ; preds = %751
  %754 = call noundef zeroext i1 @_ZNKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %752) #8
  %755 = zext i1 %754 to i8
  store i8 %755, ptr %96, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 1 dereferenceable(1) %96, ptr noundef null)
          to label %756 unwind label %761

756:                                              ; preds = %753
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #8
  %757 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %95)
  br i1 %757, label %780, label %763

758:                                              ; preds = %742, %725
  %.pn445.pn.pn.pn = phi { ptr, i32 } [ %.pn445.pn.pn, %742 ], [ %.pn443, %725 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #8
  br label %1927

759:                                              ; preds = %749, %747, %745, %743
  %760 = landingpad { ptr, i32 }
          cleanup
  br label %1926

761:                                              ; preds = %753, %751
  %762 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #8
  br label %787

763:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %764 unwind label %769

764:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %765 unwind label %771

765:                                              ; preds = %764
  %766 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 73, ptr noundef %766)
          to label %767 unwind label %773

767:                                              ; preds = %765
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %768 unwind label %775

768:                                              ; preds = %767
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #8
  br label %780

769:                                              ; preds = %763
  %770 = landingpad { ptr, i32 }
          cleanup
  br label %779

771:                                              ; preds = %764
  %772 = landingpad { ptr, i32 }
          cleanup
  br label %778

773:                                              ; preds = %765
  %774 = landingpad { ptr, i32 }
          cleanup
  br label %777

775:                                              ; preds = %767
  %776 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br label %777

777:                                              ; preds = %775, %773
  %.pn450 = phi { ptr, i32 } [ %776, %775 ], [ %774, %773 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  br label %778

778:                                              ; preds = %777, %771
  %.pn450.pn = phi { ptr, i32 } [ %.pn450, %777 ], [ %772, %771 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br label %779

779:                                              ; preds = %778, %769
  %.pn450.pn.pn = phi { ptr, i32 } [ %.pn450.pn, %778 ], [ %770, %769 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  br label %787

780:                                              ; preds = %756, %768
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %101) #8
  %781 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %92)
          to label %782 unwind label %788

782:                                              ; preds = %780
  %783 = call noundef zeroext i1 @_ZNKSt6vectorIN4chen4jsonESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %781) #8
  %784 = zext i1 %783 to i8
  store i8 %784, ptr %101, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef nonnull align 1 dereferenceable(1) %101, ptr noundef null)
          to label %785 unwind label %788

785:                                              ; preds = %782
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #8
  %786 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
  br i1 %786, label %807, label %790

787:                                              ; preds = %779, %761
  %.pn450.pn.pn.pn = phi { ptr, i32 } [ %.pn450.pn.pn, %779 ], [ %762, %761 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #8
  br label %1926

788:                                              ; preds = %782, %780
  %789 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #8
  br label %814

790:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %791 unwind label %796

791:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %792 unwind label %798

792:                                              ; preds = %791
  %793 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %103, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 74, ptr noundef %793)
          to label %794 unwind label %800

794:                                              ; preds = %792
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %795 unwind label %802

795:                                              ; preds = %794
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  br label %807

796:                                              ; preds = %790
  %797 = landingpad { ptr, i32 }
          cleanup
  br label %806

798:                                              ; preds = %791
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %805

800:                                              ; preds = %792
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %804

802:                                              ; preds = %794
  %803 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  br label %804

804:                                              ; preds = %802, %800
  %.pn455 = phi { ptr, i32 } [ %803, %802 ], [ %801, %800 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br label %805

805:                                              ; preds = %804, %798
  %.pn455.pn = phi { ptr, i32 } [ %.pn455, %804 ], [ %799, %798 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  br label %806

806:                                              ; preds = %805, %796
  %.pn455.pn.pn = phi { ptr, i32 } [ %.pn455.pn, %805 ], [ %797, %796 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  br label %814

807:                                              ; preds = %785, %795
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %105) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %106) #8
  %808 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16) %93)
          to label %809 unwind label %815

809:                                              ; preds = %807
  %810 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %808) #8
  %811 = zext i1 %810 to i8
  store i8 %811, ptr %106, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull align 1 dereferenceable(1) %106, ptr noundef null)
          to label %812 unwind label %815

812:                                              ; preds = %809
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #8
  %813 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
  br i1 %813, label %834, label %817

814:                                              ; preds = %806, %788
  %.pn455.pn.pn.pn = phi { ptr, i32 } [ %.pn455.pn.pn, %806 ], [ %789, %788 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #8
  br label %1926

815:                                              ; preds = %809, %807
  %816 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #8
  br label %839

817:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %818 unwind label %823

818:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %109, ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %819 unwind label %825

819:                                              ; preds = %818
  %820 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %108, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 75, ptr noundef %820)
          to label %821 unwind label %827

821:                                              ; preds = %819
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %822 unwind label %829

822:                                              ; preds = %821
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #8
  br label %834

823:                                              ; preds = %817
  %824 = landingpad { ptr, i32 }
          cleanup
  br label %833

825:                                              ; preds = %818
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %832

827:                                              ; preds = %819
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %831

829:                                              ; preds = %821
  %830 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #8
  br label %831

831:                                              ; preds = %829, %827
  %.pn460 = phi { ptr, i32 } [ %830, %829 ], [ %828, %827 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  br label %832

832:                                              ; preds = %831, %825
  %.pn460.pn = phi { ptr, i32 } [ %.pn460, %831 ], [ %826, %825 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #8
  br label %833

833:                                              ; preds = %832, %823
  %.pn460.pn.pn = phi { ptr, i32 } [ %.pn460.pn, %832 ], [ %824, %823 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #8
  br label %839

834:                                              ; preds = %812, %822
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %110) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %111) #8
  store i32 115, ptr %111, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %112) #8
  %835 = invoke noundef i32 @_ZNK4chen4json11getUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %836 unwind label %840

836:                                              ; preds = %834
  store i32 %835, ptr %112, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %110, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.29, ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull align 4 dereferenceable(4) %112)
          to label %837 unwind label %840

837:                                              ; preds = %836
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %111) #8
  %838 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
  br i1 %838, label %856, label %842

839:                                              ; preds = %833, %815
  %.pn460.pn.pn.pn = phi { ptr, i32 } [ %.pn460.pn.pn, %833 ], [ %816, %815 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  br label %1926

840:                                              ; preds = %836, %834
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %111) #8
  br label %861

842:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %843 unwind label %848

843:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #8
  %844 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
          to label %845 unwind label %850

845:                                              ; preds = %843
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 76, ptr noundef %844)
          to label %846 unwind label %850

846:                                              ; preds = %845
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %847 unwind label %852

847:                                              ; preds = %846
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #8
  br label %856

848:                                              ; preds = %842
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %855

850:                                              ; preds = %845, %843
  %851 = landingpad { ptr, i32 }
          cleanup
  br label %854

852:                                              ; preds = %846
  %853 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  br label %854

854:                                              ; preds = %852, %850
  %.pn465 = phi { ptr, i32 } [ %853, %852 ], [ %851, %850 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #8
  br label %855

855:                                              ; preds = %854, %848
  %.pn465.pn = phi { ptr, i32 } [ %.pn465, %854 ], [ %849, %848 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  br label %861

856:                                              ; preds = %837, %847
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %115) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %116) #8
  store i32 123, ptr %116, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %117) #8
  %857 = invoke noundef double @_ZNK4chen4json8toNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %858 unwind label %862

858:                                              ; preds = %856
  store double %857, ptr %117, align 8, !tbaa !5
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIidEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %115, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.30, ptr noundef nonnull align 4 dereferenceable(4) %116, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %859 unwind label %862

859:                                              ; preds = %858
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #8
  %860 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %115)
  br i1 %860, label %878, label %864

861:                                              ; preds = %855, %840
  %.pn465.pn.pn = phi { ptr, i32 } [ %.pn465.pn, %855 ], [ %841, %840 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #8
  br label %1926

862:                                              ; preds = %858, %856
  %863 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #8
  br label %883

864:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %118) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %865 unwind label %870

865:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #8
  %866 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %115)
          to label %867 unwind label %872

867:                                              ; preds = %865
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %119, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 78, ptr noundef %866)
          to label %868 unwind label %872

868:                                              ; preds = %867
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %869 unwind label %874

869:                                              ; preds = %868
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #8
  br label %878

870:                                              ; preds = %864
  %871 = landingpad { ptr, i32 }
          cleanup
  br label %877

872:                                              ; preds = %867, %865
  %873 = landingpad { ptr, i32 }
          cleanup
  br label %876

874:                                              ; preds = %868
  %875 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  br label %876

876:                                              ; preds = %874, %872
  %.pn469 = phi { ptr, i32 } [ %875, %874 ], [ %873, %872 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  br label %877

877:                                              ; preds = %876, %870
  %.pn469.pn = phi { ptr, i32 } [ %.pn469, %876 ], [ %871, %870 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #8
  br label %883

878:                                              ; preds = %859, %869
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %120) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %121) #8
  store i32 123, ptr %121, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %122) #8
  %879 = invoke noundef i32 @_ZNK4chen4json9toIntegerEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %880 unwind label %884

880:                                              ; preds = %878
  store i32 %879, ptr %122, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %120, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.31, ptr noundef nonnull align 4 dereferenceable(4) %121, ptr noundef nonnull align 4 dereferenceable(4) %122)
          to label %881 unwind label %884

881:                                              ; preds = %880
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %122) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %121) #8
  %882 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
  br i1 %882, label %900, label %886

883:                                              ; preds = %877, %862
  %.pn469.pn.pn = phi { ptr, i32 } [ %.pn469.pn, %877 ], [ %863, %862 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #8
  br label %1926

884:                                              ; preds = %880, %878
  %885 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %122) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %121) #8
  br label %905

886:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %123) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %123)
          to label %887 unwind label %892

887:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %124) #8
  %888 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %889 unwind label %894

889:                                              ; preds = %887
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %124, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 79, ptr noundef %888)
          to label %890 unwind label %894

890:                                              ; preds = %889
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %123)
          to label %891 unwind label %896

891:                                              ; preds = %890
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #8
  br label %900

892:                                              ; preds = %886
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %899

894:                                              ; preds = %889, %887
  %895 = landingpad { ptr, i32 }
          cleanup
  br label %898

896:                                              ; preds = %890
  %897 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  br label %898

898:                                              ; preds = %896, %894
  %.pn473 = phi { ptr, i32 } [ %897, %896 ], [ %895, %894 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #8
  br label %899

899:                                              ; preds = %898, %892
  %.pn473.pn = phi { ptr, i32 } [ %.pn473, %898 ], [ %893, %892 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  br label %905

900:                                              ; preds = %881, %891
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %125) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %126) #8
  store i32 123, ptr %126, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %127) #8
  %901 = invoke noundef i32 @_ZNK4chen4json10toUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %902 unwind label %906

902:                                              ; preds = %900
  store i32 %901, ptr %127, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %125, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, ptr noundef nonnull align 4 dereferenceable(4) %126, ptr noundef nonnull align 4 dereferenceable(4) %127)
          to label %903 unwind label %906

903:                                              ; preds = %902
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %127) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %126) #8
  %904 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
  br i1 %904, label %922, label %908

905:                                              ; preds = %899, %884
  %.pn473.pn.pn = phi { ptr, i32 } [ %.pn473.pn, %899 ], [ %885, %884 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120) #8
  br label %1926

906:                                              ; preds = %902, %900
  %907 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %127) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %126) #8
  br label %926

908:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %909 unwind label %914

909:                                              ; preds = %908
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #8
  %910 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %911 unwind label %916

911:                                              ; preds = %909
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %129, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 80, ptr noundef %910)
          to label %912 unwind label %916

912:                                              ; preds = %911
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %913 unwind label %918

913:                                              ; preds = %912
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #8
  br label %922

914:                                              ; preds = %908
  %915 = landingpad { ptr, i32 }
          cleanup
  br label %921

916:                                              ; preds = %911, %909
  %917 = landingpad { ptr, i32 }
          cleanup
  br label %920

918:                                              ; preds = %912
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #8
  br label %920

920:                                              ; preds = %918, %916
  %.pn477 = phi { ptr, i32 } [ %919, %918 ], [ %917, %916 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #8
  br label %921

921:                                              ; preds = %920, %914
  %.pn477.pn = phi { ptr, i32 } [ %.pn477, %920 ], [ %915, %914 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #8
  br label %926

922:                                              ; preds = %903, %913
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %125) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %130) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %131) #8
  invoke void @_ZNK4chen4json8toStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %131, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %923 unwind label %927

923:                                              ; preds = %922
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %130, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(4) @.str.36, ptr noundef nonnull align 8 dereferenceable(32) %131)
          to label %924 unwind label %929

924:                                              ; preds = %923
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #8
  %925 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %130)
  br i1 %925, label %946, label %932

926:                                              ; preds = %921, %906
  %.pn477.pn.pn = phi { ptr, i32 } [ %.pn477.pn, %921 ], [ %907, %906 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %125) #8
  br label %1926

927:                                              ; preds = %922
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %931

929:                                              ; preds = %923
  %930 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  br label %931

931:                                              ; preds = %929, %927
  %.pn481 = phi { ptr, i32 } [ %930, %929 ], [ %928, %927 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #8
  br label %952

932:                                              ; preds = %924
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %933 unwind label %938

933:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #8
  %934 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %130)
          to label %935 unwind label %940

935:                                              ; preds = %933
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %133, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 81, ptr noundef %934)
          to label %936 unwind label %940

936:                                              ; preds = %935
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %937 unwind label %942

937:                                              ; preds = %936
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #8
  br label %946

938:                                              ; preds = %932
  %939 = landingpad { ptr, i32 }
          cleanup
  br label %945

940:                                              ; preds = %935, %933
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %944

942:                                              ; preds = %936
  %943 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  br label %944

944:                                              ; preds = %942, %940
  %.pn483 = phi { ptr, i32 } [ %943, %942 ], [ %941, %940 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  br label %945

945:                                              ; preds = %944, %938
  %.pn483.pn = phi { ptr, i32 } [ %.pn483, %944 ], [ %939, %938 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #8
  br label %952

946:                                              ; preds = %924, %937
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %130) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %134) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %135) #8
  %947 = invoke noundef zeroext i1 @_ZNK4chen4json6toBoolEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %948 unwind label %953

948:                                              ; preds = %946
  %949 = zext i1 %947 to i8
  store i8 %949, ptr %135, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %134, ptr noundef nonnull align 1 dereferenceable(1) %135, ptr noundef null)
          to label %950 unwind label %953

950:                                              ; preds = %948
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #8
  %951 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %134)
  br i1 %951, label %972, label %955

952:                                              ; preds = %945, %931
  %.pn483.pn.pn = phi { ptr, i32 } [ %.pn483.pn, %945 ], [ %.pn481, %931 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %130) #8
  br label %1926

953:                                              ; preds = %948, %946
  %954 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #8
  br label %979

955:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %136) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %956 unwind label %961

956:                                              ; preds = %955
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %138) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %138, ptr noundef nonnull align 8 dereferenceable(16) %134, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %957 unwind label %963

957:                                              ; preds = %956
  %958 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %137, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 82, ptr noundef %958)
          to label %959 unwind label %965

959:                                              ; preds = %957
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %960 unwind label %967

960:                                              ; preds = %959
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #8
  br label %972

961:                                              ; preds = %955
  %962 = landingpad { ptr, i32 }
          cleanup
  br label %971

963:                                              ; preds = %956
  %964 = landingpad { ptr, i32 }
          cleanup
  br label %970

965:                                              ; preds = %957
  %966 = landingpad { ptr, i32 }
          cleanup
  br label %969

967:                                              ; preds = %959
  %968 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #8
  br label %969

969:                                              ; preds = %967, %965
  %.pn487 = phi { ptr, i32 } [ %968, %967 ], [ %966, %965 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  br label %970

970:                                              ; preds = %969, %963
  %.pn487.pn = phi { ptr, i32 } [ %.pn487, %969 ], [ %964, %963 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  br label %971

971:                                              ; preds = %970, %961
  %.pn487.pn.pn = phi { ptr, i32 } [ %.pn487.pn, %970 ], [ %962, %961 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #8
  br label %979

972:                                              ; preds = %950, %960
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %139) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %140) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %141) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %141, i32 noundef 0)
          to label %973 unwind label %980

973:                                              ; preds = %972
  %974 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %141)
          to label %975 unwind label %982

975:                                              ; preds = %973
  %976 = zext i1 %974 to i8
  store i8 %976, ptr %140, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull align 1 dereferenceable(1) %140, ptr noundef null)
          to label %977 unwind label %982

977:                                              ; preds = %975
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #8
  %978 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %139)
  br i1 %978, label %1002, label %985

979:                                              ; preds = %971, %953
  %.pn487.pn.pn.pn = phi { ptr, i32 } [ %.pn487.pn.pn, %971 ], [ %954, %953 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #8
  br label %1926

980:                                              ; preds = %972
  %981 = landingpad { ptr, i32 }
          cleanup
  br label %984

982:                                              ; preds = %975, %973
  %983 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #8
  br label %984

984:                                              ; preds = %982, %980
  %.pn492 = phi { ptr, i32 } [ %983, %982 ], [ %981, %980 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #8
  br label %1008

985:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %986 unwind label %991

986:                                              ; preds = %985
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %144) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %144, ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %987 unwind label %993

987:                                              ; preds = %986
  %988 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %144) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %143, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 84, ptr noundef %988)
          to label %989 unwind label %995

989:                                              ; preds = %987
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %990 unwind label %997

990:                                              ; preds = %989
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #8
  br label %1002

991:                                              ; preds = %985
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %1001

993:                                              ; preds = %986
  %994 = landingpad { ptr, i32 }
          cleanup
  br label %1000

995:                                              ; preds = %987
  %996 = landingpad { ptr, i32 }
          cleanup
  br label %999

997:                                              ; preds = %989
  %998 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #8
  br label %999

999:                                              ; preds = %997, %995
  %.pn494 = phi { ptr, i32 } [ %998, %997 ], [ %996, %995 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #8
  br label %1000

1000:                                             ; preds = %999, %993
  %.pn494.pn = phi { ptr, i32 } [ %.pn494, %999 ], [ %994, %993 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #8
  br label %1001

1001:                                             ; preds = %1000, %991
  %.pn494.pn.pn = phi { ptr, i32 } [ %.pn494.pn, %1000 ], [ %992, %991 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #8
  br label %1008

1002:                                             ; preds = %977, %990
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %145) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %146) #8
  %1003 = invoke noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %1004 unwind label %1009

1004:                                             ; preds = %1002
  %1005 = zext i1 %1003 to i8
  store i8 %1005, ptr %146, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 1 dereferenceable(1) %146, ptr noundef null)
          to label %1006 unwind label %1009

1006:                                             ; preds = %1004
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %146) #8
  %1007 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %145)
  br i1 %1007, label %1028, label %1011

1008:                                             ; preds = %1001, %984
  %.pn494.pn.pn.pn = phi { ptr, i32 } [ %.pn494.pn.pn, %1001 ], [ %.pn492, %984 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #8
  br label %1926

1009:                                             ; preds = %1004, %1002
  %1010 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %146) #8
  br label %1034

1011:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %1012 unwind label %1017

1012:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %149) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %149, ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1013 unwind label %1019

1013:                                             ; preds = %1012
  %1014 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %149) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 85, ptr noundef %1014)
          to label %1015 unwind label %1021

1015:                                             ; preds = %1013
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %1016 unwind label %1023

1016:                                             ; preds = %1015
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #8
  br label %1028

1017:                                             ; preds = %1011
  %1018 = landingpad { ptr, i32 }
          cleanup
  br label %1027

1019:                                             ; preds = %1012
  %1020 = landingpad { ptr, i32 }
          cleanup
  br label %1026

1021:                                             ; preds = %1013
  %1022 = landingpad { ptr, i32 }
          cleanup
  br label %1025

1023:                                             ; preds = %1015
  %1024 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #8
  br label %1025

1025:                                             ; preds = %1023, %1021
  %.pn499 = phi { ptr, i32 } [ %1024, %1023 ], [ %1022, %1021 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #8
  br label %1026

1026:                                             ; preds = %1025, %1019
  %.pn499.pn = phi { ptr, i32 } [ %.pn499, %1025 ], [ %1020, %1019 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %149) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #8
  br label %1027

1027:                                             ; preds = %1026, %1017
  %.pn499.pn.pn = phi { ptr, i32 } [ %.pn499.pn, %1026 ], [ %1018, %1017 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #8
  br label %1034

1028:                                             ; preds = %1006, %1016
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %151) #8
  %1029 = invoke noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %1030 unwind label %1035

1030:                                             ; preds = %1028
  %1031 = zext i1 %1029 to i8
  store i8 %1031, ptr %151, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull align 1 dereferenceable(1) %151, ptr noundef null)
          to label %1032 unwind label %1035

1032:                                             ; preds = %1030
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #8
  %1033 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %150)
  br i1 %1033, label %1054, label %1037

1034:                                             ; preds = %1027, %1009
  %.pn499.pn.pn.pn = phi { ptr, i32 } [ %.pn499.pn.pn, %1027 ], [ %1010, %1009 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #8
  br label %1926

1035:                                             ; preds = %1030, %1028
  %1036 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #8
  br label %1060

1037:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %152) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %152)
          to label %1038 unwind label %1043

1038:                                             ; preds = %1037
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %154) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %154, ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1039 unwind label %1045

1039:                                             ; preds = %1038
  %1040 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %154) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %153, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 86, ptr noundef %1040)
          to label %1041 unwind label %1047

1041:                                             ; preds = %1039
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %152)
          to label %1042 unwind label %1049

1042:                                             ; preds = %1041
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %152) #8
  br label %1054

1043:                                             ; preds = %1037
  %1044 = landingpad { ptr, i32 }
          cleanup
  br label %1053

1045:                                             ; preds = %1038
  %1046 = landingpad { ptr, i32 }
          cleanup
  br label %1052

1047:                                             ; preds = %1039
  %1048 = landingpad { ptr, i32 }
          cleanup
  br label %1051

1049:                                             ; preds = %1041
  %1050 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #8
  br label %1051

1051:                                             ; preds = %1049, %1047
  %.pn504 = phi { ptr, i32 } [ %1050, %1049 ], [ %1048, %1047 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #8
  br label %1052

1052:                                             ; preds = %1051, %1045
  %.pn504.pn = phi { ptr, i32 } [ %.pn504, %1051 ], [ %1046, %1045 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #8
  br label %1053

1053:                                             ; preds = %1052, %1043
  %.pn504.pn.pn = phi { ptr, i32 } [ %.pn504.pn, %1052 ], [ %1044, %1043 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %152) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  br label %1060

1054:                                             ; preds = %1032, %1042
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %155) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %156) #8
  %1055 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %1056 unwind label %1061

1056:                                             ; preds = %1054
  %1057 = zext i1 %1055 to i8
  store i8 %1057, ptr %156, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %155, ptr noundef nonnull align 1 dereferenceable(1) %156, ptr noundef null)
          to label %1058 unwind label %1061

1058:                                             ; preds = %1056
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #8
  %1059 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %155)
  br i1 %1059, label %1080, label %1063

1060:                                             ; preds = %1053, %1035
  %.pn504.pn.pn.pn = phi { ptr, i32 } [ %.pn504.pn.pn, %1053 ], [ %1036, %1035 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  br label %1926

1061:                                             ; preds = %1056, %1054
  %1062 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #8
  br label %1086

1063:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %1064 unwind label %1069

1064:                                             ; preds = %1063
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %159) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %159, ptr noundef nonnull align 8 dereferenceable(16) %155, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1065 unwind label %1071

1065:                                             ; preds = %1064
  %1066 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %159) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %158, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 87, ptr noundef %1066)
          to label %1067 unwind label %1073

1067:                                             ; preds = %1065
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %1068 unwind label %1075

1068:                                             ; preds = %1067
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #8
  br label %1080

1069:                                             ; preds = %1063
  %1070 = landingpad { ptr, i32 }
          cleanup
  br label %1079

1071:                                             ; preds = %1064
  %1072 = landingpad { ptr, i32 }
          cleanup
  br label %1078

1073:                                             ; preds = %1065
  %1074 = landingpad { ptr, i32 }
          cleanup
  br label %1077

1075:                                             ; preds = %1067
  %1076 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #8
  br label %1077

1077:                                             ; preds = %1075, %1073
  %.pn509 = phi { ptr, i32 } [ %1076, %1075 ], [ %1074, %1073 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #8
  br label %1078

1078:                                             ; preds = %1077, %1071
  %.pn509.pn = phi { ptr, i32 } [ %.pn509, %1077 ], [ %1072, %1071 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %159) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  br label %1079

1079:                                             ; preds = %1078, %1069
  %.pn509.pn.pn = phi { ptr, i32 } [ %.pn509.pn, %1078 ], [ %1070, %1069 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #8
  br label %1086

1080:                                             ; preds = %1058, %1068
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %160) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %161) #8
  %1081 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %1082 unwind label %1087

1082:                                             ; preds = %1080
  %1083 = zext i1 %1081 to i8
  store i8 %1083, ptr %161, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull align 1 dereferenceable(1) %161, ptr noundef null)
          to label %1084 unwind label %1087

1084:                                             ; preds = %1082
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #8
  %1085 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %160)
  br i1 %1085, label %1106, label %1089

1086:                                             ; preds = %1079, %1061
  %.pn509.pn.pn.pn = phi { ptr, i32 } [ %.pn509.pn.pn, %1079 ], [ %1062, %1061 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #8
  br label %1926

1087:                                             ; preds = %1082, %1080
  %1088 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #8
  br label %1112

1089:                                             ; preds = %1084
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %1090 unwind label %1095

1090:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %163) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %164) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %164, ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1091 unwind label %1097

1091:                                             ; preds = %1090
  %1092 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %164) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %163, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 88, ptr noundef %1092)
          to label %1093 unwind label %1099

1093:                                             ; preds = %1091
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %1094 unwind label %1101

1094:                                             ; preds = %1093
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #8
  br label %1106

1095:                                             ; preds = %1089
  %1096 = landingpad { ptr, i32 }
          cleanup
  br label %1105

1097:                                             ; preds = %1090
  %1098 = landingpad { ptr, i32 }
          cleanup
  br label %1104

1099:                                             ; preds = %1091
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1103

1101:                                             ; preds = %1093
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #8
  br label %1103

1103:                                             ; preds = %1101, %1099
  %.pn514 = phi { ptr, i32 } [ %1102, %1101 ], [ %1100, %1099 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #8
  br label %1104

1104:                                             ; preds = %1103, %1097
  %.pn514.pn = phi { ptr, i32 } [ %.pn514, %1103 ], [ %1098, %1097 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %164) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #8
  br label %1105

1105:                                             ; preds = %1104, %1095
  %.pn514.pn.pn = phi { ptr, i32 } [ %.pn514.pn, %1104 ], [ %1096, %1095 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #8
  br label %1112

1106:                                             ; preds = %1084, %1094
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %160) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %165) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %166) #8
  %1107 = invoke noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %1108 unwind label %1113

1108:                                             ; preds = %1106
  %1109 = zext i1 %1107 to i8
  store i8 %1109, ptr %166, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef nonnull align 1 dereferenceable(1) %166, ptr noundef null)
          to label %1110 unwind label %1113

1110:                                             ; preds = %1108
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %166) #8
  %1111 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
  br i1 %1111, label %1132, label %1115

1112:                                             ; preds = %1105, %1087
  %.pn514.pn.pn.pn = phi { ptr, i32 } [ %.pn514.pn.pn, %1105 ], [ %1088, %1087 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %160) #8
  br label %1926

1113:                                             ; preds = %1108, %1106
  %1114 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %166) #8
  br label %1138

1115:                                             ; preds = %1110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1116 unwind label %1121

1116:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %169) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %169, ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1117 unwind label %1123

1117:                                             ; preds = %1116
  %1118 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %168, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 89, ptr noundef %1118)
          to label %1119 unwind label %1125

1119:                                             ; preds = %1117
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1120 unwind label %1127

1120:                                             ; preds = %1119
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #8
  br label %1132

1121:                                             ; preds = %1115
  %1122 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1123:                                             ; preds = %1116
  %1124 = landingpad { ptr, i32 }
          cleanup
  br label %1130

1125:                                             ; preds = %1117
  %1126 = landingpad { ptr, i32 }
          cleanup
  br label %1129

1127:                                             ; preds = %1119
  %1128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  br label %1129

1129:                                             ; preds = %1127, %1125
  %.pn519 = phi { ptr, i32 } [ %1128, %1127 ], [ %1126, %1125 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  br label %1130

1130:                                             ; preds = %1129, %1123
  %.pn519.pn = phi { ptr, i32 } [ %.pn519, %1129 ], [ %1124, %1123 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  br label %1131

1131:                                             ; preds = %1130, %1121
  %.pn519.pn.pn = phi { ptr, i32 } [ %.pn519.pn, %1130 ], [ %1122, %1121 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #8
  br label %1138

1132:                                             ; preds = %1110, %1120
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %170) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #8
  %1133 = invoke noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %1134 unwind label %1139

1134:                                             ; preds = %1132
  %1135 = zext i1 %1133 to i8
  store i8 %1135, ptr %171, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %170, ptr noundef nonnull align 1 dereferenceable(1) %171, ptr noundef null)
          to label %1136 unwind label %1139

1136:                                             ; preds = %1134
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #8
  %1137 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %170)
  br i1 %1137, label %1158, label %1141

1138:                                             ; preds = %1131, %1113
  %.pn519.pn.pn.pn = phi { ptr, i32 } [ %.pn519.pn.pn, %1131 ], [ %1114, %1113 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #8
  br label %1926

1139:                                             ; preds = %1134, %1132
  %1140 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #8
  br label %1165

1141:                                             ; preds = %1136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %1142 unwind label %1147

1142:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %174) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %174, ptr noundef nonnull align 8 dereferenceable(16) %170, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1143 unwind label %1149

1143:                                             ; preds = %1142
  %1144 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %173, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 90, ptr noundef %1144)
          to label %1145 unwind label %1151

1145:                                             ; preds = %1143
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %1146 unwind label %1153

1146:                                             ; preds = %1145
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #8
  br label %1158

1147:                                             ; preds = %1141
  %1148 = landingpad { ptr, i32 }
          cleanup
  br label %1157

1149:                                             ; preds = %1142
  %1150 = landingpad { ptr, i32 }
          cleanup
  br label %1156

1151:                                             ; preds = %1143
  %1152 = landingpad { ptr, i32 }
          cleanup
  br label %1155

1153:                                             ; preds = %1145
  %1154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  br label %1155

1155:                                             ; preds = %1153, %1151
  %.pn524 = phi { ptr, i32 } [ %1154, %1153 ], [ %1152, %1151 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  br label %1156

1156:                                             ; preds = %1155, %1149
  %.pn524.pn = phi { ptr, i32 } [ %.pn524, %1155 ], [ %1150, %1149 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %174) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #8
  br label %1157

1157:                                             ; preds = %1156, %1147
  %.pn524.pn.pn = phi { ptr, i32 } [ %.pn524.pn, %1156 ], [ %1148, %1147 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  br label %1165

1158:                                             ; preds = %1136, %1146
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %175) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %176) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %177) #8
  invoke void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16) %177, i32 noundef 7)
          to label %1159 unwind label %1166

1159:                                             ; preds = %1158
  %1160 = invoke noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1161 unwind label %1168

1161:                                             ; preds = %1159
  %1162 = zext i1 %1160 to i8
  store i8 %1162, ptr %176, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull align 1 dereferenceable(1) %176, ptr noundef null)
          to label %1163 unwind label %1168

1163:                                             ; preds = %1161
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #8
  %1164 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %175)
  br i1 %1164, label %1188, label %1171

1165:                                             ; preds = %1157, %1139
  %.pn524.pn.pn.pn = phi { ptr, i32 } [ %.pn524.pn.pn, %1157 ], [ %1140, %1139 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #8
  br label %1926

1166:                                             ; preds = %1158
  %1167 = landingpad { ptr, i32 }
          cleanup
  br label %1170

1168:                                             ; preds = %1161, %1159
  %1169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #8
  br label %1170

1170:                                             ; preds = %1168, %1166
  %.pn529 = phi { ptr, i32 } [ %1169, %1168 ], [ %1167, %1166 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #8
  br label %1194

1171:                                             ; preds = %1163
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %178) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178)
          to label %1172 unwind label %1177

1172:                                             ; preds = %1171
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %179) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %180) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %180, ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1173 unwind label %1179

1173:                                             ; preds = %1172
  %1174 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %180) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %179, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 91, ptr noundef %1174)
          to label %1175 unwind label %1181

1175:                                             ; preds = %1173
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull align 8 dereferenceable(8) %178)
          to label %1176 unwind label %1183

1176:                                             ; preds = %1175
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #8
  br label %1188

1177:                                             ; preds = %1171
  %1178 = landingpad { ptr, i32 }
          cleanup
  br label %1187

1179:                                             ; preds = %1172
  %1180 = landingpad { ptr, i32 }
          cleanup
  br label %1186

1181:                                             ; preds = %1173
  %1182 = landingpad { ptr, i32 }
          cleanup
  br label %1185

1183:                                             ; preds = %1175
  %1184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #8
  br label %1185

1185:                                             ; preds = %1183, %1181
  %.pn531 = phi { ptr, i32 } [ %1184, %1183 ], [ %1182, %1181 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #8
  br label %1186

1186:                                             ; preds = %1185, %1179
  %.pn531.pn = phi { ptr, i32 } [ %.pn531, %1185 ], [ %1180, %1179 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #8
  br label %1187

1187:                                             ; preds = %1186, %1177
  %.pn531.pn.pn = phi { ptr, i32 } [ %.pn531.pn, %1186 ], [ %1178, %1177 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  br label %1194

1188:                                             ; preds = %1163, %1176
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %175) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %181) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %182) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %183) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %183, i8 0, i64 16, i1 false)
  call void @_ZN4chen4jsonC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  %1189 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %183)
          to label %1190 unwind label %1195

1190:                                             ; preds = %1188
  %1191 = zext i1 %1189 to i8
  store i8 %1191, ptr %182, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %181, ptr noundef nonnull align 1 dereferenceable(1) %182, ptr noundef null)
          to label %1192 unwind label %1195

1192:                                             ; preds = %1190
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %182) #8
  %1193 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
  br i1 %1193, label %1214, label %1197

1194:                                             ; preds = %1187, %1170
  %.pn531.pn.pn.pn = phi { ptr, i32 } [ %.pn531.pn.pn, %1187 ], [ %.pn529, %1170 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %175) #8
  br label %1926

1195:                                             ; preds = %1190, %1188
  %1196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %182) #8
  br label %1221

1197:                                             ; preds = %1192
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %184) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %184)
          to label %1198 unwind label %1203

1198:                                             ; preds = %1197
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %185) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %186) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %186, ptr noundef nonnull align 8 dereferenceable(16) %181, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1199 unwind label %1205

1199:                                             ; preds = %1198
  %1200 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %186) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %185, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 93, ptr noundef %1200)
          to label %1201 unwind label %1207

1201:                                             ; preds = %1199
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %184)
          to label %1202 unwind label %1209

1202:                                             ; preds = %1201
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %186) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #8
  br label %1214

1203:                                             ; preds = %1197
  %1204 = landingpad { ptr, i32 }
          cleanup
  br label %1213

1205:                                             ; preds = %1198
  %1206 = landingpad { ptr, i32 }
          cleanup
  br label %1212

1207:                                             ; preds = %1199
  %1208 = landingpad { ptr, i32 }
          cleanup
  br label %1211

1209:                                             ; preds = %1201
  %1210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #8
  br label %1211

1211:                                             ; preds = %1209, %1207
  %.pn536 = phi { ptr, i32 } [ %1210, %1209 ], [ %1208, %1207 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #8
  br label %1212

1212:                                             ; preds = %1211, %1205
  %.pn536.pn = phi { ptr, i32 } [ %.pn536, %1211 ], [ %1206, %1205 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %186) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  br label %1213

1213:                                             ; preds = %1212, %1203
  %.pn536.pn.pn = phi { ptr, i32 } [ %.pn536.pn, %1212 ], [ %1204, %1203 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #8
  br label %1221

1214:                                             ; preds = %1192, %1202
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %187) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %188) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %190) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %190, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %190) #8
  invoke void @_ZN4chen4jsonC1EOSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %189, ptr noundef nonnull align 8 dereferenceable(56) %190)
          to label %1215 unwind label %1222

1215:                                             ; preds = %1214
  %1216 = invoke noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %1217 unwind label %1224

1217:                                             ; preds = %1215
  %1218 = zext i1 %1216 to i8
  store i8 %1218, ptr %188, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull align 1 dereferenceable(1) %188, ptr noundef null)
          to label %1219 unwind label %1224

1219:                                             ; preds = %1217
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %190) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %188) #8
  %1220 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %187)
  br i1 %1220, label %1244, label %1227

1221:                                             ; preds = %1213, %1195
  %.pn536.pn.pn.pn = phi { ptr, i32 } [ %.pn536.pn.pn, %1213 ], [ %1196, %1195 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #8
  br label %1926

1222:                                             ; preds = %1214
  %1223 = landingpad { ptr, i32 }
          cleanup
  br label %1226

1224:                                             ; preds = %1217, %1215
  %1225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #8
  br label %1226

1226:                                             ; preds = %1224, %1222
  %.pn541 = phi { ptr, i32 } [ %1225, %1224 ], [ %1223, %1222 ]
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %190) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %188) #8
  br label %1251

1227:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %191) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %1228 unwind label %1233

1228:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %192) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %193) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %193, ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1229 unwind label %1235

1229:                                             ; preds = %1228
  %1230 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %192, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 94, ptr noundef %1230)
          to label %1231 unwind label %1237

1231:                                             ; preds = %1229
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %1232 unwind label %1239

1232:                                             ; preds = %1231
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %193) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #8
  br label %1244

1233:                                             ; preds = %1227
  %1234 = landingpad { ptr, i32 }
          cleanup
  br label %1243

1235:                                             ; preds = %1228
  %1236 = landingpad { ptr, i32 }
          cleanup
  br label %1242

1237:                                             ; preds = %1229
  %1238 = landingpad { ptr, i32 }
          cleanup
  br label %1241

1239:                                             ; preds = %1231
  %1240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #8
  br label %1241

1241:                                             ; preds = %1239, %1237
  %.pn543 = phi { ptr, i32 } [ %1240, %1239 ], [ %1238, %1237 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  br label %1242

1242:                                             ; preds = %1241, %1235
  %.pn543.pn = phi { ptr, i32 } [ %.pn543, %1241 ], [ %1236, %1235 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %193) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #8
  br label %1243

1243:                                             ; preds = %1242, %1233
  %.pn543.pn.pn = phi { ptr, i32 } [ %.pn543.pn, %1242 ], [ %1234, %1233 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #8
  br label %1251

1244:                                             ; preds = %1219, %1232
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %194) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %195) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %196) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %197) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %197, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #8
  invoke void @_ZN4chen4jsonC1EOSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16) %196, ptr noundef nonnull align 8 dereferenceable(24) %197)
          to label %1245 unwind label %1252

1245:                                             ; preds = %1244
  %1246 = invoke noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16) %196)
          to label %1247 unwind label %1254

1247:                                             ; preds = %1245
  %1248 = zext i1 %1246 to i8
  store i8 %1248, ptr %195, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %194, ptr noundef nonnull align 1 dereferenceable(1) %195, ptr noundef null)
          to label %1249 unwind label %1254

1249:                                             ; preds = %1247
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %196) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %196) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #8
  %1250 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %194)
  br i1 %1250, label %1274, label %1257

1251:                                             ; preds = %1243, %1226
  %.pn543.pn.pn.pn = phi { ptr, i32 } [ %.pn543.pn.pn, %1243 ], [ %.pn541, %1226 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #8
  br label %1926

1252:                                             ; preds = %1244
  %1253 = landingpad { ptr, i32 }
          cleanup
  br label %1256

1254:                                             ; preds = %1247, %1245
  %1255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %196) #8
  br label %1256

1256:                                             ; preds = %1254, %1252
  %.pn548 = phi { ptr, i32 } [ %1255, %1254 ], [ %1253, %1252 ]
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %196) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #8
  br label %1281

1257:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %198) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %1258 unwind label %1263

1258:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %199) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %200) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %200, ptr noundef nonnull align 8 dereferenceable(16) %194, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1259 unwind label %1265

1259:                                             ; preds = %1258
  %1260 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %200) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %199, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 95, ptr noundef %1260)
          to label %1261 unwind label %1267

1261:                                             ; preds = %1259
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %1262 unwind label %1269

1262:                                             ; preds = %1261
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %200) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #8
  br label %1274

1263:                                             ; preds = %1257
  %1264 = landingpad { ptr, i32 }
          cleanup
  br label %1273

1265:                                             ; preds = %1258
  %1266 = landingpad { ptr, i32 }
          cleanup
  br label %1272

1267:                                             ; preds = %1259
  %1268 = landingpad { ptr, i32 }
          cleanup
  br label %1271

1269:                                             ; preds = %1261
  %1270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #8
  br label %1271

1271:                                             ; preds = %1269, %1267
  %.pn550 = phi { ptr, i32 } [ %1270, %1269 ], [ %1268, %1267 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %200) #8
  br label %1272

1272:                                             ; preds = %1271, %1265
  %.pn550.pn = phi { ptr, i32 } [ %.pn550, %1271 ], [ %1266, %1265 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #8
  br label %1273

1273:                                             ; preds = %1272, %1263
  %.pn550.pn.pn = phi { ptr, i32 } [ %.pn550.pn, %1272 ], [ %1264, %1263 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #8
  br label %1281

1274:                                             ; preds = %1249, %1262
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %201) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %202) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %203) #8
  invoke void @_ZN4chen4jsonC1Ei(ptr noundef nonnull align 8 dereferenceable(16) %203, i32 noundef 115)
          to label %1275 unwind label %1282

1275:                                             ; preds = %1274
  %1276 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %203)
          to label %1277 unwind label %1284

1277:                                             ; preds = %1275
  %1278 = zext i1 %1276 to i8
  store i8 %1278, ptr %202, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %201, ptr noundef nonnull align 1 dereferenceable(1) %202, ptr noundef null)
          to label %1279 unwind label %1284

1279:                                             ; preds = %1277
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %203) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %203) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #8
  %1280 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %201)
  br i1 %1280, label %1304, label %1287

1281:                                             ; preds = %1273, %1256
  %.pn550.pn.pn.pn = phi { ptr, i32 } [ %.pn550.pn.pn, %1273 ], [ %.pn548, %1256 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #8
  br label %1926

1282:                                             ; preds = %1274
  %1283 = landingpad { ptr, i32 }
          cleanup
  br label %1286

1284:                                             ; preds = %1277, %1275
  %1285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %203) #8
  br label %1286

1286:                                             ; preds = %1284, %1282
  %.pn555 = phi { ptr, i32 } [ %1285, %1284 ], [ %1283, %1282 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %203) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #8
  br label %1311

1287:                                             ; preds = %1279
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %1288 unwind label %1293

1288:                                             ; preds = %1287
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %205) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %206) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %206, ptr noundef nonnull align 8 dereferenceable(16) %201, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1289 unwind label %1295

1289:                                             ; preds = %1288
  %1290 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %206) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %205, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 96, ptr noundef %1290)
          to label %1291 unwind label %1297

1291:                                             ; preds = %1289
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %1292 unwind label %1299

1292:                                             ; preds = %1291
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  br label %1304

1293:                                             ; preds = %1287
  %1294 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1295:                                             ; preds = %1288
  %1296 = landingpad { ptr, i32 }
          cleanup
  br label %1302

1297:                                             ; preds = %1289
  %1298 = landingpad { ptr, i32 }
          cleanup
  br label %1301

1299:                                             ; preds = %1291
  %1300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #8
  br label %1301

1301:                                             ; preds = %1299, %1297
  %.pn557 = phi { ptr, i32 } [ %1300, %1299 ], [ %1298, %1297 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #8
  br label %1302

1302:                                             ; preds = %1301, %1295
  %.pn557.pn = phi { ptr, i32 } [ %.pn557, %1301 ], [ %1296, %1295 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %206) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  br label %1303

1303:                                             ; preds = %1302, %1293
  %.pn557.pn.pn = phi { ptr, i32 } [ %.pn557.pn, %1302 ], [ %1294, %1293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #8
  br label %1311

1304:                                             ; preds = %1279, %1292
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %207) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %208) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %209) #8
  invoke void @_ZN4chen4jsonC1Ej(ptr noundef nonnull align 8 dereferenceable(16) %209, i32 noundef 115)
          to label %1305 unwind label %1312

1305:                                             ; preds = %1304
  %1306 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
          to label %1307 unwind label %1314

1307:                                             ; preds = %1305
  %1308 = zext i1 %1306 to i8
  store i8 %1308, ptr %208, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %207, ptr noundef nonnull align 1 dereferenceable(1) %208, ptr noundef null)
          to label %1309 unwind label %1314

1309:                                             ; preds = %1307
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #8
  %1310 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %207)
  br i1 %1310, label %1334, label %1317

1311:                                             ; preds = %1303, %1286
  %.pn557.pn.pn.pn = phi { ptr, i32 } [ %.pn557.pn.pn, %1303 ], [ %.pn555, %1286 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #8
  br label %1926

1312:                                             ; preds = %1304
  %1313 = landingpad { ptr, i32 }
          cleanup
  br label %1316

1314:                                             ; preds = %1307, %1305
  %1315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #8
  br label %1316

1316:                                             ; preds = %1314, %1312
  %.pn562 = phi { ptr, i32 } [ %1315, %1314 ], [ %1313, %1312 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #8
  br label %1341

1317:                                             ; preds = %1309
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %210) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %1318 unwind label %1323

1318:                                             ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %211) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %212) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %212, ptr noundef nonnull align 8 dereferenceable(16) %207, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1319 unwind label %1325

1319:                                             ; preds = %1318
  %1320 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %212) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %211, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 97, ptr noundef %1320)
          to label %1321 unwind label %1327

1321:                                             ; preds = %1319
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %1322 unwind label %1329

1322:                                             ; preds = %1321
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %212) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #8
  br label %1334

1323:                                             ; preds = %1317
  %1324 = landingpad { ptr, i32 }
          cleanup
  br label %1333

1325:                                             ; preds = %1318
  %1326 = landingpad { ptr, i32 }
          cleanup
  br label %1332

1327:                                             ; preds = %1319
  %1328 = landingpad { ptr, i32 }
          cleanup
  br label %1331

1329:                                             ; preds = %1321
  %1330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #8
  br label %1331

1331:                                             ; preds = %1329, %1327
  %.pn564 = phi { ptr, i32 } [ %1330, %1329 ], [ %1328, %1327 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #8
  br label %1332

1332:                                             ; preds = %1331, %1325
  %.pn564.pn = phi { ptr, i32 } [ %.pn564, %1331 ], [ %1326, %1325 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %212) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #8
  br label %1333

1333:                                             ; preds = %1332, %1323
  %.pn564.pn.pn = phi { ptr, i32 } [ %.pn564.pn, %1332 ], [ %1324, %1323 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #8
  br label %1341

1334:                                             ; preds = %1309, %1322
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %213) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %214) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %215) #8
  invoke void @_ZN4chen4jsonC1Ed(ptr noundef nonnull align 8 dereferenceable(16) %215, double noundef 0x3FE6E14D1A6D9D1A)
          to label %1335 unwind label %1342

1335:                                             ; preds = %1334
  %1336 = invoke noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16) %215)
          to label %1337 unwind label %1344

1337:                                             ; preds = %1335
  %1338 = zext i1 %1336 to i8
  store i8 %1338, ptr %214, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull align 1 dereferenceable(1) %214, ptr noundef null)
          to label %1339 unwind label %1344

1339:                                             ; preds = %1337
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #8
  %1340 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
  br i1 %1340, label %1364, label %1347

1341:                                             ; preds = %1333, %1316
  %.pn564.pn.pn.pn = phi { ptr, i32 } [ %.pn564.pn.pn, %1333 ], [ %.pn562, %1316 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #8
  br label %1926

1342:                                             ; preds = %1334
  %1343 = landingpad { ptr, i32 }
          cleanup
  br label %1346

1344:                                             ; preds = %1337, %1335
  %1345 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #8
  br label %1346

1346:                                             ; preds = %1344, %1342
  %.pn569 = phi { ptr, i32 } [ %1345, %1344 ], [ %1343, %1342 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #8
  br label %1371

1347:                                             ; preds = %1339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %216) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %1348 unwind label %1353

1348:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %217) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %218) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %218, ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1349 unwind label %1355

1349:                                             ; preds = %1348
  %1350 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %217, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 98, ptr noundef %1350)
          to label %1351 unwind label %1357

1351:                                             ; preds = %1349
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %1352 unwind label %1359

1352:                                             ; preds = %1351
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %218) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #8
  br label %1364

1353:                                             ; preds = %1347
  %1354 = landingpad { ptr, i32 }
          cleanup
  br label %1363

1355:                                             ; preds = %1348
  %1356 = landingpad { ptr, i32 }
          cleanup
  br label %1362

1357:                                             ; preds = %1349
  %1358 = landingpad { ptr, i32 }
          cleanup
  br label %1361

1359:                                             ; preds = %1351
  %1360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #8
  br label %1361

1361:                                             ; preds = %1359, %1357
  %.pn571 = phi { ptr, i32 } [ %1360, %1359 ], [ %1358, %1357 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  br label %1362

1362:                                             ; preds = %1361, %1355
  %.pn571.pn = phi { ptr, i32 } [ %.pn571, %1361 ], [ %1356, %1355 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %218) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #8
  br label %1363

1363:                                             ; preds = %1362, %1353
  %.pn571.pn.pn = phi { ptr, i32 } [ %.pn571.pn, %1362 ], [ %1354, %1353 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #8
  br label %1371

1364:                                             ; preds = %1339, %1352
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %219) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %220) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %221) #8
  invoke void @_ZN4chen4jsonC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %221, ptr noundef nonnull @.str.52)
          to label %1365 unwind label %1372

1365:                                             ; preds = %1364
  %1366 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
          to label %1367 unwind label %1374

1367:                                             ; preds = %1365
  %1368 = zext i1 %1366 to i8
  store i8 %1368, ptr %220, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull align 1 dereferenceable(1) %220, ptr noundef null)
          to label %1369 unwind label %1374

1369:                                             ; preds = %1367
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #8
  %1370 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %219)
  br i1 %1370, label %1394, label %1377

1371:                                             ; preds = %1363, %1346
  %.pn571.pn.pn.pn = phi { ptr, i32 } [ %.pn571.pn.pn, %1363 ], [ %.pn569, %1346 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #8
  br label %1926

1372:                                             ; preds = %1364
  %1373 = landingpad { ptr, i32 }
          cleanup
  br label %1376

1374:                                             ; preds = %1367, %1365
  %1375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #8
  br label %1376

1376:                                             ; preds = %1374, %1372
  %.pn576 = phi { ptr, i32 } [ %1375, %1374 ], [ %1373, %1372 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %221) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #8
  br label %1402

1377:                                             ; preds = %1369
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %222) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %1378 unwind label %1383

1378:                                             ; preds = %1377
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %223) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %224) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %224, ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1379 unwind label %1385

1379:                                             ; preds = %1378
  %1380 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %224) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %223, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 99, ptr noundef %1380)
          to label %1381 unwind label %1387

1381:                                             ; preds = %1379
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %1382 unwind label %1389

1382:                                             ; preds = %1381
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %223) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %224) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %223) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #8
  br label %1394

1383:                                             ; preds = %1377
  %1384 = landingpad { ptr, i32 }
          cleanup
  br label %1393

1385:                                             ; preds = %1378
  %1386 = landingpad { ptr, i32 }
          cleanup
  br label %1392

1387:                                             ; preds = %1379
  %1388 = landingpad { ptr, i32 }
          cleanup
  br label %1391

1389:                                             ; preds = %1381
  %1390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %223) #8
  br label %1391

1391:                                             ; preds = %1389, %1387
  %.pn578 = phi { ptr, i32 } [ %1390, %1389 ], [ %1388, %1387 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #8
  br label %1392

1392:                                             ; preds = %1391, %1385
  %.pn578.pn = phi { ptr, i32 } [ %.pn578, %1391 ], [ %1386, %1385 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %224) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %223) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #8
  br label %1393

1393:                                             ; preds = %1392, %1383
  %.pn578.pn.pn = phi { ptr, i32 } [ %.pn578.pn, %1392 ], [ %1384, %1383 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #8
  br label %1402

1394:                                             ; preds = %1369, %1382
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %225) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %226) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %227) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %228) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %229) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull @.str.52, ptr noundef nonnull align 1 dereferenceable(1) %229)
          to label %1395 unwind label %1403

1395:                                             ; preds = %1394
  invoke void @_ZN4chen4jsonC1EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %227, ptr noundef nonnull align 8 dereferenceable(32) %228)
          to label %1396 unwind label %1405

1396:                                             ; preds = %1395
  %1397 = invoke noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
          to label %1398 unwind label %1407

1398:                                             ; preds = %1396
  %1399 = zext i1 %1397 to i8
  store i8 %1399, ptr %226, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull align 1 dereferenceable(1) %226, ptr noundef null)
          to label %1400 unwind label %1407

1400:                                             ; preds = %1398
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %229) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %227) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %226) #8
  %1401 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %225)
  br i1 %1401, label %1428, label %1411

1402:                                             ; preds = %1393, %1376
  %.pn578.pn.pn.pn = phi { ptr, i32 } [ %.pn578.pn.pn, %1393 ], [ %.pn576, %1376 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #8
  br label %1926

1403:                                             ; preds = %1394
  %1404 = landingpad { ptr, i32 }
          cleanup
  br label %1410

1405:                                             ; preds = %1395
  %1406 = landingpad { ptr, i32 }
          cleanup
  br label %1409

1407:                                             ; preds = %1398, %1396
  %1408 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #8
  br label %1409

1409:                                             ; preds = %1407, %1405
  %.pn583 = phi { ptr, i32 } [ %1408, %1407 ], [ %1406, %1405 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #8
  br label %1410

1410:                                             ; preds = %1409, %1403
  %.pn583.pn = phi { ptr, i32 } [ %.pn583, %1409 ], [ %1404, %1403 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %229) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %227) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %226) #8
  br label %1435

1411:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %230) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %230)
          to label %1412 unwind label %1417

1412:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %231) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %232) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %232, ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1413 unwind label %1419

1413:                                             ; preds = %1412
  %1414 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %232) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %231, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 100, ptr noundef %1414)
          to label %1415 unwind label %1421

1415:                                             ; preds = %1413
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(8) %230)
          to label %1416 unwind label %1423

1416:                                             ; preds = %1415
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %232) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #8
  br label %1428

1417:                                             ; preds = %1411
  %1418 = landingpad { ptr, i32 }
          cleanup
  br label %1427

1419:                                             ; preds = %1412
  %1420 = landingpad { ptr, i32 }
          cleanup
  br label %1426

1421:                                             ; preds = %1413
  %1422 = landingpad { ptr, i32 }
          cleanup
  br label %1425

1423:                                             ; preds = %1415
  %1424 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #8
  br label %1425

1425:                                             ; preds = %1423, %1421
  %.pn586 = phi { ptr, i32 } [ %1424, %1423 ], [ %1422, %1421 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #8
  br label %1426

1426:                                             ; preds = %1425, %1419
  %.pn586.pn = phi { ptr, i32 } [ %.pn586, %1425 ], [ %1420, %1419 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %232) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #8
  br label %1427

1427:                                             ; preds = %1426, %1417
  %.pn586.pn.pn = phi { ptr, i32 } [ %.pn586.pn, %1426 ], [ %1418, %1417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #8
  br label %1435

1428:                                             ; preds = %1400, %1416
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %225) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %233) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %234) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %235) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %235, i1 noundef zeroext true)
          to label %1429 unwind label %1436

1429:                                             ; preds = %1428
  %1430 = invoke noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16) %235)
          to label %1431 unwind label %1438

1431:                                             ; preds = %1429
  %1432 = zext i1 %1430 to i8
  store i8 %1432, ptr %234, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef nonnull align 1 dereferenceable(1) %234, ptr noundef null)
          to label %1433 unwind label %1438

1433:                                             ; preds = %1431
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %235) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %235) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %234) #8
  %1434 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %233)
  br i1 %1434, label %1458, label %1441

1435:                                             ; preds = %1427, %1410
  %.pn586.pn.pn.pn = phi { ptr, i32 } [ %.pn586.pn.pn, %1427 ], [ %.pn583.pn, %1410 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %225) #8
  br label %1926

1436:                                             ; preds = %1428
  %1437 = landingpad { ptr, i32 }
          cleanup
  br label %1440

1438:                                             ; preds = %1431, %1429
  %1439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %235) #8
  br label %1440

1440:                                             ; preds = %1438, %1436
  %.pn591 = phi { ptr, i32 } [ %1439, %1438 ], [ %1437, %1436 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %235) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %234) #8
  br label %1465

1441:                                             ; preds = %1433
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %236) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %1442 unwind label %1447

1442:                                             ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %237) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %238) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %238, ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1443 unwind label %1449

1443:                                             ; preds = %1442
  %1444 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %237, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 101, ptr noundef %1444)
          to label %1445 unwind label %1451

1445:                                             ; preds = %1443
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %1446 unwind label %1453

1446:                                             ; preds = %1445
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %238) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %236) #8
  br label %1458

1447:                                             ; preds = %1441
  %1448 = landingpad { ptr, i32 }
          cleanup
  br label %1457

1449:                                             ; preds = %1442
  %1450 = landingpad { ptr, i32 }
          cleanup
  br label %1456

1451:                                             ; preds = %1443
  %1452 = landingpad { ptr, i32 }
          cleanup
  br label %1455

1453:                                             ; preds = %1445
  %1454 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #8
  br label %1455

1455:                                             ; preds = %1453, %1451
  %.pn593 = phi { ptr, i32 } [ %1454, %1453 ], [ %1452, %1451 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  br label %1456

1456:                                             ; preds = %1455, %1449
  %.pn593.pn = phi { ptr, i32 } [ %.pn593, %1455 ], [ %1450, %1449 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %238) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #8
  br label %1457

1457:                                             ; preds = %1456, %1447
  %.pn593.pn.pn = phi { ptr, i32 } [ %.pn593.pn, %1456 ], [ %1448, %1447 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %236) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #8
  br label %1465

1458:                                             ; preds = %1433, %1446
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %239) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %240) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %241) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %241, i1 noundef zeroext false)
          to label %1459 unwind label %1466

1459:                                             ; preds = %1458
  %1460 = invoke noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16) %241)
          to label %1461 unwind label %1468

1461:                                             ; preds = %1459
  %1462 = zext i1 %1460 to i8
  store i8 %1462, ptr %240, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %239, ptr noundef nonnull align 1 dereferenceable(1) %240, ptr noundef null)
          to label %1463 unwind label %1468

1463:                                             ; preds = %1461
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %241) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %241) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #8
  %1464 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %239)
  br i1 %1464, label %1488, label %1471

1465:                                             ; preds = %1457, %1440
  %.pn593.pn.pn.pn = phi { ptr, i32 } [ %.pn593.pn.pn, %1457 ], [ %.pn591, %1440 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #8
  br label %1926

1466:                                             ; preds = %1458
  %1467 = landingpad { ptr, i32 }
          cleanup
  br label %1470

1468:                                             ; preds = %1461, %1459
  %1469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %241) #8
  br label %1470

1470:                                             ; preds = %1468, %1466
  %.pn598 = phi { ptr, i32 } [ %1469, %1468 ], [ %1467, %1466 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %241) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #8
  br label %1495

1471:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %242) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %242)
          to label %1472 unwind label %1477

1472:                                             ; preds = %1471
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %243) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %244) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %244, ptr noundef nonnull align 8 dereferenceable(16) %239, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1473 unwind label %1479

1473:                                             ; preds = %1472
  %1474 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %244) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %243, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 102, ptr noundef %1474)
          to label %1475 unwind label %1481

1475:                                             ; preds = %1473
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull align 8 dereferenceable(8) %242)
          to label %1476 unwind label %1483

1476:                                             ; preds = %1475
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #8
  br label %1488

1477:                                             ; preds = %1471
  %1478 = landingpad { ptr, i32 }
          cleanup
  br label %1487

1479:                                             ; preds = %1472
  %1480 = landingpad { ptr, i32 }
          cleanup
  br label %1486

1481:                                             ; preds = %1473
  %1482 = landingpad { ptr, i32 }
          cleanup
  br label %1485

1483:                                             ; preds = %1475
  %1484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #8
  br label %1485

1485:                                             ; preds = %1483, %1481
  %.pn600 = phi { ptr, i32 } [ %1484, %1483 ], [ %1482, %1481 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #8
  br label %1486

1486:                                             ; preds = %1485, %1479
  %.pn600.pn = phi { ptr, i32 } [ %.pn600, %1485 ], [ %1480, %1479 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %244) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #8
  br label %1487

1487:                                             ; preds = %1486, %1477
  %.pn600.pn.pn = phi { ptr, i32 } [ %.pn600.pn, %1486 ], [ %1478, %1477 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #8
  br label %1495

1488:                                             ; preds = %1463, %1476
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %245) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %246) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %247) #8
  invoke void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16) %247, i1 noundef zeroext true)
          to label %1489 unwind label %1496

1489:                                             ; preds = %1488
  %1490 = invoke noundef zeroext i1 @_ZNK4chen4json6isBoolEv(ptr noundef nonnull align 8 dereferenceable(16) %247)
          to label %1491 unwind label %1498

1491:                                             ; preds = %1489
  %1492 = zext i1 %1490 to i8
  store i8 %1492, ptr %246, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef nonnull align 1 dereferenceable(1) %246, ptr noundef null)
          to label %1493 unwind label %1498

1493:                                             ; preds = %1491
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %247) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %247) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %246) #8
  %1494 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
  br i1 %1494, label %1518, label %1501

1495:                                             ; preds = %1487, %1470
  %.pn600.pn.pn.pn = phi { ptr, i32 } [ %.pn600.pn.pn, %1487 ], [ %.pn598, %1470 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #8
  br label %1926

1496:                                             ; preds = %1488
  %1497 = landingpad { ptr, i32 }
          cleanup
  br label %1500

1498:                                             ; preds = %1491, %1489
  %1499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %247) #8
  br label %1500

1500:                                             ; preds = %1498, %1496
  %.pn605 = phi { ptr, i32 } [ %1499, %1498 ], [ %1497, %1496 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %247) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %246) #8
  br label %1525

1501:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %248) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %248)
          to label %1502 unwind label %1507

1502:                                             ; preds = %1501
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %249) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %250) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %250, ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1503 unwind label %1509

1503:                                             ; preds = %1502
  %1504 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %250) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %249, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 103, ptr noundef %1504)
          to label %1505 unwind label %1511

1505:                                             ; preds = %1503
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(8) %248)
          to label %1506 unwind label %1513

1506:                                             ; preds = %1505
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %248) #8
  br label %1518

1507:                                             ; preds = %1501
  %1508 = landingpad { ptr, i32 }
          cleanup
  br label %1517

1509:                                             ; preds = %1502
  %1510 = landingpad { ptr, i32 }
          cleanup
  br label %1516

1511:                                             ; preds = %1503
  %1512 = landingpad { ptr, i32 }
          cleanup
  br label %1515

1513:                                             ; preds = %1505
  %1514 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #8
  br label %1515

1515:                                             ; preds = %1513, %1511
  %.pn607 = phi { ptr, i32 } [ %1514, %1513 ], [ %1512, %1511 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #8
  br label %1516

1516:                                             ; preds = %1515, %1509
  %.pn607.pn = phi { ptr, i32 } [ %.pn607, %1515 ], [ %1510, %1509 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %250) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #8
  br label %1517

1517:                                             ; preds = %1516, %1507
  %.pn607.pn.pn = phi { ptr, i32 } [ %.pn607.pn, %1516 ], [ %1508, %1507 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %248) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #8
  br label %1525

1518:                                             ; preds = %1493, %1506
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %251) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %252) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %253) #8
  invoke void @_ZN4chen4jsonC1EDn(ptr noundef nonnull align 8 dereferenceable(16) %253, ptr null)
          to label %1519 unwind label %1526

1519:                                             ; preds = %1518
  %1520 = invoke noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %1521 unwind label %1528

1521:                                             ; preds = %1519
  %1522 = zext i1 %1520 to i8
  store i8 %1522, ptr %252, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef nonnull align 1 dereferenceable(1) %252, ptr noundef null)
          to label %1523 unwind label %1528

1523:                                             ; preds = %1521
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %252) #8
  %1524 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %251)
  br i1 %1524, label %1548, label %1531

1525:                                             ; preds = %1517, %1500
  %.pn607.pn.pn.pn = phi { ptr, i32 } [ %.pn607.pn.pn, %1517 ], [ %.pn605, %1500 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #8
  br label %1926

1526:                                             ; preds = %1518
  %1527 = landingpad { ptr, i32 }
          cleanup
  br label %1530

1528:                                             ; preds = %1521, %1519
  %1529 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #8
  br label %1530

1530:                                             ; preds = %1528, %1526
  %.pn612 = phi { ptr, i32 } [ %1529, %1528 ], [ %1527, %1526 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %252) #8
  br label %1556

1531:                                             ; preds = %1523
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %254) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %1532 unwind label %1537

1532:                                             ; preds = %1531
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %255) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %256) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %256, ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1533 unwind label %1539

1533:                                             ; preds = %1532
  %1534 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %256) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %255, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 104, ptr noundef %1534)
          to label %1535 unwind label %1541

1535:                                             ; preds = %1533
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %1536 unwind label %1543

1536:                                             ; preds = %1535
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %256) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %254) #8
  br label %1548

1537:                                             ; preds = %1531
  %1538 = landingpad { ptr, i32 }
          cleanup
  br label %1547

1539:                                             ; preds = %1532
  %1540 = landingpad { ptr, i32 }
          cleanup
  br label %1546

1541:                                             ; preds = %1533
  %1542 = landingpad { ptr, i32 }
          cleanup
  br label %1545

1543:                                             ; preds = %1535
  %1544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #8
  br label %1545

1545:                                             ; preds = %1543, %1541
  %.pn614 = phi { ptr, i32 } [ %1544, %1543 ], [ %1542, %1541 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #8
  br label %1546

1546:                                             ; preds = %1545, %1539
  %.pn614.pn = phi { ptr, i32 } [ %.pn614, %1545 ], [ %1540, %1539 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %256) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #8
  br label %1547

1547:                                             ; preds = %1546, %1537
  %.pn614.pn.pn = phi { ptr, i32 } [ %.pn614.pn, %1546 ], [ %1538, %1537 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %254) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #8
  br label %1556

1548:                                             ; preds = %1523, %1536
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %257) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %258) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %259) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %260) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %261) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %261) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %260, ptr noundef nonnull @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %261)
          to label %1549 unwind label %1557

1549:                                             ; preds = %1548
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %259, ptr noundef nonnull align 8 dereferenceable(32) %260, i1 noundef zeroext false)
          to label %1550 unwind label %1559

1550:                                             ; preds = %1549
  %1551 = invoke noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16) %259)
          to label %1552 unwind label %1561

1552:                                             ; preds = %1550
  %1553 = zext i1 %1551 to i8
  store i8 %1553, ptr %258, align 1, !tbaa !16
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef nonnull align 1 dereferenceable(1) %258, ptr noundef null)
          to label %1554 unwind label %1561

1554:                                             ; preds = %1552
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %261) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %261) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %259) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %258) #8
  %1555 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %257)
  br i1 %1555, label %1582, label %1565

1556:                                             ; preds = %1547, %1530
  %.pn614.pn.pn.pn = phi { ptr, i32 } [ %.pn614.pn.pn, %1547 ], [ %.pn612, %1530 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #8
  br label %1926

1557:                                             ; preds = %1548
  %1558 = landingpad { ptr, i32 }
          cleanup
  br label %1564

1559:                                             ; preds = %1549
  %1560 = landingpad { ptr, i32 }
          cleanup
  br label %1563

1561:                                             ; preds = %1552, %1550
  %1562 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #8
  br label %1563

1563:                                             ; preds = %1561, %1559
  %.pn619 = phi { ptr, i32 } [ %1562, %1561 ], [ %1560, %1559 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #8
  br label %1564

1564:                                             ; preds = %1563, %1557
  %.pn619.pn = phi { ptr, i32 } [ %.pn619, %1563 ], [ %1558, %1557 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %261) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %261) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %259) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %258) #8
  br label %1590

1565:                                             ; preds = %1554
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %262) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %262)
          to label %1566 unwind label %1571

1566:                                             ; preds = %1565
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %263) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %264) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %264, ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16)
          to label %1567 unwind label %1573

1567:                                             ; preds = %1566
  %1568 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %264) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %263, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 107, ptr noundef %1568)
          to label %1569 unwind label %1575

1569:                                             ; preds = %1567
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull align 8 dereferenceable(8) %262)
          to label %1570 unwind label %1577

1570:                                             ; preds = %1569
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %264) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %263) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %262) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #8
  br label %1582

1571:                                             ; preds = %1565
  %1572 = landingpad { ptr, i32 }
          cleanup
  br label %1581

1573:                                             ; preds = %1566
  %1574 = landingpad { ptr, i32 }
          cleanup
  br label %1580

1575:                                             ; preds = %1567
  %1576 = landingpad { ptr, i32 }
          cleanup
  br label %1579

1577:                                             ; preds = %1569
  %1578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #8
  br label %1579

1579:                                             ; preds = %1577, %1575
  %.pn622 = phi { ptr, i32 } [ %1578, %1577 ], [ %1576, %1575 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #8
  br label %1580

1580:                                             ; preds = %1579, %1573
  %.pn622.pn = phi { ptr, i32 } [ %.pn622, %1579 ], [ %1574, %1573 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %264) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %263) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %262) #8
  br label %1581

1581:                                             ; preds = %1580, %1571
  %.pn622.pn.pn = phi { ptr, i32 } [ %.pn622.pn, %1580 ], [ %1572, %1571 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #8
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #8
  br label %1590

1582:                                             ; preds = %1554, %1570
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %257) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %265) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull @.str.61)
  %1583 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %265)
  br i1 %1583, label %1584, label %.thread

1584:                                             ; preds = %1582
  %1585 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1586 unwind label %1591

1586:                                             ; preds = %1584
  br i1 %1585, label %1587, label %.critedge

1587:                                             ; preds = %1586
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %267) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %268) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull @.str.62, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %1588 unwind label %1593

1588:                                             ; preds = %1587
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %266, ptr noundef nonnull align 8 dereferenceable(32) %267, i1 noundef zeroext false)
          to label %1589 unwind label %1595

1589:                                             ; preds = %1588
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %266) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %267) #8
  br label %.critedge

1590:                                             ; preds = %1581, %1564
  %.pn622.pn.pn.pn = phi { ptr, i32 } [ %.pn622.pn.pn, %1581 ], [ %.pn619.pn, %1564 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %257) #8
  br label %1926

1591:                                             ; preds = %1584
  %1592 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1598

1593:                                             ; preds = %1587
  %1594 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1597

1595:                                             ; preds = %1588
  %1596 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  br label %1597

1597:                                             ; preds = %1595, %1593
  %.pn627 = phi { ptr, i32 } [ %1596, %1595 ], [ %1594, %1593 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %267) #8
  br label %1598

1598:                                             ; preds = %1597, %1591
  %.pn627.pn = phi { ptr, i32 } [ %.pn627, %1597 ], [ %1592, %1591 ]
  %.188 = extractvalue { ptr, i32 } %.pn627.pn, 0
  %.188287 = extractvalue { ptr, i32 } %.pn627.pn, 1
  %1599 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1600 = icmp eq i32 %.188287, %1599
  %1601 = call ptr @__cxa_begin_catch(ptr %.188) #8
  br i1 %1600, label %1602, label %1603

1602:                                             ; preds = %1598
  invoke void @__cxa_end_catch()
          to label %1620 unwind label %1606

.critedge:                                        ; preds = %1586, %1589
  store ptr @.str.64, ptr %265, align 8, !tbaa !18
  br label %.thread

1603:                                             ; preds = %1598
  store ptr @.str.63, ptr %265, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread unwind label %1604

1604:                                             ; preds = %1603
  %1605 = landingpad { ptr, i32 }
          cleanup
  br label %1628

1606:                                             ; preds = %1602
  %1607 = landingpad { ptr, i32 }
          cleanup
  br label %1628

.thread:                                          ; preds = %1603, %.critedge, %1582
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %269) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %269)
          to label %1608 unwind label %1612

1608:                                             ; preds = %.thread
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %270) #8
  %1609 = load ptr, ptr %265, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %270, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 108, ptr noundef %1609)
          to label %1610 unwind label %1614

1610:                                             ; preds = %1608
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(8) %269)
          to label %1611 unwind label %1616

1611:                                             ; preds = %1610
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %269) #8
  br label %1620

1612:                                             ; preds = %.thread
  %1613 = landingpad { ptr, i32 }
          cleanup
  br label %1619

1614:                                             ; preds = %1608
  %1615 = landingpad { ptr, i32 }
          cleanup
  br label %1618

1616:                                             ; preds = %1610
  %1617 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #8
  br label %1618

1618:                                             ; preds = %1616, %1614
  %.pn632 = phi { ptr, i32 } [ %1617, %1616 ], [ %1615, %1614 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #8
  br label %1619

1619:                                             ; preds = %1618, %1612
  %.pn632.pn = phi { ptr, i32 } [ %.pn632, %1618 ], [ %1613, %1612 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %269) #8
  br label %1628

1620:                                             ; preds = %1602, %1611
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %271) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull @.str.61)
  %1621 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %271)
  br i1 %1621, label %1622, label %.thread762

1622:                                             ; preds = %1620
  %1623 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1624 unwind label %1629

1624:                                             ; preds = %1622
  br i1 %1623, label %1625, label %.critedge728

1625:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %273) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %274) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %274) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %273, ptr noundef nonnull @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %274)
          to label %1626 unwind label %1631

1626:                                             ; preds = %1625
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %272, ptr noundef nonnull align 8 dereferenceable(32) %273, i1 noundef zeroext false)
          to label %1627 unwind label %1633

1627:                                             ; preds = %1626
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %272) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %274) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %273) #8
  br label %.critedge728

1628:                                             ; preds = %1604, %1606, %1619
  %.pn632.pn.pn = phi { ptr, i32 } [ %.pn632.pn, %1619 ], [ %1607, %1606 ], [ %1605, %1604 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #8
  br label %1926

1629:                                             ; preds = %1622
  %1630 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1636

1631:                                             ; preds = %1625
  %1632 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1635

1633:                                             ; preds = %1626
  %1634 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #8
  br label %1635

1635:                                             ; preds = %1633, %1631
  %.pn636 = phi { ptr, i32 } [ %1634, %1633 ], [ %1632, %1631 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %274) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %273) #8
  br label %1636

1636:                                             ; preds = %1635, %1629
  %.pn636.pn = phi { ptr, i32 } [ %.pn636, %1635 ], [ %1630, %1629 ]
  %.194 = extractvalue { ptr, i32 } %.pn636.pn, 0
  %.194293 = extractvalue { ptr, i32 } %.pn636.pn, 1
  %1637 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1638 = icmp eq i32 %.194293, %1637
  %1639 = call ptr @__cxa_begin_catch(ptr %.194) #8
  br i1 %1638, label %1640, label %1641

1640:                                             ; preds = %1636
  invoke void @__cxa_end_catch()
          to label %1658 unwind label %1644

.critedge728:                                     ; preds = %1624, %1627
  store ptr @.str.67, ptr %271, align 8, !tbaa !18
  br label %.thread762

1641:                                             ; preds = %1636
  store ptr @.str.66, ptr %271, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread762 unwind label %1642

1642:                                             ; preds = %1641
  %1643 = landingpad { ptr, i32 }
          cleanup
  br label %1666

1644:                                             ; preds = %1640
  %1645 = landingpad { ptr, i32 }
          cleanup
  br label %1666

.thread762:                                       ; preds = %1641, %.critedge728, %1620
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %275) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %1646 unwind label %1650

1646:                                             ; preds = %.thread762
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %276) #8
  %1647 = load ptr, ptr %271, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %276, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 109, ptr noundef %1647)
          to label %1648 unwind label %1652

1648:                                             ; preds = %1646
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %1649 unwind label %1654

1649:                                             ; preds = %1648
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %275) #8
  br label %1658

1650:                                             ; preds = %.thread762
  %1651 = landingpad { ptr, i32 }
          cleanup
  br label %1657

1652:                                             ; preds = %1646
  %1653 = landingpad { ptr, i32 }
          cleanup
  br label %1656

1654:                                             ; preds = %1648
  %1655 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #8
  br label %1656

1656:                                             ; preds = %1654, %1652
  %.pn641 = phi { ptr, i32 } [ %1655, %1654 ], [ %1653, %1652 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #8
  br label %1657

1657:                                             ; preds = %1656, %1650
  %.pn641.pn = phi { ptr, i32 } [ %.pn641, %1656 ], [ %1651, %1650 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %275) #8
  br label %1666

1658:                                             ; preds = %1640, %1649
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %277) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull @.str.61)
  %1659 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %277)
  br i1 %1659, label %1660, label %.thread766

1660:                                             ; preds = %1658
  %1661 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1662 unwind label %1667

1662:                                             ; preds = %1660
  br i1 %1661, label %1663, label %.critedge732

1663:                                             ; preds = %1662
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %279) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %280) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %280)
          to label %1664 unwind label %1669

1664:                                             ; preds = %1663
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %278, ptr noundef nonnull align 8 dereferenceable(32) %279, i1 noundef zeroext false)
          to label %1665 unwind label %1671

1665:                                             ; preds = %1664
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %278) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #8
  br label %.critedge732

1666:                                             ; preds = %1642, %1644, %1657
  %.pn641.pn.pn = phi { ptr, i32 } [ %.pn641.pn, %1657 ], [ %1645, %1644 ], [ %1643, %1642 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #8
  br label %1926

1667:                                             ; preds = %1660
  %1668 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1674

1669:                                             ; preds = %1663
  %1670 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1673

1671:                                             ; preds = %1664
  %1672 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #8
  br label %1673

1673:                                             ; preds = %1671, %1669
  %.pn645 = phi { ptr, i32 } [ %1672, %1671 ], [ %1670, %1669 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %279) #8
  br label %1674

1674:                                             ; preds = %1673, %1667
  %.pn645.pn = phi { ptr, i32 } [ %.pn645, %1673 ], [ %1668, %1667 ]
  %.200 = extractvalue { ptr, i32 } %.pn645.pn, 0
  %.200299 = extractvalue { ptr, i32 } %.pn645.pn, 1
  %1675 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1676 = icmp eq i32 %.200299, %1675
  %1677 = call ptr @__cxa_begin_catch(ptr %.200) #8
  br i1 %1676, label %1678, label %1679

1678:                                             ; preds = %1674
  invoke void @__cxa_end_catch()
          to label %1696 unwind label %1682

.critedge732:                                     ; preds = %1662, %1665
  store ptr @.str.70, ptr %277, align 8, !tbaa !18
  br label %.thread766

1679:                                             ; preds = %1674
  store ptr @.str.69, ptr %277, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread766 unwind label %1680

1680:                                             ; preds = %1679
  %1681 = landingpad { ptr, i32 }
          cleanup
  br label %1704

1682:                                             ; preds = %1678
  %1683 = landingpad { ptr, i32 }
          cleanup
  br label %1704

.thread766:                                       ; preds = %1679, %.critedge732, %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %281) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %1684 unwind label %1688

1684:                                             ; preds = %.thread766
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %282) #8
  %1685 = load ptr, ptr %277, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %282, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 110, ptr noundef %1685)
          to label %1686 unwind label %1690

1686:                                             ; preds = %1684
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %1687 unwind label %1692

1687:                                             ; preds = %1686
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %281) #8
  br label %1696

1688:                                             ; preds = %.thread766
  %1689 = landingpad { ptr, i32 }
          cleanup
  br label %1695

1690:                                             ; preds = %1684
  %1691 = landingpad { ptr, i32 }
          cleanup
  br label %1694

1692:                                             ; preds = %1686
  %1693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #8
  br label %1694

1694:                                             ; preds = %1692, %1690
  %.pn650 = phi { ptr, i32 } [ %1693, %1692 ], [ %1691, %1690 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #8
  br label %1695

1695:                                             ; preds = %1694, %1688
  %.pn650.pn = phi { ptr, i32 } [ %.pn650, %1694 ], [ %1689, %1688 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %281) #8
  br label %1704

1696:                                             ; preds = %1678, %1687
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %283) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull @.str.61)
  %1697 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %283)
  br i1 %1697, label %1698, label %.thread770

1698:                                             ; preds = %1696
  %1699 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1700 unwind label %1705

1700:                                             ; preds = %1698
  br i1 %1699, label %1701, label %.critedge736

1701:                                             ; preds = %1700
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %285) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %286) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %286) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %285, ptr noundef nonnull @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %286)
          to label %1702 unwind label %1707

1702:                                             ; preds = %1701
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %284, ptr noundef nonnull align 8 dereferenceable(32) %285, i1 noundef zeroext false)
          to label %1703 unwind label %1709

1703:                                             ; preds = %1702
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %284) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %285) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %286) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %286) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %285) #8
  br label %.critedge736

1704:                                             ; preds = %1680, %1682, %1695
  %.pn650.pn.pn = phi { ptr, i32 } [ %.pn650.pn, %1695 ], [ %1683, %1682 ], [ %1681, %1680 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #8
  br label %1926

1705:                                             ; preds = %1698
  %1706 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1712

1707:                                             ; preds = %1701
  %1708 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1711

1709:                                             ; preds = %1702
  %1710 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %285) #8
  br label %1711

1711:                                             ; preds = %1709, %1707
  %.pn654 = phi { ptr, i32 } [ %1710, %1709 ], [ %1708, %1707 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %286) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %286) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %285) #8
  br label %1712

1712:                                             ; preds = %1711, %1705
  %.pn654.pn = phi { ptr, i32 } [ %.pn654, %1711 ], [ %1706, %1705 ]
  %.206 = extractvalue { ptr, i32 } %.pn654.pn, 0
  %.206305 = extractvalue { ptr, i32 } %.pn654.pn, 1
  %1713 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1714 = icmp eq i32 %.206305, %1713
  %1715 = call ptr @__cxa_begin_catch(ptr %.206) #8
  br i1 %1714, label %1716, label %1717

1716:                                             ; preds = %1712
  invoke void @__cxa_end_catch()
          to label %1734 unwind label %1720

.critedge736:                                     ; preds = %1700, %1703
  store ptr @.str.73, ptr %283, align 8, !tbaa !18
  br label %.thread770

1717:                                             ; preds = %1712
  store ptr @.str.72, ptr %283, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread770 unwind label %1718

1718:                                             ; preds = %1717
  %1719 = landingpad { ptr, i32 }
          cleanup
  br label %1742

1720:                                             ; preds = %1716
  %1721 = landingpad { ptr, i32 }
          cleanup
  br label %1742

.thread770:                                       ; preds = %1717, %.critedge736, %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %287) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %1722 unwind label %1726

1722:                                             ; preds = %.thread770
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %288) #8
  %1723 = load ptr, ptr %283, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %288, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 111, ptr noundef %1723)
          to label %1724 unwind label %1728

1724:                                             ; preds = %1722
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %1725 unwind label %1730

1725:                                             ; preds = %1724
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %287) #8
  br label %1734

1726:                                             ; preds = %.thread770
  %1727 = landingpad { ptr, i32 }
          cleanup
  br label %1733

1728:                                             ; preds = %1722
  %1729 = landingpad { ptr, i32 }
          cleanup
  br label %1732

1730:                                             ; preds = %1724
  %1731 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #8
  br label %1732

1732:                                             ; preds = %1730, %1728
  %.pn659 = phi { ptr, i32 } [ %1731, %1730 ], [ %1729, %1728 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #8
  br label %1733

1733:                                             ; preds = %1732, %1726
  %.pn659.pn = phi { ptr, i32 } [ %.pn659, %1732 ], [ %1727, %1726 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %287) #8
  br label %1742

1734:                                             ; preds = %1716, %1725
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %289) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull @.str.61)
  %1735 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %289)
  br i1 %1735, label %1736, label %.thread774

1736:                                             ; preds = %1734
  %1737 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1738 unwind label %1743

1738:                                             ; preds = %1736
  br i1 %1737, label %1739, label %.critedge740

1739:                                             ; preds = %1738
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %291) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %292) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %292)
          to label %1740 unwind label %1745

1740:                                             ; preds = %1739
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %290, ptr noundef nonnull align 8 dereferenceable(32) %291, i1 noundef zeroext false)
          to label %1741 unwind label %1747

1741:                                             ; preds = %1740
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %290) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %292) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %291) #8
  br label %.critedge740

1742:                                             ; preds = %1718, %1720, %1733
  %.pn659.pn.pn = phi { ptr, i32 } [ %.pn659.pn, %1733 ], [ %1721, %1720 ], [ %1719, %1718 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #8
  br label %1926

1743:                                             ; preds = %1736
  %1744 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1750

1745:                                             ; preds = %1739
  %1746 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1749

1747:                                             ; preds = %1740
  %1748 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #8
  br label %1749

1749:                                             ; preds = %1747, %1745
  %.pn663 = phi { ptr, i32 } [ %1748, %1747 ], [ %1746, %1745 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %292) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %292) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %291) #8
  br label %1750

1750:                                             ; preds = %1749, %1743
  %.pn663.pn = phi { ptr, i32 } [ %.pn663, %1749 ], [ %1744, %1743 ]
  %.212 = extractvalue { ptr, i32 } %.pn663.pn, 0
  %.212311 = extractvalue { ptr, i32 } %.pn663.pn, 1
  %1751 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1752 = icmp eq i32 %.212311, %1751
  %1753 = call ptr @__cxa_begin_catch(ptr %.212) #8
  br i1 %1752, label %1754, label %1755

1754:                                             ; preds = %1750
  invoke void @__cxa_end_catch()
          to label %1772 unwind label %1758

.critedge740:                                     ; preds = %1738, %1741
  store ptr @.str.76, ptr %289, align 8, !tbaa !18
  br label %.thread774

1755:                                             ; preds = %1750
  store ptr @.str.75, ptr %289, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread774 unwind label %1756

1756:                                             ; preds = %1755
  %1757 = landingpad { ptr, i32 }
          cleanup
  br label %1780

1758:                                             ; preds = %1754
  %1759 = landingpad { ptr, i32 }
          cleanup
  br label %1780

.thread774:                                       ; preds = %1755, %.critedge740, %1734
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %293) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %1760 unwind label %1764

1760:                                             ; preds = %.thread774
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %294) #8
  %1761 = load ptr, ptr %289, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 112, ptr noundef %1761)
          to label %1762 unwind label %1766

1762:                                             ; preds = %1760
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %1763 unwind label %1768

1763:                                             ; preds = %1762
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %293) #8
  br label %1772

1764:                                             ; preds = %.thread774
  %1765 = landingpad { ptr, i32 }
          cleanup
  br label %1771

1766:                                             ; preds = %1760
  %1767 = landingpad { ptr, i32 }
          cleanup
  br label %1770

1768:                                             ; preds = %1762
  %1769 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #8
  br label %1770

1770:                                             ; preds = %1768, %1766
  %.pn668 = phi { ptr, i32 } [ %1769, %1768 ], [ %1767, %1766 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #8
  br label %1771

1771:                                             ; preds = %1770, %1764
  %.pn668.pn = phi { ptr, i32 } [ %.pn668, %1770 ], [ %1765, %1764 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %293) #8
  br label %1780

1772:                                             ; preds = %1754, %1763
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %295) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull @.str.61)
  %1773 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %295)
  br i1 %1773, label %1774, label %.thread778

1774:                                             ; preds = %1772
  %1775 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1776 unwind label %1781

1776:                                             ; preds = %1774
  br i1 %1775, label %1777, label %.critedge744

1777:                                             ; preds = %1776
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %297) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %298) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %1778 unwind label %1783

1778:                                             ; preds = %1777
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %296, ptr noundef nonnull align 8 dereferenceable(32) %297, i1 noundef zeroext false)
          to label %1779 unwind label %1785

1779:                                             ; preds = %1778
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %296) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #8
  br label %.critedge744

1780:                                             ; preds = %1756, %1758, %1771
  %.pn668.pn.pn = phi { ptr, i32 } [ %.pn668.pn, %1771 ], [ %1759, %1758 ], [ %1757, %1756 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #8
  br label %1926

1781:                                             ; preds = %1774
  %1782 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1788

1783:                                             ; preds = %1777
  %1784 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1787

1785:                                             ; preds = %1778
  %1786 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #8
  br label %1787

1787:                                             ; preds = %1785, %1783
  %.pn672 = phi { ptr, i32 } [ %1786, %1785 ], [ %1784, %1783 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #8
  br label %1788

1788:                                             ; preds = %1787, %1781
  %.pn672.pn = phi { ptr, i32 } [ %.pn672, %1787 ], [ %1782, %1781 ]
  %.218 = extractvalue { ptr, i32 } %.pn672.pn, 0
  %.218317 = extractvalue { ptr, i32 } %.pn672.pn, 1
  %1789 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1790 = icmp eq i32 %.218317, %1789
  %1791 = call ptr @__cxa_begin_catch(ptr %.218) #8
  br i1 %1790, label %1792, label %1793

1792:                                             ; preds = %1788
  invoke void @__cxa_end_catch()
          to label %1810 unwind label %1796

.critedge744:                                     ; preds = %1776, %1779
  store ptr @.str.79, ptr %295, align 8, !tbaa !18
  br label %.thread778

1793:                                             ; preds = %1788
  store ptr @.str.78, ptr %295, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread778 unwind label %1794

1794:                                             ; preds = %1793
  %1795 = landingpad { ptr, i32 }
          cleanup
  br label %1818

1796:                                             ; preds = %1792
  %1797 = landingpad { ptr, i32 }
          cleanup
  br label %1818

.thread778:                                       ; preds = %1793, %.critedge744, %1772
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %299) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %1798 unwind label %1802

1798:                                             ; preds = %.thread778
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %300) #8
  %1799 = load ptr, ptr %295, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %300, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 113, ptr noundef %1799)
          to label %1800 unwind label %1804

1800:                                             ; preds = %1798
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %1801 unwind label %1806

1801:                                             ; preds = %1800
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %299) #8
  br label %1810

1802:                                             ; preds = %.thread778
  %1803 = landingpad { ptr, i32 }
          cleanup
  br label %1809

1804:                                             ; preds = %1798
  %1805 = landingpad { ptr, i32 }
          cleanup
  br label %1808

1806:                                             ; preds = %1800
  %1807 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #8
  br label %1808

1808:                                             ; preds = %1806, %1804
  %.pn677 = phi { ptr, i32 } [ %1807, %1806 ], [ %1805, %1804 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #8
  br label %1809

1809:                                             ; preds = %1808, %1802
  %.pn677.pn = phi { ptr, i32 } [ %.pn677, %1808 ], [ %1803, %1802 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %299) #8
  br label %1818

1810:                                             ; preds = %1792, %1801
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %301) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull @.str.61)
  %1811 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %301)
  br i1 %1811, label %1812, label %.thread782

1812:                                             ; preds = %1810
  %1813 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1814 unwind label %1819

1814:                                             ; preds = %1812
  br i1 %1813, label %1815, label %.critedge748

1815:                                             ; preds = %1814
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %303) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %1816 unwind label %1821

1816:                                             ; preds = %1815
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %302, ptr noundef nonnull align 8 dereferenceable(32) %303, i1 noundef zeroext false)
          to label %1817 unwind label %1823

1817:                                             ; preds = %1816
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %302) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #8
  br label %.critedge748

1818:                                             ; preds = %1794, %1796, %1809
  %.pn677.pn.pn = phi { ptr, i32 } [ %.pn677.pn, %1809 ], [ %1797, %1796 ], [ %1795, %1794 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #8
  br label %1926

1819:                                             ; preds = %1812
  %1820 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1826

1821:                                             ; preds = %1815
  %1822 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1825

1823:                                             ; preds = %1816
  %1824 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #8
  br label %1825

1825:                                             ; preds = %1823, %1821
  %.pn681 = phi { ptr, i32 } [ %1824, %1823 ], [ %1822, %1821 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #8
  br label %1826

1826:                                             ; preds = %1825, %1819
  %.pn681.pn = phi { ptr, i32 } [ %.pn681, %1825 ], [ %1820, %1819 ]
  %.224 = extractvalue { ptr, i32 } %.pn681.pn, 0
  %.224323 = extractvalue { ptr, i32 } %.pn681.pn, 1
  %1827 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1828 = icmp eq i32 %.224323, %1827
  %1829 = call ptr @__cxa_begin_catch(ptr %.224) #8
  br i1 %1828, label %1830, label %1831

1830:                                             ; preds = %1826
  invoke void @__cxa_end_catch()
          to label %1848 unwind label %1834

.critedge748:                                     ; preds = %1814, %1817
  store ptr @.str.82, ptr %301, align 8, !tbaa !18
  br label %.thread782

1831:                                             ; preds = %1826
  store ptr @.str.81, ptr %301, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread782 unwind label %1832

1832:                                             ; preds = %1831
  %1833 = landingpad { ptr, i32 }
          cleanup
  br label %1856

1834:                                             ; preds = %1830
  %1835 = landingpad { ptr, i32 }
          cleanup
  br label %1856

.thread782:                                       ; preds = %1831, %.critedge748, %1810
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %305) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %1836 unwind label %1840

1836:                                             ; preds = %.thread782
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %306) #8
  %1837 = load ptr, ptr %301, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %306, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 114, ptr noundef %1837)
          to label %1838 unwind label %1842

1838:                                             ; preds = %1836
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %1839 unwind label %1844

1839:                                             ; preds = %1838
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #8
  br label %1848

1840:                                             ; preds = %.thread782
  %1841 = landingpad { ptr, i32 }
          cleanup
  br label %1847

1842:                                             ; preds = %1836
  %1843 = landingpad { ptr, i32 }
          cleanup
  br label %1846

1844:                                             ; preds = %1838
  %1845 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #8
  br label %1846

1846:                                             ; preds = %1844, %1842
  %.pn686 = phi { ptr, i32 } [ %1845, %1844 ], [ %1843, %1842 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #8
  br label %1847

1847:                                             ; preds = %1846, %1840
  %.pn686.pn = phi { ptr, i32 } [ %.pn686, %1846 ], [ %1841, %1840 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #8
  br label %1856

1848:                                             ; preds = %1830, %1839
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %307) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull @.str.61)
  %1849 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %307)
  br i1 %1849, label %1850, label %.thread786

1850:                                             ; preds = %1848
  %1851 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1852 unwind label %1857

1852:                                             ; preds = %1850
  br i1 %1851, label %1853, label %.critedge752

1853:                                             ; preds = %1852
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %309) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %310) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %310) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %310)
          to label %1854 unwind label %1859

1854:                                             ; preds = %1853
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %308, ptr noundef nonnull align 8 dereferenceable(32) %309, i1 noundef zeroext false)
          to label %1855 unwind label %1861

1855:                                             ; preds = %1854
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %308) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %310) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %310) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %309) #8
  br label %.critedge752

1856:                                             ; preds = %1832, %1834, %1847
  %.pn686.pn.pn = phi { ptr, i32 } [ %.pn686.pn, %1847 ], [ %1835, %1834 ], [ %1833, %1832 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #8
  br label %1926

1857:                                             ; preds = %1850
  %1858 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1864

1859:                                             ; preds = %1853
  %1860 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1863

1861:                                             ; preds = %1854
  %1862 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #8
  br label %1863

1863:                                             ; preds = %1861, %1859
  %.pn690 = phi { ptr, i32 } [ %1862, %1861 ], [ %1860, %1859 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %310) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %310) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %309) #8
  br label %1864

1864:                                             ; preds = %1863, %1857
  %.pn690.pn = phi { ptr, i32 } [ %.pn690, %1863 ], [ %1858, %1857 ]
  %.230 = extractvalue { ptr, i32 } %.pn690.pn, 0
  %.230329 = extractvalue { ptr, i32 } %.pn690.pn, 1
  %1865 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1866 = icmp eq i32 %.230329, %1865
  %1867 = call ptr @__cxa_begin_catch(ptr %.230) #8
  br i1 %1866, label %1868, label %1869

1868:                                             ; preds = %1864
  invoke void @__cxa_end_catch()
          to label %1886 unwind label %1872

.critedge752:                                     ; preds = %1852, %1855
  store ptr @.str.85, ptr %307, align 8, !tbaa !18
  br label %.thread786

1869:                                             ; preds = %1864
  store ptr @.str.84, ptr %307, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread786 unwind label %1870

1870:                                             ; preds = %1869
  %1871 = landingpad { ptr, i32 }
          cleanup
  br label %1894

1872:                                             ; preds = %1868
  %1873 = landingpad { ptr, i32 }
          cleanup
  br label %1894

.thread786:                                       ; preds = %1869, %.critedge752, %1848
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %311) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %311)
          to label %1874 unwind label %1878

1874:                                             ; preds = %.thread786
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %312) #8
  %1875 = load ptr, ptr %307, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %312, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 115, ptr noundef %1875)
          to label %1876 unwind label %1880

1876:                                             ; preds = %1874
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %312, ptr noundef nonnull align 8 dereferenceable(8) %311)
          to label %1877 unwind label %1882

1877:                                             ; preds = %1876
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #8
  br label %1886

1878:                                             ; preds = %.thread786
  %1879 = landingpad { ptr, i32 }
          cleanup
  br label %1885

1880:                                             ; preds = %1874
  %1881 = landingpad { ptr, i32 }
          cleanup
  br label %1884

1882:                                             ; preds = %1876
  %1883 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #8
  br label %1884

1884:                                             ; preds = %1882, %1880
  %.pn695 = phi { ptr, i32 } [ %1883, %1882 ], [ %1881, %1880 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #8
  br label %1885

1885:                                             ; preds = %1884, %1878
  %.pn695.pn = phi { ptr, i32 } [ %.pn695, %1884 ], [ %1879, %1878 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #8
  br label %1894

1886:                                             ; preds = %1868, %1877
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %313) #8
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull @.str.61)
  %1887 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %313)
  br i1 %1887, label %1888, label %.thread790

1888:                                             ; preds = %1886
  %1889 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1890 unwind label %1895

1890:                                             ; preds = %1888
  br i1 %1889, label %1891, label %.critedge756

1891:                                             ; preds = %1890
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %315) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %316) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %316) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %315, ptr noundef nonnull @.str.86, ptr noundef nonnull align 1 dereferenceable(1) %316)
          to label %1892 unwind label %1897

1892:                                             ; preds = %1891
  invoke void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind nonnull writable sret(%"class.chen::json") align 8 %314, ptr noundef nonnull align 8 dereferenceable(32) %315, i1 noundef zeroext false)
          to label %1893 unwind label %1899

1893:                                             ; preds = %1892
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %314) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %316) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %315) #8
  br label %.critedge756

1894:                                             ; preds = %1870, %1872, %1885
  %.pn695.pn.pn = phi { ptr, i32 } [ %.pn695.pn, %1885 ], [ %1873, %1872 ], [ %1871, %1870 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #8
  br label %1926

1895:                                             ; preds = %1888
  %1896 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1902

1897:                                             ; preds = %1891
  %1898 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  br label %1901

1899:                                             ; preds = %1892
  %1900 = landingpad { ptr, i32 }
          catch ptr @_ZTIN4chen4json5errorE
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #8
  br label %1901

1901:                                             ; preds = %1899, %1897
  %.pn699 = phi { ptr, i32 } [ %1900, %1899 ], [ %1898, %1897 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %316) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %315) #8
  br label %1902

1902:                                             ; preds = %1901, %1895
  %.pn699.pn = phi { ptr, i32 } [ %.pn699, %1901 ], [ %1896, %1895 ]
  %.236 = extractvalue { ptr, i32 } %.pn699.pn, 0
  %.236335 = extractvalue { ptr, i32 } %.pn699.pn, 1
  %1903 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4chen4json5errorE) #8
  %1904 = icmp eq i32 %.236335, %1903
  %1905 = call ptr @__cxa_begin_catch(ptr %.236) #8
  br i1 %1904, label %1906, label %1907

1906:                                             ; preds = %1902
  invoke void @__cxa_end_catch()
          to label %1924 unwind label %1910

.critedge756:                                     ; preds = %1890, %1893
  store ptr @.str.88, ptr %313, align 8, !tbaa !18
  br label %.thread790

1907:                                             ; preds = %1902
  store ptr @.str.87, ptr %313, align 8, !tbaa !18
  invoke void @__cxa_end_catch()
          to label %.thread790 unwind label %1908

1908:                                             ; preds = %1907
  %1909 = landingpad { ptr, i32 }
          cleanup
  br label %1925

1910:                                             ; preds = %1906
  %1911 = landingpad { ptr, i32 }
          cleanup
  br label %1925

.thread790:                                       ; preds = %1907, %.critedge756, %1886
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %317) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %317)
          to label %1912 unwind label %1916

1912:                                             ; preds = %.thread790
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %318) #8
  %1913 = load ptr, ptr %313, align 8, !tbaa !18
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %318, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 116, ptr noundef %1913)
          to label %1914 unwind label %1918

1914:                                             ; preds = %1912
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef nonnull align 8 dereferenceable(8) %317)
          to label %1915 unwind label %1920

1915:                                             ; preds = %1914
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %317) #8
  br label %1924

1916:                                             ; preds = %.thread790
  %1917 = landingpad { ptr, i32 }
          cleanup
  br label %1923

1918:                                             ; preds = %1912
  %1919 = landingpad { ptr, i32 }
          cleanup
  br label %1922

1920:                                             ; preds = %1914
  %1921 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #8
  br label %1922

1922:                                             ; preds = %1920, %1918
  %.pn704 = phi { ptr, i32 } [ %1921, %1920 ], [ %1919, %1918 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #8
  br label %1923

1923:                                             ; preds = %1922, %1916
  %.pn704.pn = phi { ptr, i32 } [ %.pn704, %1922 ], [ %1917, %1916 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %317) #8
  br label %1925

1924:                                             ; preds = %1906, %1915
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  ret void

1925:                                             ; preds = %1908, %1910, %1923
  %.pn704.pn.pn = phi { ptr, i32 } [ %.pn704.pn, %1923 ], [ %1911, %1910 ], [ %1909, %1908 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #8
  br label %1926

1926:                                             ; preds = %1925, %1894, %1856, %1818, %1780, %1742, %1704, %1666, %1628, %1590, %1556, %1525, %1495, %1465, %1435, %1402, %1371, %1341, %1311, %1281, %1251, %1221, %1194, %1165, %1138, %1112, %1086, %1060, %1034, %1008, %979, %952, %926, %905, %883, %861, %839, %814, %787, %759
  %.pn704.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn, %1925 ], [ %.pn695.pn.pn, %1894 ], [ %.pn686.pn.pn, %1856 ], [ %.pn677.pn.pn, %1818 ], [ %.pn668.pn.pn, %1780 ], [ %.pn659.pn.pn, %1742 ], [ %.pn650.pn.pn, %1704 ], [ %.pn641.pn.pn, %1666 ], [ %.pn632.pn.pn, %1628 ], [ %.pn622.pn.pn.pn, %1590 ], [ %.pn614.pn.pn.pn, %1556 ], [ %.pn607.pn.pn.pn, %1525 ], [ %.pn600.pn.pn.pn, %1495 ], [ %.pn593.pn.pn.pn, %1465 ], [ %.pn586.pn.pn.pn, %1435 ], [ %.pn578.pn.pn.pn, %1402 ], [ %.pn571.pn.pn.pn, %1371 ], [ %.pn564.pn.pn.pn, %1341 ], [ %.pn557.pn.pn.pn, %1311 ], [ %.pn550.pn.pn.pn, %1281 ], [ %.pn543.pn.pn.pn, %1251 ], [ %.pn536.pn.pn.pn, %1221 ], [ %.pn531.pn.pn.pn, %1194 ], [ %.pn524.pn.pn.pn, %1165 ], [ %.pn519.pn.pn.pn, %1138 ], [ %.pn514.pn.pn.pn, %1112 ], [ %.pn509.pn.pn.pn, %1086 ], [ %.pn504.pn.pn.pn, %1060 ], [ %.pn499.pn.pn.pn, %1034 ], [ %.pn494.pn.pn.pn, %1008 ], [ %.pn487.pn.pn.pn, %979 ], [ %.pn483.pn.pn, %952 ], [ %.pn477.pn.pn, %926 ], [ %.pn473.pn.pn, %905 ], [ %.pn469.pn.pn, %883 ], [ %.pn465.pn.pn, %861 ], [ %.pn460.pn.pn.pn, %839 ], [ %.pn455.pn.pn.pn, %814 ], [ %.pn450.pn.pn.pn, %787 ], [ %760, %759 ]
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #8
  br label %1927

1927:                                             ; preds = %1926, %758, %720, %689, %658, %627, %598, %565, %545, %525, %505, %485, %465, %445, %425, %405, %384
  %.pn704.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn, %1926 ], [ %.pn445.pn.pn.pn, %758 ], [ %.pn438.pn.pn.pn, %720 ], [ %.pn431.pn.pn.pn, %689 ], [ %.pn424.pn.pn.pn, %658 ], [ %.pn417.pn.pn.pn, %627 ], [ %385, %384 ], [ %.pn411.pn.pn, %598 ], [ %.pn407.pn.pn, %565 ], [ %.pn403.pn.pn, %545 ], [ %.pn399.pn.pn, %525 ], [ %.pn395.pn.pn, %505 ], [ %.pn391.pn.pn, %485 ], [ %.pn387.pn.pn, %465 ], [ %.pn383.pn.pn, %445 ], [ %.pn379.pn.pn, %425 ], [ %.pn.pn.pn, %405 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %1928

1928:                                             ; preds = %1927, %382
  %.pn704.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn, %1927 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  br label %1929

1929:                                             ; preds = %1928, %380
  %.pn704.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn, %1928 ], [ %381, %380 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %1930

1930:                                             ; preds = %1929, %378
  %.pn704.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn, %1929 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %1931

1931:                                             ; preds = %1930, %376
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn, %1930 ], [ %377, %376 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %1932

1932:                                             ; preds = %1931, %374
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn, %1931 ], [ %375, %374 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  br label %1933

1933:                                             ; preds = %1932, %372
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1932 ], [ %373, %372 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %14) #8
  br label %1934

1934:                                             ; preds = %1933, %370
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1933 ], [ %371, %370 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %13) #8
  br label %1935

1935:                                             ; preds = %1934, %368
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1934 ], [ %369, %368 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  br label %1936

1936:                                             ; preds = %1935, %366
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1935 ], [ %367, %366 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  br label %1937

1937:                                             ; preds = %1936, %364
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1936 ], [ %365, %364 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZNSt6vectorIN4chen4jsonESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %1938

1938:                                             ; preds = %1937, %362
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1937 ], [ %363, %362 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #8
  br label %1939

1939:                                             ; preds = %1938, %360
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1938 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  br label %1940

1940:                                             ; preds = %1939, %358
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1939 ], [ %359, %358 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  br label %1941

1941:                                             ; preds = %1940, %356
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1940 ], [ %357, %356 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  br label %1942

1942:                                             ; preds = %1941, %354
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1941 ], [ %355, %354 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #8
  br label %1943

1943:                                             ; preds = %1942, %352
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  br label %1944

1944:                                             ; preds = %1943, %350
  %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1943 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #8
  call void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn704.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN4chen4jsonC1ENS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZNK4chen4jsoncvSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEEEv(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare void @_ZNK4chen4jsoncvSt6vectorIS0_SaIS0_EEEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef double @_ZNK4chen4jsoncvdEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef signext i8 @_ZNK4chen4jsoncvaEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i8 @_ZNK4chen4jsoncvhEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef signext i16 @_ZNK4chen4jsoncvsEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i16 @_ZNK4chen4jsoncvtEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen4jsoncviEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen4jsoncvjEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef i64 @_ZNK4chen4jsoncvlEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef i64 @_ZNK4chen4jsoncvmEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare void @_ZNK4chen4jsoncvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4jsoncvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIddEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

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

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIiaEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIisEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIitEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIilEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb1EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsr10is_pointerISA_EE5valueEE4typeE(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIbbEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN4chen4json9getObjectB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN4chen4json8getArrayEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN4chen4json9getNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN4chen4json9getStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

declare void @_ZNK4chen4json8toObjectB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::unordered_map") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4chen4jsonESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5 align 2

declare void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZNK4chen4json7toArrayEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

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

declare void @_ZN4chen4jsonC1ERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4chen4jsonD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4

declare void @_ZN4chen4jsonC1ERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen4jsonC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

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

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZN4chen4jsonaSEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

declare noundef i32 @_ZNK4chen4json11getUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIidEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

declare noundef double @_ZNK4chen4json8toNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

declare noundef i32 @_ZNK4chen4json9toIntegerEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen4json10toUnsignedEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare void @_ZNK4chen4json8toStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6toBoolEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6isNoneEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json8isObjectEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json7isArrayEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json8isNumberEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json8isStringEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6isTrueEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json7isFalseEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6isNullEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

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

declare void @_ZN4chen4jsonC1EOSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES0_St4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3

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

declare void @_ZN4chen4jsonC1EOSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ei(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

declare void @_ZN4chen4jsonC1EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare void @_ZN4chen4jsonC1Eb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen4json6isBoolEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

declare void @_ZN4chen4jsonC1EDn(ptr noundef nonnull align 8 dereferenceable(16), ptr) unnamed_addr #3

declare void @_ZN4chen4json5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind writable sret(%"class.chen::json") align 8, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #3

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

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

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() local_unnamed_addr #3

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!19, !20, i64 0}
!19 = !{!"_ZTSN7testing8internal12ConstCharPtrE", !20, i64 0}
!20 = !{!"any pointer", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass