; LLVM IR from chensoft/libsocket :: test/src/ip/ip_address.ll (ZN23IPAddressTest_IPv6_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"

%"struct.std::array" = type { [16 x i8] }
%"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.chen::ip_address" = type { i8, %union.anon.2 }
%union.anon.2 = type { %"class.chen::ip_version6" }
%"class.chen::ip_version6" = type { %"class.chen::ip_version", %"struct.std::array", i32 }
%"class.chen::ip_version" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.0" }
%"class.testing::internal::scoped_ptr.0" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::allocator" = type { i8 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }
%"class.chen::ip_version4" = type { %"class.chen::ip_version", i32 }

@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.213 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [50 x i8], align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.bytes = external hidden unnamed_addr constant [16 x i8], align 16
@.str.247 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [130 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [49 x i8], align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.netmask = external hidden unnamed_addr constant { <{ i8, i8, i8, i8, i8, i8, [10 x i8] }> }, align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.wildcard = external hidden unnamed_addr constant %"struct.std::array", align 1
@.str.321 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [140 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.371 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.372 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.373 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.374 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.375 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.376 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.377 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.378 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.379 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.380 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.381 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.382 = external hidden unnamed_addr constant [135 x i8], align 1
@.str.383 = external hidden unnamed_addr constant [126 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 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 @_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

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 @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) #3

declare noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(28), i1 noundef zeroext, i1 noundef zeroext) #3

declare noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare noundef i32 @_ZNK4chen10ip_address5scopeEv(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 4 dereferenceable(28)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) #2 align 2

declare void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28), i8 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) #2

declare void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, i8 noundef zeroext) #3

declare void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, i8 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) #2

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) 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)) #1 align 2

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() #3

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #6

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_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 nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_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 1 dereferenceable(1)) #2 align 2

; 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 nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23IPAddressTest_IPv6_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.testing::AssertionResult", align 8
  %4 = alloca %"class.chen::ip_address", align 4
  %5 = alloca %"class.chen::ip_address", align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.testing::Message", align 8
  %9 = alloca %"class.testing::internal::AssertHelper", align 8
  %10 = alloca %"class.testing::AssertionResult", align 8
  %11 = alloca %"class.chen::ip_address", align 4
  %12 = alloca %"class.chen::ip_address", align 4
  %13 = alloca %"class.testing::Message", align 8
  %14 = alloca %"class.testing::internal::AssertHelper", align 8
  %15 = alloca %"class.testing::AssertionResult", align 8
  %16 = alloca %"class.chen::ip_address", align 4
  %17 = alloca %"class.chen::ip_address", align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.testing::Message", align 8
  %21 = alloca %"class.testing::internal::AssertHelper", align 8
  %22 = alloca %"class.testing::AssertionResult", align 8
  %23 = alloca %"class.chen::ip_address", align 4
  %24 = alloca %"class.chen::ip_address", align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.testing::Message", align 8
  %30 = alloca %"class.testing::internal::AssertHelper", align 8
  %31 = alloca %"class.testing::AssertionResult", align 8
  %32 = alloca %"class.chen::ip_address", align 4
  %33 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %38 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %43 = alloca %"class.chen::ip_address", align 4
  %44 = alloca %"class.testing::Message", align 8
  %45 = alloca %"class.testing::internal::AssertHelper", align 8
  %46 = alloca %"class.testing::AssertionResult", align 8
  %47 = alloca %"class.chen::ip_address", align 4
  %48 = alloca %"class.chen::ip_address", align 4
  %49 = alloca %"class.testing::Message", align 8
  %50 = alloca %"class.testing::internal::AssertHelper", align 8
  %51 = alloca %"class.testing::AssertionResult", align 8
  %52 = alloca %"class.chen::ip_address", align 4
  %53 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %58 = alloca %"class.chen::ip_address", align 4
  %59 = alloca %"class.testing::Message", align 8
  %60 = alloca %"class.testing::internal::AssertHelper", align 8
  %61 = alloca %"class.testing::AssertionResult", align 8
  %62 = alloca %"class.chen::ip_address", align 4
  %63 = alloca %"class.chen::ip_address", align 4
  %64 = alloca %"class.testing::Message", align 8
  %65 = alloca %"class.testing::internal::AssertHelper", align 8
  %66 = alloca %"class.testing::AssertionResult", align 8
  %67 = alloca %"class.chen::ip_address", align 4
  %68 = alloca %"class.chen::ip_address", align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator", align 1
  %71 = alloca %"class.testing::Message", align 8
  %72 = alloca %"class.testing::internal::AssertHelper", align 8
  %73 = alloca %"class.testing::AssertionResult", align 8
  %74 = alloca %"class.chen::ip_address", align 4
  %75 = alloca %"class.chen::ip_address", align 4
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator", align 1
  %78 = alloca %"class.testing::Message", align 8
  %79 = alloca %"class.testing::internal::AssertHelper", align 8
  %80 = alloca %"class.testing::AssertionResult", align 8
  %81 = alloca %"class.chen::ip_address", align 4
  %82 = alloca %"class.chen::ip_address", align 4
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::allocator", align 1
  %85 = alloca %"class.testing::Message", align 8
  %86 = alloca %"class.testing::internal::AssertHelper", align 8
  %87 = alloca %"class.testing::AssertionResult", align 8
  %88 = alloca %"class.chen::ip_address", align 4
  %89 = alloca %"class.chen::ip_address", align 4
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator", align 1
  %92 = alloca %"class.testing::Message", align 8
  %93 = alloca %"class.testing::internal::AssertHelper", align 8
  %94 = alloca %"class.testing::AssertionResult", align 8
  %95 = alloca %"class.chen::ip_address", align 4
  %96 = alloca %"class.chen::ip_address", align 4
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator", align 1
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::allocator", align 1
  %101 = alloca %"class.testing::Message", align 8
  %102 = alloca %"class.testing::internal::AssertHelper", align 8
  %103 = alloca %"class.testing::AssertionResult", align 8
  %104 = alloca %"class.chen::ip_address", align 4
  %105 = alloca %"class.chen::ip_address", align 4
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::allocator", align 1
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::allocator", align 1
  %110 = alloca %"class.testing::Message", align 8
  %111 = alloca %"class.testing::internal::AssertHelper", align 8
  %112 = alloca [16 x i8], align 16
  %113 = alloca %"class.testing::AssertionResult", align 8
  %114 = alloca %"class.chen::ip_address", align 4
  %115 = alloca %"class.chen::ip_address", align 4
  %116 = alloca %"class.chen::ip_version6", align 4
  %117 = alloca %"class.testing::Message", align 8
  %118 = alloca %"class.testing::internal::AssertHelper", align 8
  %119 = alloca %"class.testing::AssertionResult", align 8
  %120 = alloca %"class.chen::ip_address", align 4
  %121 = alloca %"class.chen::ip_address", align 4
  %122 = alloca %"class.chen::ip_version6", 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 %"class.chen::ip_address", align 4
  %127 = alloca %"class.chen::ip_address", align 4
  %128 = alloca %"class.chen::ip_version6", align 4
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::allocator", align 1
  %131 = alloca %"class.testing::Message", align 8
  %132 = alloca %"class.testing::internal::AssertHelper", align 8
  %133 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %134 = alloca i8, align 1
  %135 = alloca %"class.chen::ip_address", align 4
  %136 = alloca i32, align 4
  %137 = alloca ptr, align 8
  %138 = alloca %"class.testing::Message", align 8
  %139 = alloca %"class.testing::internal::AssertHelper", align 8
  %140 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %141 = alloca i8, align 1
  %142 = alloca %"class.chen::ip_address", align 4
  %143 = alloca %"class.chen::ip_version6", align 4
  %144 = alloca ptr, align 8
  %145 = alloca %"class.testing::Message", align 8
  %146 = alloca %"class.testing::internal::AssertHelper", align 8
  %147 = alloca %"class.chen::ip_address", align 4
  %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 %"class.std::__cxx11::basic_string", align 8
  %155 = alloca %"class.testing::Message", align 8
  %156 = alloca %"class.testing::internal::AssertHelper", align 8
  %157 = alloca %"class.testing::AssertionResult", align 8
  %158 = alloca i32, align 4
  %159 = alloca i64, align 8
  %160 = alloca %"class.std::vector", align 8
  %161 = alloca %"class.testing::Message", align 8
  %162 = alloca %"class.testing::internal::AssertHelper", align 8
  %163 = alloca %"class.testing::AssertionResult", align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.testing::Message", align 8
  %166 = alloca %"class.testing::internal::AssertHelper", align 8
  %167 = alloca %"class.testing::AssertionResult", align 8
  %168 = alloca i32, align 4
  %169 = alloca i8, align 1
  %170 = alloca %"class.testing::Message", align 8
  %171 = alloca %"class.testing::internal::AssertHelper", align 8
  %172 = alloca %"class.chen::ip_version6", align 4
  %173 = alloca %"class.testing::AssertionResult", align 8
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca %"class.testing::Message", align 8
  %176 = alloca %"class.testing::internal::AssertHelper", align 8
  %177 = alloca %"class.testing::AssertionResult", align 8
  %178 = alloca i32, align 4
  %179 = alloca i8, align 1
  %180 = alloca %"class.testing::Message", align 8
  %181 = alloca %"class.testing::internal::AssertHelper", align 8
  %182 = alloca %"class.testing::AssertionResult", align 8
  %183 = alloca %"class.chen::ip_address", align 4
  %184 = alloca %"class.chen::ip_address", align 4
  %185 = alloca %"class.testing::Message", align 8
  %186 = alloca %"class.testing::internal::AssertHelper", align 8
  %187 = alloca %"class.testing::AssertionResult", align 8
  %188 = alloca %"class.std::__cxx11::basic_string", align 8
  %189 = alloca %"class.chen::ip_address", align 4
  %190 = alloca %"class.testing::Message", align 8
  %191 = alloca %"class.testing::internal::AssertHelper", align 8
  %192 = alloca %"class.testing::AssertionResult", align 8
  %193 = alloca %"class.std::__cxx11::basic_string", align 8
  %194 = alloca %"class.chen::ip_address", align 4
  %195 = alloca %"class.testing::Message", align 8
  %196 = alloca %"class.testing::internal::AssertHelper", align 8
  %197 = alloca %"class.testing::AssertionResult", align 8
  %198 = alloca %"class.std::__cxx11::basic_string", align 8
  %199 = alloca %"class.chen::ip_address", align 4
  %200 = alloca %"class.testing::Message", align 8
  %201 = alloca %"class.testing::internal::AssertHelper", align 8
  %202 = alloca %"class.testing::AssertionResult", align 8
  %203 = alloca %"class.std::__cxx11::basic_string", align 8
  %204 = alloca %"class.chen::ip_address", align 4
  %205 = alloca %"class.testing::Message", align 8
  %206 = alloca %"class.testing::internal::AssertHelper", align 8
  %207 = alloca %"class.testing::AssertionResult", align 8
  %208 = alloca %"class.std::__cxx11::basic_string", align 8
  %209 = alloca %"class.chen::ip_address", align 4
  %210 = alloca %"class.testing::Message", align 8
  %211 = alloca %"class.testing::internal::AssertHelper", align 8
  %212 = alloca %"class.testing::AssertionResult", align 8
  %213 = alloca %"class.std::__cxx11::basic_string", align 8
  %214 = alloca %"class.chen::ip_address", align 4
  %215 = alloca %"class.testing::Message", align 8
  %216 = alloca %"class.testing::internal::AssertHelper", align 8
  %217 = alloca %"class.testing::AssertionResult", align 8
  %218 = alloca %"class.std::__cxx11::basic_string", align 8
  %219 = alloca %"class.chen::ip_address", align 4
  %220 = alloca %"class.testing::Message", align 8
  %221 = alloca %"class.testing::internal::AssertHelper", align 8
  %222 = alloca %"class.testing::AssertionResult", align 8
  %223 = alloca %"class.std::__cxx11::basic_string", align 8
  %224 = alloca %"class.chen::ip_address", align 4
  %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 %"class.std::__cxx11::basic_string", align 8
  %230 = alloca %"class.std::__cxx11::basic_string", align 8
  %231 = alloca %"class.chen::ip_address", align 4
  %232 = alloca %"class.testing::Message", align 8
  %233 = alloca %"class.testing::internal::AssertHelper", align 8
  %234 = alloca %"class.testing::AssertionResult", align 8
  %235 = alloca %"class.std::__cxx11::basic_string", align 8
  %236 = alloca %"class.std::__cxx11::basic_string", align 8
  %237 = alloca %"class.std::__cxx11::basic_string", align 8
  %238 = alloca %"class.chen::ip_address", align 4
  %239 = alloca %"class.testing::Message", align 8
  %240 = alloca %"class.testing::internal::AssertHelper", align 8
  %241 = alloca %"class.testing::AssertionResult", align 8
  %242 = alloca i32, align 4
  %243 = alloca i32, align 4
  %244 = alloca %"class.chen::ip_address", align 4
  %245 = alloca %"class.testing::Message", align 8
  %246 = alloca %"class.testing::internal::AssertHelper", align 8
  %247 = alloca %"class.testing::AssertionResult", align 8
  %248 = alloca %"class.chen::ip_address", align 4
  %249 = alloca %"class.chen::ip_version4", align 4
  %250 = alloca %"class.chen::ip_address", align 4
  %251 = alloca %"class.testing::Message", align 8
  %252 = alloca %"class.testing::internal::AssertHelper", align 8
  %253 = alloca %"class.testing::AssertionResult", align 8
  %254 = alloca %"class.chen::ip_address", align 4
  %255 = alloca %"class.chen::ip_version4", align 4
  %256 = alloca %"class.chen::ip_address", align 4
  %257 = alloca %"class.testing::Message", align 8
  %258 = alloca %"class.testing::internal::AssertHelper", align 8
  %259 = alloca %"class.testing::AssertionResult", align 8
  %260 = alloca %"class.chen::ip_address", align 4
  %261 = alloca %"class.chen::ip_version4", align 4
  %262 = alloca %"class.chen::ip_address", align 4
  %263 = alloca %"class.testing::Message", align 8
  %264 = alloca %"class.testing::internal::AssertHelper", align 8
  %265 = alloca %"class.testing::AssertionResult", align 8
  %266 = alloca %"class.chen::ip_address", align 4
  %267 = alloca %"class.chen::ip_version4", align 4
  %268 = alloca %"class.chen::ip_address", align 4
  %269 = alloca %"class.testing::Message", align 8
  %270 = alloca %"class.testing::internal::AssertHelper", align 8
  %271 = alloca %"class.testing::AssertionResult", align 8
  %272 = alloca %"class.chen::ip_address", align 4
  %273 = alloca %"class.chen::ip_version4", align 4
  %274 = alloca %"class.chen::ip_address", align 4
  %275 = alloca %"class.testing::Message", align 8
  %276 = alloca %"class.testing::internal::AssertHelper", align 8
  %277 = alloca %"class.testing::AssertionResult", align 8
  %278 = alloca %"class.chen::ip_address", align 4
  %279 = alloca %"class.chen::ip_version4", align 4
  %280 = alloca %"class.chen::ip_address", align 4
  %281 = alloca %"class.testing::Message", align 8
  %282 = alloca %"class.testing::internal::AssertHelper", align 8
  %283 = alloca %"class.testing::AssertionResult", align 8
  %284 = alloca %"class.chen::ip_address", align 4
  %285 = alloca %"class.chen::ip_version4", align 4
  %286 = alloca %"class.chen::ip_address", align 4
  %287 = alloca %"class.testing::Message", align 8
  %288 = alloca %"class.testing::internal::AssertHelper", align 8
  %289 = alloca %"class.testing::AssertionResult", align 8
  %290 = alloca %"class.chen::ip_address", align 4
  %291 = alloca %"class.chen::ip_version4", align 4
  %292 = alloca %"class.chen::ip_address", align 4
  %293 = alloca %"class.testing::Message", align 8
  %294 = alloca %"class.testing::internal::AssertHelper", align 8
  %295 = alloca %"class.testing::AssertionResult", align 8
  %296 = alloca %"class.std::__cxx11::basic_string", align 8
  %297 = alloca %"class.chen::ip_address", align 4
  %298 = alloca %"class.testing::Message", align 8
  %299 = alloca %"class.testing::internal::AssertHelper", align 8
  %300 = alloca %"class.testing::AssertionResult", align 8
  %301 = alloca %"class.std::__cxx11::basic_string", align 8
  %302 = alloca %"class.chen::ip_address", align 4
  %303 = alloca %"class.testing::Message", align 8
  %304 = alloca %"class.testing::internal::AssertHelper", align 8
  %305 = alloca %"struct.std::array", align 1
  %306 = alloca %"class.testing::AssertionResult", align 8
  %307 = alloca %"class.chen::ip_address", align 4
  %308 = alloca %"class.testing::Message", align 8
  %309 = alloca %"class.testing::internal::AssertHelper", align 8
  %310 = alloca %"class.testing::AssertionResult", align 8
  %311 = alloca i32, align 4
  %312 = alloca i8, align 1
  %313 = alloca %"class.chen::ip_address", align 4
  %314 = alloca %"class.testing::Message", align 8
  %315 = alloca %"class.testing::internal::AssertHelper", align 8
  %316 = alloca %"class.testing::AssertionResult", align 8
  %317 = alloca i32, align 4
  %318 = alloca i8, align 1
  %319 = alloca %"class.chen::ip_address", align 4
  %320 = alloca %"class.testing::Message", align 8
  %321 = alloca %"class.testing::internal::AssertHelper", align 8
  %322 = alloca %"class.testing::AssertionResult", align 8
  %323 = alloca i32, align 4
  %324 = alloca i8, align 1
  %325 = alloca %"class.chen::ip_address", align 4
  %326 = alloca %"class.testing::Message", align 8
  %327 = alloca %"class.testing::internal::AssertHelper", align 8
  %328 = alloca %"struct.std::array", align 1
  %329 = alloca %"struct.std::array", align 1
  %330 = alloca %"class.testing::AssertionResult", align 8
  %331 = alloca %"struct.std::array", align 1
  %332 = alloca %"class.chen::ip_address", align 4
  %333 = alloca %"class.testing::Message", align 8
  %334 = alloca %"class.testing::internal::AssertHelper", align 8
  %335 = alloca %"class.testing::AssertionResult", align 8
  %336 = alloca %"struct.std::array", align 1
  %337 = alloca %"class.chen::ip_address", align 4
  %338 = alloca %"class.testing::Message", align 8
  %339 = alloca %"class.testing::internal::AssertHelper", align 8
  %340 = alloca %"struct.std::array", align 1
  %341 = alloca %"struct.std::array", align 1
  %342 = alloca %"class.testing::AssertionResult", align 8
  %343 = alloca %"struct.std::array", align 1
  %344 = alloca %"class.chen::ip_address", align 4
  %345 = alloca %"class.testing::Message", align 8
  %346 = alloca %"class.testing::internal::AssertHelper", align 8
  %347 = alloca %"class.testing::AssertionResult", align 8
  %348 = alloca %"struct.std::array", align 1
  %349 = alloca %"class.chen::ip_address", align 4
  %350 = alloca %"class.testing::Message", align 8
  %351 = alloca %"class.testing::internal::AssertHelper", align 8
  %352 = alloca %"class.testing::AssertionResult", align 8
  %353 = alloca %"class.std::__cxx11::basic_string", align 8
  %354 = alloca %"class.chen::ip_address", align 4
  %355 = alloca %"class.chen::ip_address", align 4
  %356 = alloca %"class.testing::Message", align 8
  %357 = alloca %"class.testing::internal::AssertHelper", align 8
  %358 = alloca %"class.testing::AssertionResult", align 8
  %359 = alloca %"class.std::__cxx11::basic_string", align 8
  %360 = alloca %"class.chen::ip_address", align 4
  %361 = alloca %"class.chen::ip_address", align 4
  %362 = alloca %"class.testing::Message", align 8
  %363 = alloca %"class.testing::internal::AssertHelper", align 8
  %364 = alloca %"class.testing::AssertionResult", align 8
  %365 = alloca %"class.std::__cxx11::basic_string", align 8
  %366 = alloca %"class.chen::ip_address", align 4
  %367 = alloca %"class.chen::ip_address", align 4
  %368 = alloca %"class.testing::Message", align 8
  %369 = alloca %"class.testing::internal::AssertHelper", align 8
  %370 = alloca %"class.testing::AssertionResult", align 8
  %371 = alloca %"class.std::__cxx11::basic_string", align 8
  %372 = alloca %"class.chen::ip_address", align 4
  %373 = alloca %"class.chen::ip_address", align 4
  %374 = alloca %"class.testing::Message", align 8
  %375 = alloca %"class.testing::internal::AssertHelper", align 8
  %376 = alloca %"class.testing::AssertionResult", align 8
  %377 = alloca %"class.std::__cxx11::basic_string", align 8
  %378 = alloca %"class.chen::ip_address", align 4
  %379 = alloca %"class.chen::ip_address", align 4
  %380 = alloca %"class.testing::Message", align 8
  %381 = alloca %"class.testing::internal::AssertHelper", align 8
  %382 = alloca %"class.testing::AssertionResult", align 8
  %383 = alloca %"class.std::__cxx11::basic_string", align 8
  %384 = alloca %"class.chen::ip_address", align 4
  %385 = alloca %"class.chen::ip_address", align 4
  %386 = alloca %"class.testing::Message", align 8
  %387 = alloca %"class.testing::internal::AssertHelper", align 8
  %388 = alloca %"class.testing::AssertionResult", align 8
  %389 = alloca i8, align 1
  %390 = alloca %"class.chen::ip_address", align 4
  %391 = alloca %"class.testing::Message", align 8
  %392 = alloca %"class.testing::internal::AssertHelper", align 8
  %393 = alloca %"class.std::__cxx11::basic_string", align 8
  %394 = alloca %"class.testing::AssertionResult", align 8
  %395 = alloca i8, align 1
  %396 = alloca %"class.chen::ip_address", align 4
  %397 = alloca %"class.testing::Message", align 8
  %398 = alloca %"class.testing::internal::AssertHelper", align 8
  %399 = alloca %"class.std::__cxx11::basic_string", align 8
  %400 = alloca %"class.testing::AssertionResult", align 8
  %401 = alloca i8, align 1
  %402 = alloca %"class.chen::ip_address", align 4
  %403 = alloca %"class.testing::Message", align 8
  %404 = alloca %"class.testing::internal::AssertHelper", align 8
  %405 = alloca %"class.std::__cxx11::basic_string", align 8
  %406 = alloca %"class.testing::AssertionResult", align 8
  %407 = alloca i8, align 1
  %408 = alloca %"class.chen::ip_address", align 4
  %409 = alloca %"class.testing::Message", align 8
  %410 = alloca %"class.testing::internal::AssertHelper", align 8
  %411 = alloca %"class.std::__cxx11::basic_string", align 8
  %412 = alloca %"class.testing::AssertionResult", align 8
  %413 = alloca i8, align 1
  %414 = alloca %"class.chen::ip_address", align 4
  %415 = alloca %"class.testing::Message", align 8
  %416 = alloca %"class.testing::internal::AssertHelper", align 8
  %417 = alloca %"class.std::__cxx11::basic_string", align 8
  %418 = alloca %"class.testing::AssertionResult", align 8
  %419 = alloca i8, align 1
  %420 = alloca %"class.chen::ip_address", align 4
  %421 = alloca %"class.testing::Message", align 8
  %422 = alloca %"class.testing::internal::AssertHelper", align 8
  %423 = alloca %"class.std::__cxx11::basic_string", align 8
  %424 = alloca %"class.testing::AssertionResult", align 8
  %425 = alloca i8, align 1
  %426 = alloca %"class.chen::ip_address", align 4
  %427 = alloca %"class.testing::Message", align 8
  %428 = alloca %"class.testing::internal::AssertHelper", align 8
  %429 = alloca %"class.std::__cxx11::basic_string", align 8
  %430 = alloca %"class.testing::AssertionResult", align 8
  %431 = alloca i8, align 1
  %432 = alloca %"class.chen::ip_address", align 4
  %433 = alloca %"class.testing::Message", align 8
  %434 = alloca %"class.testing::internal::AssertHelper", align 8
  %435 = alloca %"class.std::__cxx11::basic_string", align 8
  %436 = alloca %"class.testing::AssertionResult", align 8
  %437 = alloca i8, align 1
  %438 = alloca %"class.chen::ip_address", align 4
  %439 = alloca %"class.testing::Message", align 8
  %440 = alloca %"class.testing::internal::AssertHelper", align 8
  %441 = alloca %"class.std::__cxx11::basic_string", align 8
  %442 = alloca %"class.testing::AssertionResult", align 8
  %443 = alloca i8, align 1
  %444 = alloca %"class.chen::ip_address", align 4
  %445 = alloca %"class.testing::Message", align 8
  %446 = alloca %"class.testing::internal::AssertHelper", align 8
  %447 = alloca %"class.std::__cxx11::basic_string", align 8
  %448 = alloca %"class.testing::AssertionResult", align 8
  %449 = alloca i8, align 1
  %450 = alloca %"class.chen::ip_address", align 4
  %451 = alloca %"class.testing::Message", align 8
  %452 = alloca %"class.testing::internal::AssertHelper", align 8
  %453 = alloca %"class.std::__cxx11::basic_string", align 8
  %454 = alloca %"class.testing::AssertionResult", align 8
  %455 = alloca i8, align 1
  %456 = alloca %"class.chen::ip_address", align 4
  %457 = alloca %"class.testing::Message", align 8
  %458 = alloca %"class.testing::internal::AssertHelper", align 8
  %459 = alloca %"class.std::__cxx11::basic_string", align 8
  %460 = alloca %"class.testing::AssertionResult", align 8
  %461 = alloca i8, align 1
  %462 = alloca %"class.chen::ip_address", align 4
  %463 = alloca %"class.testing::Message", align 8
  %464 = alloca %"class.testing::internal::AssertHelper", align 8
  %465 = alloca %"class.std::__cxx11::basic_string", align 8
  %466 = alloca %"class.testing::AssertionResult", align 8
  %467 = alloca i8, align 1
  %468 = alloca %"class.chen::ip_address", align 4
  %469 = alloca %"class.testing::Message", align 8
  %470 = alloca %"class.testing::internal::AssertHelper", align 8
  %471 = alloca %"class.std::__cxx11::basic_string", align 8
  %472 = alloca %"class.testing::AssertionResult", align 8
  %473 = alloca i8, align 1
  %474 = alloca %"class.chen::ip_address", align 4
  %475 = alloca %"class.testing::Message", align 8
  %476 = alloca %"class.testing::internal::AssertHelper", align 8
  %477 = alloca %"class.std::__cxx11::basic_string", align 8
  %478 = alloca %"class.testing::AssertionResult", align 8
  %479 = alloca i8, align 1
  %480 = alloca %"class.chen::ip_address", align 4
  %481 = alloca %"class.testing::Message", align 8
  %482 = alloca %"class.testing::internal::AssertHelper", align 8
  %483 = alloca %"class.std::__cxx11::basic_string", align 8
  %484 = alloca %"class.testing::AssertionResult", align 8
  %485 = alloca i8, align 1
  %486 = alloca %"class.chen::ip_address", align 4
  %487 = alloca %"class.testing::Message", align 8
  %488 = alloca %"class.testing::internal::AssertHelper", align 8
  %489 = alloca %"class.std::__cxx11::basic_string", align 8
  %490 = alloca %"class.testing::AssertionResult", align 8
  %491 = alloca i8, align 1
  %492 = alloca %"class.chen::ip_address", align 4
  %493 = alloca %"class.testing::Message", align 8
  %494 = alloca %"class.testing::internal::AssertHelper", align 8
  %495 = alloca %"class.std::__cxx11::basic_string", align 8
  %496 = alloca %"class.testing::AssertionResult", align 8
  %497 = alloca i8, align 1
  %498 = alloca %"class.chen::ip_address", align 4
  %499 = alloca %"class.testing::Message", align 8
  %500 = alloca %"class.testing::internal::AssertHelper", align 8
  %501 = alloca %"class.std::__cxx11::basic_string", align 8
  %502 = alloca %"class.testing::AssertionResult", align 8
  %503 = alloca i8, align 1
  %504 = alloca %"class.chen::ip_address", align 4
  %505 = alloca %"class.testing::Message", align 8
  %506 = alloca %"class.testing::internal::AssertHelper", align 8
  %507 = alloca %"class.std::__cxx11::basic_string", align 8
  %508 = alloca %"class.testing::AssertionResult", align 8
  %509 = alloca %"class.chen::ip_address", align 4
  %510 = alloca %"class.chen::ip_address", align 4
  %511 = alloca %"class.testing::Message", align 8
  %512 = alloca %"class.testing::internal::AssertHelper", align 8
  %513 = alloca %"class.testing::AssertionResult", align 8
  %514 = alloca %"class.chen::ip_address", align 4
  %515 = alloca %"class.chen::ip_address", align 4
  %516 = alloca %"class.testing::Message", align 8
  %517 = alloca %"class.testing::internal::AssertHelper", align 8
  %518 = alloca %"class.testing::AssertionResult", align 8
  %519 = alloca %"class.chen::ip_address", align 4
  %520 = alloca %"class.chen::ip_address", align 4
  %521 = alloca %"class.testing::Message", align 8
  %522 = alloca %"class.testing::internal::AssertHelper", align 8
  %523 = alloca %"class.testing::AssertionResult", align 8
  %524 = alloca %"class.chen::ip_address", align 4
  %525 = alloca %"class.chen::ip_address", align 4
  %526 = alloca %"class.testing::Message", align 8
  %527 = alloca %"class.testing::internal::AssertHelper", align 8
  %528 = alloca %"class.testing::AssertionResult", align 8
  %529 = alloca %"class.chen::ip_address", align 4
  %530 = alloca %"class.chen::ip_address", align 4
  %531 = alloca %"class.testing::Message", align 8
  %532 = alloca %"class.testing::internal::AssertHelper", align 8
  %533 = alloca %"class.testing::AssertionResult", align 8
  %534 = alloca %"class.chen::ip_address", align 4
  %535 = alloca %"class.chen::ip_address", align 4
  %536 = alloca %"class.testing::Message", align 8
  %537 = alloca %"class.testing::internal::AssertHelper", align 8
  %538 = alloca %"class.testing::AssertionResult", align 8
  %539 = alloca %"class.chen::ip_address", align 4
  %540 = alloca %"class.chen::ip_address", align 4
  %541 = alloca %"class.testing::Message", align 8
  %542 = alloca %"class.testing::internal::AssertHelper", align 8
  %543 = alloca %"class.testing::AssertionResult", align 8
  %544 = alloca %"class.chen::ip_address", align 4
  %545 = alloca %"class.chen::ip_address", align 4
  %546 = alloca %"class.testing::Message", align 8
  %547 = alloca %"class.testing::internal::AssertHelper", align 8
  %548 = alloca %"class.testing::AssertionResult", align 8
  %549 = alloca %"class.chen::ip_address", align 4
  %550 = alloca %"class.chen::ip_address", align 4
  %551 = alloca %"class.testing::Message", align 8
  %552 = alloca %"class.testing::internal::AssertHelper", align 8
  %553 = alloca %"class.testing::AssertionResult", align 8
  %554 = alloca %"class.chen::ip_address", align 4
  %555 = alloca %"class.chen::ip_address", align 4
  %556 = alloca %"class.testing::Message", align 8
  %557 = alloca %"class.testing::internal::AssertHelper", align 8
  %558 = alloca %"class.testing::AssertionResult", align 8
  %559 = alloca %"class.chen::ip_address", align 4
  %560 = alloca %"class.chen::ip_address", align 4
  %561 = alloca %"class.testing::Message", align 8
  %562 = alloca %"class.testing::internal::AssertHelper", align 8
  %563 = alloca %"class.testing::AssertionResult", align 8
  %564 = alloca %"class.chen::ip_address", align 4
  %565 = alloca %"class.chen::ip_address", align 4
  %566 = alloca %"class.testing::Message", align 8
  %567 = alloca %"class.testing::internal::AssertHelper", align 8
  %568 = alloca %"class.testing::AssertionResult", align 8
  %569 = alloca %"class.chen::ip_address", align 4
  %570 = alloca %"class.chen::ip_address", align 4
  %571 = alloca %"class.testing::Message", align 8
  %572 = alloca %"class.testing::internal::AssertHelper", align 8
  %573 = alloca %"class.testing::AssertionResult", align 8
  %574 = alloca %"class.chen::ip_address", align 4
  %575 = alloca %"class.chen::ip_address", align 4
  %576 = alloca %"class.testing::Message", align 8
  %577 = alloca %"class.testing::internal::AssertHelper", align 8
  %578 = alloca %"class.testing::AssertionResult", align 8
  %579 = alloca %"class.std::__cxx11::basic_string", align 8
  %580 = alloca %"class.chen::ip_address", align 4
  %581 = alloca %"class.testing::Message", align 8
  %582 = alloca %"class.testing::internal::AssertHelper", align 8
  %583 = alloca %"class.testing::AssertionResult", align 8
  %584 = alloca %"class.std::__cxx11::basic_string", align 8
  %585 = alloca %"class.chen::ip_address", align 4
  %586 = alloca %"class.testing::Message", align 8
  %587 = alloca %"class.testing::internal::AssertHelper", align 8
  %588 = alloca i8, align 1
  %589 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %590 = alloca i8, align 1
  %591 = alloca %"class.chen::ip_address", align 4
  %592 = alloca %"class.std::__cxx11::basic_string", align 8
  %593 = alloca %"class.std::allocator", align 1
  %594 = alloca ptr, align 8
  %595 = alloca %"class.testing::Message", align 8
  %596 = alloca %"class.testing::internal::AssertHelper", align 8
  %597 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %598 = alloca i8, align 1
  %599 = alloca %"class.chen::ip_address", align 4
  %600 = alloca %"class.chen::ip_version6", align 4
  %601 = alloca ptr, align 8
  %602 = alloca %"class.testing::Message", align 8
  %603 = alloca %"class.testing::internal::AssertHelper", align 8
  %604 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %605 = alloca i8, align 1
  %606 = alloca %"class.std::__cxx11::basic_string", align 8
  %607 = alloca %"class.std::allocator", align 1
  %608 = alloca %"struct.std::array", align 1
  %609 = alloca ptr, align 8
  %610 = alloca %"class.testing::Message", align 8
  %611 = alloca %"class.testing::internal::AssertHelper", align 8
  %612 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %613 = alloca i8, align 1
  %614 = alloca %"class.std::__cxx11::basic_string", align 8
  %615 = alloca %"class.std::allocator", align 1
  %616 = alloca %"struct.std::array", align 1
  %617 = alloca ptr, align 8
  %618 = alloca %"class.testing::Message", align 8
  %619 = alloca %"class.testing::internal::AssertHelper", align 8
  %620 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %621 = alloca i8, align 1
  %622 = alloca %"class.std::__cxx11::basic_string", align 8
  %623 = alloca %"class.std::allocator", align 1
  %624 = alloca %"struct.std::array", align 1
  %625 = alloca ptr, align 8
  %626 = alloca %"class.testing::Message", align 8
  %627 = alloca %"class.testing::internal::AssertHelper", align 8
  %628 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %629 = alloca i8, align 1
  %630 = alloca %"class.std::__cxx11::basic_string", align 8
  %631 = alloca %"class.std::allocator", align 1
  %632 = alloca %"struct.std::array", align 1
  %633 = alloca ptr, align 8
  %634 = alloca %"class.testing::Message", align 8
  %635 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %636 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %4) #10
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %4, i8 noundef zeroext 10)
  call void @llvm.lifetime.start.p0(i64 28, ptr %5) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %5, ptr noundef @.str.214)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %3, ptr noundef @.str.36, ptr noundef @.str.213, ptr noundef nonnull align 4 dereferenceable(28) %4, ptr noundef nonnull align 4 dereferenceable(28) %5)
  call void @llvm.lifetime.end.p0(i64 28, ptr %5) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %4) #10
  %637 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %638 unwind label %640

638:                                              ; preds = %1
  br i1 %637, label %639, label %644

639:                                              ; preds = %638
  br label %664

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

644:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %645 unwind label %650

645:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %646 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %647 unwind label %654

647:                                              ; preds = %645
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef 1, ptr noundef @.str.4, i32 noundef 235, ptr noundef %646)
          to label %648 unwind label %654

648:                                              ; preds = %647
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %649 unwind label %658

649:                                              ; preds = %648
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %664

650:                                              ; preds = %644
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %6, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %7, align 4
  br label %663

654:                                              ; preds = %647, %645
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %6, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %7, align 4
  br label %662

658:                                              ; preds = %648
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %6, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br label %662

662:                                              ; preds = %658, %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  br label %663

663:                                              ; preds = %662, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %668

664:                                              ; preds = %649, %639
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %11) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %11, ptr noundef @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr %12) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %12, ptr noundef @.str.216)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %10, ptr noundef @.str.215, ptr noundef @.str.215, ptr noundef nonnull align 4 dereferenceable(28) %11, ptr noundef nonnull align 4 dereferenceable(28) %12)
  call void @llvm.lifetime.end.p0(i64 28, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %11) #10
  %665 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %666 unwind label %669

666:                                              ; preds = %664
  br i1 %665, label %667, label %673

667:                                              ; preds = %666
  br label %693

668:                                              ; preds = %663, %640
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #10
  br label %5349

669:                                              ; preds = %664
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %6, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %7, align 4
  br label %700

673:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %674 unwind label %679

674:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %675 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %676 unwind label %683

676:                                              ; preds = %674
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 1, ptr noundef @.str.4, i32 noundef 236, ptr noundef %675)
          to label %677 unwind label %683

677:                                              ; preds = %676
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %678 unwind label %687

678:                                              ; preds = %677
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %693

679:                                              ; preds = %673
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %6, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %7, align 4
  br label %692

683:                                              ; preds = %676, %674
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %6, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %7, align 4
  br label %691

687:                                              ; preds = %677
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %6, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  br label %691

691:                                              ; preds = %687, %683
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br label %692

692:                                              ; preds = %691, %679
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %700

693:                                              ; preds = %678, %667
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %16) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %16, ptr noundef @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.218, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %694 unwind label %701

694:                                              ; preds = %693
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %17, ptr noundef nonnull align 8 dereferenceable(32) %18, i8 noundef zeroext 64)
          to label %695 unwind label %705

695:                                              ; preds = %694
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %15, ptr noundef @.str.215, ptr noundef @.str.217, ptr noundef nonnull align 4 dereferenceable(28) %16, ptr noundef nonnull align 4 dereferenceable(28) %17)
          to label %696 unwind label %705

696:                                              ; preds = %695
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %16) #10
  %697 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %698 unwind label %710

698:                                              ; preds = %696
  br i1 %697, label %699, label %714

699:                                              ; preds = %698
  br label %734

700:                                              ; preds = %692, %669
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #10
  br label %5349

701:                                              ; preds = %693
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %6, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %7, align 4
  br label %709

705:                                              ; preds = %695, %694
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %6, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %709

709:                                              ; preds = %705, %701
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %16) #10
  br label %743

710:                                              ; preds = %696
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %6, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %7, align 4
  br label %742

714:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %715 unwind label %720

715:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %716 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %717 unwind label %724

717:                                              ; preds = %715
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %21, i32 noundef 1, ptr noundef @.str.4, i32 noundef 237, ptr noundef %716)
          to label %718 unwind label %724

718:                                              ; preds = %717
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %719 unwind label %728

719:                                              ; preds = %718
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %734

720:                                              ; preds = %714
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %6, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %7, align 4
  br label %733

724:                                              ; preds = %717, %715
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %6, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %7, align 4
  br label %732

728:                                              ; preds = %718
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %6, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br label %732

732:                                              ; preds = %728, %724
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  br label %733

733:                                              ; preds = %732, %720
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %742

734:                                              ; preds = %719, %699
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %23) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %23, ptr noundef @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr %24) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.218, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %735 unwind label %744

735:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %736 unwind label %748

736:                                              ; preds = %735
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28) %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %737 unwind label %752

737:                                              ; preds = %736
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %22, ptr noundef @.str.215, ptr noundef @.str.219, ptr noundef nonnull align 4 dereferenceable(28) %23, ptr noundef nonnull align 4 dereferenceable(28) %24)
          to label %738 unwind label %752

738:                                              ; preds = %737
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %23) #10
  %739 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %740 unwind label %758

740:                                              ; preds = %738
  br i1 %739, label %741, label %762

741:                                              ; preds = %740
  br label %782

742:                                              ; preds = %733, %710
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #10
  br label %743

743:                                              ; preds = %742, %709
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #10
  br label %5349

744:                                              ; preds = %734
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %6, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %7, align 4
  br label %757

748:                                              ; preds = %735
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %6, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %7, align 4
  br label %756

752:                                              ; preds = %737, %736
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %6, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %756

756:                                              ; preds = %752, %748
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  br label %757

757:                                              ; preds = %756, %744
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %23) #10
  br label %787

758:                                              ; preds = %738
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %6, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %7, align 4
  br label %786

762:                                              ; preds = %740
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %763 unwind label %768

763:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %764 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %765 unwind label %772

765:                                              ; preds = %763
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef @.str.4, i32 noundef 238, ptr noundef %764)
          to label %766 unwind label %772

766:                                              ; preds = %765
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %767 unwind label %776

767:                                              ; preds = %766
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %782

768:                                              ; preds = %762
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %6, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %7, align 4
  br label %781

772:                                              ; preds = %765, %763
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %6, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %7, align 4
  br label %780

776:                                              ; preds = %766
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %6, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br label %780

780:                                              ; preds = %776, %772
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br label %781

781:                                              ; preds = %780, %768
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %786

782:                                              ; preds = %767, %741
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %32) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %32, ptr noundef @.str.214)
  call void @llvm.lifetime.start.p0(i64 28, ptr %33) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %33, ptr noundef @.str.222)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %31, ptr noundef @.str.213, ptr noundef @.str.221, ptr noundef nonnull align 4 dereferenceable(28) %32, ptr noundef nonnull align 4 dereferenceable(28) %33)
  call void @llvm.lifetime.end.p0(i64 28, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %32) #10
  %783 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %784 unwind label %788

784:                                              ; preds = %782
  br i1 %783, label %785, label %792

785:                                              ; preds = %784
  br label %812

786:                                              ; preds = %781, %758
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  br label %787

787:                                              ; preds = %786, %757
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #10
  br label %5349

788:                                              ; preds = %782
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %6, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %7, align 4
  br label %816

792:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %793 unwind label %798

793:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %794 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %795 unwind label %802

795:                                              ; preds = %793
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef @.str.4, i32 noundef 240, ptr noundef %794)
          to label %796 unwind label %802

796:                                              ; preds = %795
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %797 unwind label %806

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

798:                                              ; preds = %792
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %6, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %7, align 4
  br label %811

802:                                              ; preds = %795, %793
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %6, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %7, align 4
  br label %810

806:                                              ; preds = %796
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %6, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  br label %810

810:                                              ; preds = %806, %802
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br label %811

811:                                              ; preds = %810, %798
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %816

812:                                              ; preds = %797, %785
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %37) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %37, ptr noundef @.str.214)
  call void @llvm.lifetime.start.p0(i64 28, ptr %38) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %38, ptr noundef @.str.224)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %36, ptr noundef @.str.213, ptr noundef @.str.223, ptr noundef nonnull align 4 dereferenceable(28) %37, ptr noundef nonnull align 4 dereferenceable(28) %38)
  call void @llvm.lifetime.end.p0(i64 28, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %37) #10
  %813 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %814 unwind label %817

814:                                              ; preds = %812
  br i1 %813, label %815, label %821

815:                                              ; preds = %814
  br label %841

816:                                              ; preds = %811, %788
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #10
  br label %5349

817:                                              ; preds = %812
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %6, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %7, align 4
  br label %845

821:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %822 unwind label %827

822:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %823 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %824 unwind label %831

824:                                              ; preds = %822
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef @.str.4, i32 noundef 241, ptr noundef %823)
          to label %825 unwind label %831

825:                                              ; preds = %824
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %826 unwind label %835

826:                                              ; preds = %825
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %841

827:                                              ; preds = %821
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %6, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %7, align 4
  br label %840

831:                                              ; preds = %824, %822
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %6, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %7, align 4
  br label %839

835:                                              ; preds = %825
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %6, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  br label %839

839:                                              ; preds = %835, %831
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  br label %840

840:                                              ; preds = %839, %827
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %845

841:                                              ; preds = %826, %815
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %42) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %42, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr %43) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %43, ptr noundef @.str.227)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %41, ptr noundef @.str.225, ptr noundef @.str.226, ptr noundef nonnull align 4 dereferenceable(28) %42, ptr noundef nonnull align 4 dereferenceable(28) %43)
  call void @llvm.lifetime.end.p0(i64 28, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %42) #10
  %842 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %843 unwind label %846

843:                                              ; preds = %841
  br i1 %842, label %844, label %850

844:                                              ; preds = %843
  br label %870

845:                                              ; preds = %840, %817
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #10
  br label %5349

846:                                              ; preds = %841
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %6, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %7, align 4
  br label %874

850:                                              ; preds = %843
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %851 unwind label %856

851:                                              ; preds = %850
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %852 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %853 unwind label %860

853:                                              ; preds = %851
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 1, ptr noundef @.str.4, i32 noundef 243, ptr noundef %852)
          to label %854 unwind label %860

854:                                              ; preds = %853
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %855 unwind label %864

855:                                              ; preds = %854
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %870

856:                                              ; preds = %850
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %6, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %7, align 4
  br label %869

860:                                              ; preds = %853, %851
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %6, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %7, align 4
  br label %868

864:                                              ; preds = %854
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %6, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  br label %868

868:                                              ; preds = %864, %860
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  br label %869

869:                                              ; preds = %868, %856
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %874

870:                                              ; preds = %855, %844
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %47) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %47, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr %48) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %48, ptr noundef @.str.229)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %46, ptr noundef @.str.225, ptr noundef @.str.228, ptr noundef nonnull align 4 dereferenceable(28) %47, ptr noundef nonnull align 4 dereferenceable(28) %48)
  call void @llvm.lifetime.end.p0(i64 28, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %47) #10
  %871 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %872 unwind label %875

872:                                              ; preds = %870
  br i1 %871, label %873, label %879

873:                                              ; preds = %872
  br label %899

874:                                              ; preds = %869, %846
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #10
  br label %5349

875:                                              ; preds = %870
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %6, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %7, align 4
  br label %903

879:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %880 unwind label %885

880:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %881 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %882 unwind label %889

882:                                              ; preds = %880
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef 1, ptr noundef @.str.4, i32 noundef 244, ptr noundef %881)
          to label %883 unwind label %889

883:                                              ; preds = %882
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %884 unwind label %893

884:                                              ; preds = %883
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %899

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

889:                                              ; preds = %882, %880
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %6, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %7, align 4
  br label %897

893:                                              ; preds = %883
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %6, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  br label %897

897:                                              ; preds = %893, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  br label %898

898:                                              ; preds = %897, %885
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %903

899:                                              ; preds = %884, %873
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %52) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %52, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr %53) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %53, ptr noundef @.str.231)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %51, ptr noundef @.str.225, ptr noundef @.str.230, ptr noundef nonnull align 4 dereferenceable(28) %52, ptr noundef nonnull align 4 dereferenceable(28) %53)
  call void @llvm.lifetime.end.p0(i64 28, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %52) #10
  %900 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %901 unwind label %904

901:                                              ; preds = %899
  br i1 %900, label %902, label %908

902:                                              ; preds = %901
  br label %928

903:                                              ; preds = %898, %875
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #10
  br label %5349

904:                                              ; preds = %899
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %6, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %7, align 4
  br label %932

908:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %909 unwind label %914

909:                                              ; preds = %908
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %910 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %911 unwind label %918

911:                                              ; preds = %909
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %55, i32 noundef 1, ptr noundef @.str.4, i32 noundef 245, ptr noundef %910)
          to label %912 unwind label %918

912:                                              ; preds = %911
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %913 unwind label %922

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

914:                                              ; preds = %908
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %6, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %7, align 4
  br label %927

918:                                              ; preds = %911, %909
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %6, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %7, align 4
  br label %926

922:                                              ; preds = %912
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %6, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  br label %926

926:                                              ; preds = %922, %918
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  br label %927

927:                                              ; preds = %926, %914
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  br label %932

928:                                              ; preds = %913, %902
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %57) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %57, ptr noundef @.str.234)
  call void @llvm.lifetime.start.p0(i64 28, ptr %58) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %58, ptr noundef @.str.235)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %56, ptr noundef @.str.232, ptr noundef @.str.233, ptr noundef nonnull align 4 dereferenceable(28) %57, ptr noundef nonnull align 4 dereferenceable(28) %58)
  call void @llvm.lifetime.end.p0(i64 28, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %57) #10
  %929 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %930 unwind label %933

930:                                              ; preds = %928
  br i1 %929, label %931, label %937

931:                                              ; preds = %930
  br label %957

932:                                              ; preds = %927, %904
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  br label %5349

933:                                              ; preds = %928
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %6, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %7, align 4
  br label %961

937:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %938 unwind label %943

938:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %939 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %940 unwind label %947

940:                                              ; preds = %938
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef 1, ptr noundef @.str.4, i32 noundef 247, ptr noundef %939)
          to label %941 unwind label %947

941:                                              ; preds = %940
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %942 unwind label %951

942:                                              ; preds = %941
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %957

943:                                              ; preds = %937
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %6, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %7, align 4
  br label %956

947:                                              ; preds = %940, %938
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %6, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %7, align 4
  br label %955

951:                                              ; preds = %941
  %952 = landingpad { ptr, i32 }
          cleanup
  %953 = extractvalue { ptr, i32 } %952, 0
  store ptr %953, ptr %6, align 8
  %954 = extractvalue { ptr, i32 } %952, 1
  store i32 %954, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br label %955

955:                                              ; preds = %951, %947
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  br label %956

956:                                              ; preds = %955, %943
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %961

957:                                              ; preds = %942, %931
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %62) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %62, ptr noundef @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr %63) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %63, ptr noundef @.str.237)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %61, ptr noundef @.str.236, ptr noundef @.str.236, ptr noundef nonnull align 4 dereferenceable(28) %62, ptr noundef nonnull align 4 dereferenceable(28) %63)
  call void @llvm.lifetime.end.p0(i64 28, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %62) #10
  %958 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %959 unwind label %962

959:                                              ; preds = %957
  br i1 %958, label %960, label %966

960:                                              ; preds = %959
  br label %986

961:                                              ; preds = %956, %933
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  br label %5349

962:                                              ; preds = %957
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %6, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %7, align 4
  br label %993

966:                                              ; preds = %959
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %967 unwind label %972

967:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %968 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %969 unwind label %976

969:                                              ; preds = %967
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef @.str.4, i32 noundef 249, ptr noundef %968)
          to label %970 unwind label %976

970:                                              ; preds = %969
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %971 unwind label %980

971:                                              ; preds = %970
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %986

972:                                              ; preds = %966
  %973 = landingpad { ptr, i32 }
          cleanup
  %974 = extractvalue { ptr, i32 } %973, 0
  store ptr %974, ptr %6, align 8
  %975 = extractvalue { ptr, i32 } %973, 1
  store i32 %975, ptr %7, align 4
  br label %985

976:                                              ; preds = %969, %967
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %6, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %7, align 4
  br label %984

980:                                              ; preds = %970
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %6, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %984

984:                                              ; preds = %980, %976
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br label %985

985:                                              ; preds = %984, %972
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %993

986:                                              ; preds = %971, %960
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %67) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %67, ptr noundef @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr %68) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %987 unwind label %994

987:                                              ; preds = %986
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %68, ptr noundef nonnull align 8 dereferenceable(32) %69, i8 noundef zeroext -128)
          to label %988 unwind label %998

988:                                              ; preds = %987
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %66, ptr noundef @.str.236, ptr noundef @.str.238, ptr noundef nonnull align 4 dereferenceable(28) %67, ptr noundef nonnull align 4 dereferenceable(28) %68)
          to label %989 unwind label %998

989:                                              ; preds = %988
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %67) #10
  %990 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %991 unwind label %1003

991:                                              ; preds = %989
  br i1 %990, label %992, label %1007

992:                                              ; preds = %991
  br label %1027

993:                                              ; preds = %985, %962
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #10
  br label %5349

994:                                              ; preds = %986
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %6, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %7, align 4
  br label %1002

998:                                              ; preds = %988, %987
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %6, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  br label %1002

1002:                                             ; preds = %998, %994
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %67) #10
  br label %1035

1003:                                             ; preds = %989
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %6, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %7, align 4
  br label %1034

1007:                                             ; preds = %991
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %1008 unwind label %1013

1008:                                             ; preds = %1007
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %1009 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %1010 unwind label %1017

1010:                                             ; preds = %1008
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %72, i32 noundef 1, ptr noundef @.str.4, i32 noundef 250, ptr noundef %1009)
          to label %1011 unwind label %1017

1011:                                             ; preds = %1010
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %1012 unwind label %1021

1012:                                             ; preds = %1011
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  br label %1027

1013:                                             ; preds = %1007
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %6, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %7, align 4
  br label %1026

1017:                                             ; preds = %1010, %1008
  %1018 = landingpad { ptr, i32 }
          cleanup
  %1019 = extractvalue { ptr, i32 } %1018, 0
  store ptr %1019, ptr %6, align 8
  %1020 = extractvalue { ptr, i32 } %1018, 1
  store i32 %1020, ptr %7, align 4
  br label %1025

1021:                                             ; preds = %1011
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %6, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br label %1025

1025:                                             ; preds = %1021, %1017
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %1026

1026:                                             ; preds = %1025, %1013
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  br label %1034

1027:                                             ; preds = %1012, %992
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %74) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %74, ptr noundef @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr %75) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %1028 unwind label %1036

1028:                                             ; preds = %1027
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28) %75, ptr noundef nonnull align 8 dereferenceable(32) %76, i8 noundef zeroext -128, i32 noundef 1)
          to label %1029 unwind label %1040

1029:                                             ; preds = %1028
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %73, ptr noundef @.str.236, ptr noundef @.str.239, ptr noundef nonnull align 4 dereferenceable(28) %74, ptr noundef nonnull align 4 dereferenceable(28) %75)
          to label %1030 unwind label %1040

1030:                                             ; preds = %1029
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %74) #10
  %1031 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %1032 unwind label %1045

1032:                                             ; preds = %1030
  br i1 %1031, label %1033, label %1049

1033:                                             ; preds = %1032
  br label %1069

1034:                                             ; preds = %1026, %1003
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #10
  br label %1035

1035:                                             ; preds = %1034, %1002
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #10
  br label %5349

1036:                                             ; preds = %1027
  %1037 = landingpad { ptr, i32 }
          cleanup
  %1038 = extractvalue { ptr, i32 } %1037, 0
  store ptr %1038, ptr %6, align 8
  %1039 = extractvalue { ptr, i32 } %1037, 1
  store i32 %1039, ptr %7, align 4
  br label %1044

1040:                                             ; preds = %1029, %1028
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %6, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %1044

1044:                                             ; preds = %1040, %1036
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %74) #10
  br label %1077

1045:                                             ; preds = %1030
  %1046 = landingpad { ptr, i32 }
          cleanup
  %1047 = extractvalue { ptr, i32 } %1046, 0
  store ptr %1047, ptr %6, align 8
  %1048 = extractvalue { ptr, i32 } %1046, 1
  store i32 %1048, ptr %7, align 4
  br label %1076

1049:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %1050 unwind label %1055

1050:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  %1051 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %1052 unwind label %1059

1052:                                             ; preds = %1050
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 1, ptr noundef @.str.4, i32 noundef 251, ptr noundef %1051)
          to label %1053 unwind label %1059

1053:                                             ; preds = %1052
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %1054 unwind label %1063

1054:                                             ; preds = %1053
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %1069

1055:                                             ; preds = %1049
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %6, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %7, align 4
  br label %1068

1059:                                             ; preds = %1052, %1050
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %6, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %7, align 4
  br label %1067

1063:                                             ; preds = %1053
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %6, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  br label %1067

1067:                                             ; preds = %1063, %1059
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  br label %1068

1068:                                             ; preds = %1067, %1055
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %1076

1069:                                             ; preds = %1054, %1033
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %81) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %81, ptr noundef @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %1070 unwind label %1078

1070:                                             ; preds = %1069
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %82, ptr noundef nonnull align 8 dereferenceable(32) %83, i8 noundef zeroext 64)
          to label %1071 unwind label %1082

1071:                                             ; preds = %1070
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %80, ptr noundef @.str.241, ptr noundef @.str.242, ptr noundef nonnull align 4 dereferenceable(28) %81, ptr noundef nonnull align 4 dereferenceable(28) %82)
          to label %1072 unwind label %1082

1072:                                             ; preds = %1071
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %81) #10
  %1073 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %1074 unwind label %1087

1074:                                             ; preds = %1072
  br i1 %1073, label %1075, label %1091

1075:                                             ; preds = %1074
  br label %1111

1076:                                             ; preds = %1068, %1045
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  br label %1077

1077:                                             ; preds = %1076, %1044
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #10
  br label %5349

1078:                                             ; preds = %1069
  %1079 = landingpad { ptr, i32 }
          cleanup
  %1080 = extractvalue { ptr, i32 } %1079, 0
  store ptr %1080, ptr %6, align 8
  %1081 = extractvalue { ptr, i32 } %1079, 1
  store i32 %1081, ptr %7, align 4
  br label %1086

1082:                                             ; preds = %1071, %1070
  %1083 = landingpad { ptr, i32 }
          cleanup
  %1084 = extractvalue { ptr, i32 } %1083, 0
  store ptr %1084, ptr %6, align 8
  %1085 = extractvalue { ptr, i32 } %1083, 1
  store i32 %1085, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #10
  br label %1086

1086:                                             ; preds = %1082, %1078
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %81) #10
  br label %1119

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

1091:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1092 unwind label %1097

1092:                                             ; preds = %1091
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  %1093 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %1094 unwind label %1101

1094:                                             ; preds = %1092
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 1, ptr noundef @.str.4, i32 noundef 253, ptr noundef %1093)
          to label %1095 unwind label %1101

1095:                                             ; preds = %1094
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1096 unwind label %1105

1096:                                             ; preds = %1095
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %1111

1097:                                             ; preds = %1091
  %1098 = landingpad { ptr, i32 }
          cleanup
  %1099 = extractvalue { ptr, i32 } %1098, 0
  store ptr %1099, ptr %6, align 8
  %1100 = extractvalue { ptr, i32 } %1098, 1
  store i32 %1100, ptr %7, align 4
  br label %1110

1101:                                             ; preds = %1094, %1092
  %1102 = landingpad { ptr, i32 }
          cleanup
  %1103 = extractvalue { ptr, i32 } %1102, 0
  store ptr %1103, ptr %6, align 8
  %1104 = extractvalue { ptr, i32 } %1102, 1
  store i32 %1104, ptr %7, align 4
  br label %1109

1105:                                             ; preds = %1095
  %1106 = landingpad { ptr, i32 }
          cleanup
  %1107 = extractvalue { ptr, i32 } %1106, 0
  store ptr %1107, ptr %6, align 8
  %1108 = extractvalue { ptr, i32 } %1106, 1
  store i32 %1108, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #10
  br label %1109

1109:                                             ; preds = %1105, %1101
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  br label %1110

1110:                                             ; preds = %1109, %1097
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %1118

1111:                                             ; preds = %1096, %1075
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %88) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %88, ptr noundef @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr %89) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %1112 unwind label %1120

1112:                                             ; preds = %1111
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28) %89, ptr noundef nonnull align 8 dereferenceable(32) %90, i8 noundef zeroext 64, i32 noundef 1)
          to label %1113 unwind label %1124

1113:                                             ; preds = %1112
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %87, ptr noundef @.str.241, ptr noundef @.str.244, ptr noundef nonnull align 4 dereferenceable(28) %88, ptr noundef nonnull align 4 dereferenceable(28) %89)
          to label %1114 unwind label %1124

1114:                                             ; preds = %1113
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %88) #10
  %1115 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %1116 unwind label %1129

1116:                                             ; preds = %1114
  br i1 %1115, label %1117, label %1133

1117:                                             ; preds = %1116
  br label %1153

1118:                                             ; preds = %1110, %1087
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #10
  br label %1119

1119:                                             ; preds = %1118, %1086
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #10
  br label %5349

1120:                                             ; preds = %1111
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %6, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %7, align 4
  br label %1128

1124:                                             ; preds = %1113, %1112
  %1125 = landingpad { ptr, i32 }
          cleanup
  %1126 = extractvalue { ptr, i32 } %1125, 0
  store ptr %1126, ptr %6, align 8
  %1127 = extractvalue { ptr, i32 } %1125, 1
  store i32 %1127, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  br label %1128

1128:                                             ; preds = %1124, %1120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %88) #10
  br label %1162

1129:                                             ; preds = %1114
  %1130 = landingpad { ptr, i32 }
          cleanup
  %1131 = extractvalue { ptr, i32 } %1130, 0
  store ptr %1131, ptr %6, align 8
  %1132 = extractvalue { ptr, i32 } %1130, 1
  store i32 %1132, ptr %7, align 4
  br label %1161

1133:                                             ; preds = %1116
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1134 unwind label %1139

1134:                                             ; preds = %1133
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %1135 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %1136 unwind label %1143

1136:                                             ; preds = %1134
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef 1, ptr noundef @.str.4, i32 noundef 254, ptr noundef %1135)
          to label %1137 unwind label %1143

1137:                                             ; preds = %1136
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1138 unwind label %1147

1138:                                             ; preds = %1137
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %1153

1139:                                             ; preds = %1133
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %6, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %7, align 4
  br label %1152

1143:                                             ; preds = %1136, %1134
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %6, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %7, align 4
  br label %1151

1147:                                             ; preds = %1137
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %6, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %1151

1151:                                             ; preds = %1147, %1143
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #10
  br label %1152

1152:                                             ; preds = %1151, %1139
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %1161

1153:                                             ; preds = %1138, %1117
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %95) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %95, ptr noundef @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr %96) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %1154 unwind label %1163

1154:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %1155 unwind label %1167

1155:                                             ; preds = %1154
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28) %96, ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %1156 unwind label %1171

1156:                                             ; preds = %1155
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %94, ptr noundef @.str.241, ptr noundef @.str.245, ptr noundef nonnull align 4 dereferenceable(28) %95, ptr noundef nonnull align 4 dereferenceable(28) %96)
          to label %1157 unwind label %1171

1157:                                             ; preds = %1156
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %95) #10
  %1158 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %1159 unwind label %1177

1159:                                             ; preds = %1157
  br i1 %1158, label %1160, label %1181

1160:                                             ; preds = %1159
  br label %1201

1161:                                             ; preds = %1152, %1129
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #10
  br label %1162

1162:                                             ; preds = %1161, %1128
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #10
  br label %5349

1163:                                             ; preds = %1153
  %1164 = landingpad { ptr, i32 }
          cleanup
  %1165 = extractvalue { ptr, i32 } %1164, 0
  store ptr %1165, ptr %6, align 8
  %1166 = extractvalue { ptr, i32 } %1164, 1
  store i32 %1166, ptr %7, align 4
  br label %1176

1167:                                             ; preds = %1154
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %6, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %7, align 4
  br label %1175

1171:                                             ; preds = %1156, %1155
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %6, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #10
  br label %1175

1175:                                             ; preds = %1171, %1167
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  br label %1176

1176:                                             ; preds = %1175, %1163
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %95) #10
  br label %1210

1177:                                             ; preds = %1157
  %1178 = landingpad { ptr, i32 }
          cleanup
  %1179 = extractvalue { ptr, i32 } %1178, 0
  store ptr %1179, ptr %6, align 8
  %1180 = extractvalue { ptr, i32 } %1178, 1
  store i32 %1180, ptr %7, align 4
  br label %1209

1181:                                             ; preds = %1159
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1182 unwind label %1187

1182:                                             ; preds = %1181
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %1183 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %1184 unwind label %1191

1184:                                             ; preds = %1182
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %102, i32 noundef 1, ptr noundef @.str.4, i32 noundef 255, ptr noundef %1183)
          to label %1185 unwind label %1191

1185:                                             ; preds = %1184
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1186 unwind label %1195

1186:                                             ; preds = %1185
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1201

1187:                                             ; preds = %1181
  %1188 = landingpad { ptr, i32 }
          cleanup
  %1189 = extractvalue { ptr, i32 } %1188, 0
  store ptr %1189, ptr %6, align 8
  %1190 = extractvalue { ptr, i32 } %1188, 1
  store i32 %1190, ptr %7, align 4
  br label %1200

1191:                                             ; preds = %1184, %1182
  %1192 = landingpad { ptr, i32 }
          cleanup
  %1193 = extractvalue { ptr, i32 } %1192, 0
  store ptr %1193, ptr %6, align 8
  %1194 = extractvalue { ptr, i32 } %1192, 1
  store i32 %1194, ptr %7, align 4
  br label %1199

1195:                                             ; preds = %1185
  %1196 = landingpad { ptr, i32 }
          cleanup
  %1197 = extractvalue { ptr, i32 } %1196, 0
  store ptr %1197, ptr %6, align 8
  %1198 = extractvalue { ptr, i32 } %1196, 1
  store i32 %1198, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  br label %1199

1199:                                             ; preds = %1195, %1191
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  br label %1200

1200:                                             ; preds = %1199, %1187
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1209

1201:                                             ; preds = %1186, %1160
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %104) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %104, ptr noundef @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr %105) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %1202 unwind label %1211

1202:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %1203 unwind label %1215

1203:                                             ; preds = %1202
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(ptr noundef nonnull align 4 dereferenceable(28) %105, ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(32) %108, i32 noundef 1)
          to label %1204 unwind label %1219

1204:                                             ; preds = %1203
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %103, ptr noundef @.str.241, ptr noundef @.str.246, ptr noundef nonnull align 4 dereferenceable(28) %104, ptr noundef nonnull align 4 dereferenceable(28) %105)
          to label %1205 unwind label %1219

1205:                                             ; preds = %1204
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %104) #10
  %1206 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %1207 unwind label %1225

1207:                                             ; preds = %1205
  br i1 %1206, label %1208, label %1229

1208:                                             ; preds = %1207
  br label %1249

1209:                                             ; preds = %1200, %1177
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #10
  br label %1210

1210:                                             ; preds = %1209, %1176
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #10
  br label %5349

1211:                                             ; preds = %1201
  %1212 = landingpad { ptr, i32 }
          cleanup
  %1213 = extractvalue { ptr, i32 } %1212, 0
  store ptr %1213, ptr %6, align 8
  %1214 = extractvalue { ptr, i32 } %1212, 1
  store i32 %1214, ptr %7, align 4
  br label %1224

1215:                                             ; preds = %1202
  %1216 = landingpad { ptr, i32 }
          cleanup
  %1217 = extractvalue { ptr, i32 } %1216, 0
  store ptr %1217, ptr %6, align 8
  %1218 = extractvalue { ptr, i32 } %1216, 1
  store i32 %1218, ptr %7, align 4
  br label %1223

1219:                                             ; preds = %1204, %1203
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %6, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #10
  br label %1223

1223:                                             ; preds = %1219, %1215
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #10
  br label %1224

1224:                                             ; preds = %1223, %1211
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %104) #10
  br label %1255

1225:                                             ; preds = %1205
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %6, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %7, align 4
  br label %1254

1229:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %1230 unwind label %1235

1230:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  %1231 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %1232 unwind label %1239

1232:                                             ; preds = %1230
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 1, ptr noundef @.str.4, i32 noundef 256, ptr noundef %1231)
          to label %1233 unwind label %1239

1233:                                             ; preds = %1232
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %1234 unwind label %1243

1234:                                             ; preds = %1233
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  br label %1249

1235:                                             ; preds = %1229
  %1236 = landingpad { ptr, i32 }
          cleanup
  %1237 = extractvalue { ptr, i32 } %1236, 0
  store ptr %1237, ptr %6, align 8
  %1238 = extractvalue { ptr, i32 } %1236, 1
  store i32 %1238, ptr %7, align 4
  br label %1248

1239:                                             ; preds = %1232, %1230
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %6, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %7, align 4
  br label %1247

1243:                                             ; preds = %1233
  %1244 = landingpad { ptr, i32 }
          cleanup
  %1245 = extractvalue { ptr, i32 } %1244, 0
  store ptr %1245, ptr %6, align 8
  %1246 = extractvalue { ptr, i32 } %1244, 1
  store i32 %1246, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #10
  br label %1247

1247:                                             ; preds = %1243, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #10
  br label %1248

1248:                                             ; preds = %1247, %1235
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  br label %1254

1249:                                             ; preds = %1234, %1208
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %112, ptr align 16 @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.bytes, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %114) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %114, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr %115) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %116) #10
  %1250 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  call void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24) %116, ptr noundef %1250)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %115, ptr noundef nonnull align 4 dereferenceable(24) %116)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %113, ptr noundef @.str.225, ptr noundef @.str.247, ptr noundef nonnull align 4 dereferenceable(28) %114, ptr noundef nonnull align 4 dereferenceable(28) %115)
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %114) #10
  %1251 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %1252 unwind label %1256

1252:                                             ; preds = %1249
  br i1 %1251, label %1253, label %1260

1253:                                             ; preds = %1252
  br label %1280

1254:                                             ; preds = %1248, %1225
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  br label %1255

1255:                                             ; preds = %1254, %1224
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #10
  br label %5349

1256:                                             ; preds = %1249
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %6, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %7, align 4
  br label %1285

1260:                                             ; preds = %1252
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1261 unwind label %1266

1261:                                             ; preds = %1260
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %1262 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %1263 unwind label %1270

1263:                                             ; preds = %1261
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %118, i32 noundef 1, ptr noundef @.str.4, i32 noundef 260, ptr noundef %1262)
          to label %1264 unwind label %1270

1264:                                             ; preds = %1263
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1265 unwind label %1274

1265:                                             ; preds = %1264
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1280

1266:                                             ; preds = %1260
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %6, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %7, align 4
  br label %1279

1270:                                             ; preds = %1263, %1261
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %6, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %7, align 4
  br label %1278

1274:                                             ; preds = %1264
  %1275 = landingpad { ptr, i32 }
          cleanup
  %1276 = extractvalue { ptr, i32 } %1275, 0
  store ptr %1276, ptr %6, align 8
  %1277 = extractvalue { ptr, i32 } %1275, 1
  store i32 %1277, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #10
  br label %1278

1278:                                             ; preds = %1274, %1270
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #10
  br label %1279

1279:                                             ; preds = %1278, %1266
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1285

1280:                                             ; preds = %1265, %1253
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %120) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %120, ptr noundef @.str.250)
  call void @llvm.lifetime.start.p0(i64 28, ptr %121) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %122) #10
  %1281 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  call void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %122, ptr noundef %1281, i8 noundef zeroext 64)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %121, ptr noundef nonnull align 4 dereferenceable(24) %122)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %119, ptr noundef @.str.248, ptr noundef @.str.249, ptr noundef nonnull align 4 dereferenceable(28) %120, ptr noundef nonnull align 4 dereferenceable(28) %121)
  call void @llvm.lifetime.end.p0(i64 24, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %120) #10
  %1282 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %119)
          to label %1283 unwind label %1286

1283:                                             ; preds = %1280
  br i1 %1282, label %1284, label %1290

1284:                                             ; preds = %1283
  br label %1310

1285:                                             ; preds = %1279, %1256
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #10
  br label %5348

1286:                                             ; preds = %1280
  %1287 = landingpad { ptr, i32 }
          cleanup
  %1288 = extractvalue { ptr, i32 } %1287, 0
  store ptr %1288, ptr %6, align 8
  %1289 = extractvalue { ptr, i32 } %1287, 1
  store i32 %1289, ptr %7, align 4
  br label %1319

1290:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %123)
          to label %1291 unwind label %1296

1291:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %1292 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %119)
          to label %1293 unwind label %1300

1293:                                             ; preds = %1291
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %124, i32 noundef 1, ptr noundef @.str.4, i32 noundef 261, ptr noundef %1292)
          to label %1294 unwind label %1300

1294:                                             ; preds = %1293
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %123)
          to label %1295 unwind label %1304

1295:                                             ; preds = %1294
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1310

1296:                                             ; preds = %1290
  %1297 = landingpad { ptr, i32 }
          cleanup
  %1298 = extractvalue { ptr, i32 } %1297, 0
  store ptr %1298, ptr %6, align 8
  %1299 = extractvalue { ptr, i32 } %1297, 1
  store i32 %1299, ptr %7, align 4
  br label %1309

1300:                                             ; preds = %1293, %1291
  %1301 = landingpad { ptr, i32 }
          cleanup
  %1302 = extractvalue { ptr, i32 } %1301, 0
  store ptr %1302, ptr %6, align 8
  %1303 = extractvalue { ptr, i32 } %1301, 1
  store i32 %1303, ptr %7, align 4
  br label %1308

1304:                                             ; preds = %1294
  %1305 = landingpad { ptr, i32 }
          cleanup
  %1306 = extractvalue { ptr, i32 } %1305, 0
  store ptr %1306, ptr %6, align 8
  %1307 = extractvalue { ptr, i32 } %1305, 1
  store i32 %1307, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  br label %1308

1308:                                             ; preds = %1304, %1300
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  br label %1309

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

1310:                                             ; preds = %1295, %1284
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %126) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %126, ptr noundef @.str.250)
  call void @llvm.lifetime.start.p0(i64 28, ptr %127) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %128) #10
  %1311 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %1312 unwind label %1320

1312:                                             ; preds = %1310
  invoke void @_ZN4chen11ip_version6C1EPKhRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(24) %128, ptr noundef %1311, ptr noundef nonnull align 8 dereferenceable(32) %129)
          to label %1313 unwind label %1324

1313:                                             ; preds = %1312
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %127, ptr noundef nonnull align 4 dereferenceable(24) %128)
          to label %1314 unwind label %1324

1314:                                             ; preds = %1313
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %125, ptr noundef @.str.248, ptr noundef @.str.251, ptr noundef nonnull align 4 dereferenceable(28) %126, ptr noundef nonnull align 4 dereferenceable(28) %127)
          to label %1315 unwind label %1324

1315:                                             ; preds = %1314
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %126) #10
  %1316 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %1317 unwind label %1329

1317:                                             ; preds = %1315
  br i1 %1316, label %1318, label %1333

1318:                                             ; preds = %1317
  br label %1353

1319:                                             ; preds = %1309, %1286
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #10
  br label %5348

1320:                                             ; preds = %1310
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %6, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %7, align 4
  br label %1328

1324:                                             ; preds = %1314, %1313, %1312
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %6, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  br label %1328

1328:                                             ; preds = %1324, %1320
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %126) #10
  br label %1361

1329:                                             ; preds = %1315
  %1330 = landingpad { ptr, i32 }
          cleanup
  %1331 = extractvalue { ptr, i32 } %1330, 0
  store ptr %1331, ptr %6, align 8
  %1332 = extractvalue { ptr, i32 } %1330, 1
  store i32 %1332, ptr %7, align 4
  br label %1360

1333:                                             ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %1334 unwind label %1339

1334:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  %1335 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %1336 unwind label %1343

1336:                                             ; preds = %1334
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %132, i32 noundef 1, ptr noundef @.str.4, i32 noundef 262, ptr noundef %1335)
          to label %1337 unwind label %1343

1337:                                             ; preds = %1336
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %1338 unwind label %1347

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

1339:                                             ; preds = %1333
  %1340 = landingpad { ptr, i32 }
          cleanup
  %1341 = extractvalue { ptr, i32 } %1340, 0
  store ptr %1341, ptr %6, align 8
  %1342 = extractvalue { ptr, i32 } %1340, 1
  store i32 %1342, ptr %7, align 4
  br label %1352

1343:                                             ; preds = %1336, %1334
  %1344 = landingpad { ptr, i32 }
          cleanup
  %1345 = extractvalue { ptr, i32 } %1344, 0
  store ptr %1345, ptr %6, align 8
  %1346 = extractvalue { ptr, i32 } %1344, 1
  store i32 %1346, ptr %7, align 4
  br label %1351

1347:                                             ; preds = %1337
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %6, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  br label %1351

1351:                                             ; preds = %1347, %1343
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #10
  br label %1352

1352:                                             ; preds = %1351, %1339
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  br label %1360

1353:                                             ; preds = %1338, %1318
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #10
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef @.str.27)
  %1354 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %133)
  br i1 %1354, label %1355, label %1387

1355:                                             ; preds = %1353
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #10
  store i8 0, ptr %134, align 1, !tbaa !9
  %1356 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1357 unwind label %1362

1357:                                             ; preds = %1355
  br i1 %1356, label %1358, label %1382

1358:                                             ; preds = %1357
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %135, ptr noundef @.str.252)
          to label %1359 unwind label %1362

1359:                                             ; preds = %1358
  br label %1382

1360:                                             ; preds = %1352, %1329
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  br label %1361

1361:                                             ; preds = %1360, %1328
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #10
  br label %5348

1362:                                             ; preds = %1358, %1355
  %1363 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1364 = extractvalue { ptr, i32 } %1363, 0
  store ptr %1364, ptr %6, align 8
  %1365 = extractvalue { ptr, i32 } %1363, 1
  store i32 %1365, ptr %7, align 4
  br label %1366

1366:                                             ; preds = %1362
  %1367 = load i32, ptr %7, align 4
  %1368 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %1369 = icmp eq i32 %1367, %1368
  br i1 %1369, label %1370, label %1378

1370:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #10
  %1371 = load ptr, ptr %6, align 8
  %1372 = call ptr @__cxa_begin_catch(ptr %1371) #10
  store ptr %1372, ptr %137, align 8
  store i8 1, ptr %134, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  br label %1373

1373:                                             ; preds = %1382, %1370
  %1374 = load i8, ptr %134, align 1, !tbaa !9, !range !11, !noundef !12
  %1375 = trunc i8 %1374 to i1
  br i1 %1375, label %1383, label %1376

1376:                                             ; preds = %1373
  %1377 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %133, i32 0, i32 0
  store ptr @.str.254, ptr %1377, align 8, !tbaa !13
  store i32 2, ptr %136, align 4
  br label %1384

1378:                                             ; preds = %1366
  %1379 = load ptr, ptr %6, align 8
  %1380 = call ptr @__cxa_begin_catch(ptr %1379) #10
  %1381 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %133, i32 0, i32 0
  store ptr @.str.253, ptr %1381, align 8, !tbaa !13
  store i32 2, ptr %136, align 4
  call void @__cxa_end_catch()
  br label %1384

1382:                                             ; preds = %1359, %1357
  br label %1373

1383:                                             ; preds = %1373
  store i32 0, ptr %136, align 4
  br label %1384

1384:                                             ; preds = %1383, %1378, %1376
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #10
  %1385 = load i32, ptr %136, align 4
  switch i32 %1385, label %5354 [
    i32 0, label %1386
    i32 2, label %1388
  ]

1386:                                             ; preds = %1384
  br label %1402

1387:                                             ; preds = %1353
  br label %1388

1388:                                             ; preds = %1387, %1384
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #10
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138)
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #10
  %1389 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %133, i32 0, i32 0
  %1390 = load ptr, ptr %1389, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %139, i32 noundef 1, ptr noundef @.str.4, i32 noundef 264, ptr noundef %1390)
          to label %1391 unwind label %1393

1391:                                             ; preds = %1388
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %1392 unwind label %1397

1392:                                             ; preds = %1391
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  br label %1402

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

1397:                                             ; preds = %1391
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %6, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #10
  br label %1401

1401:                                             ; preds = %1397, %1393
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  br label %5348

1402:                                             ; preds = %1392, %1386
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #10
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef @.str.27)
  %1403 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %140)
  br i1 %1403, label %1404, label %1440

1404:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #10
  store i8 0, ptr %141, align 1, !tbaa !9
  %1405 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1406 unwind label %1411

1406:                                             ; preds = %1404
  br i1 %1405, label %1407, label %1435

1407:                                             ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 24, ptr %143) #10
  %1408 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  invoke void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %143, ptr noundef %1408, i8 noundef zeroext -127)
          to label %1409 unwind label %1415

1409:                                             ; preds = %1407
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %142, ptr noundef nonnull align 4 dereferenceable(24) %143)
          to label %1410 unwind label %1415

1410:                                             ; preds = %1409
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #10
  br label %1435

1411:                                             ; preds = %1404
  %1412 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1413 = extractvalue { ptr, i32 } %1412, 0
  store ptr %1413, ptr %6, align 8
  %1414 = extractvalue { ptr, i32 } %1412, 1
  store i32 %1414, ptr %7, align 4
  br label %1419

1415:                                             ; preds = %1409, %1407
  %1416 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1417 = extractvalue { ptr, i32 } %1416, 0
  store ptr %1417, ptr %6, align 8
  %1418 = extractvalue { ptr, i32 } %1416, 1
  store i32 %1418, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #10
  br label %1419

1419:                                             ; preds = %1415, %1411
  %1420 = load i32, ptr %7, align 4
  %1421 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %1422 = icmp eq i32 %1420, %1421
  br i1 %1422, label %1423, label %1431

1423:                                             ; preds = %1419
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #10
  %1424 = load ptr, ptr %6, align 8
  %1425 = call ptr @__cxa_begin_catch(ptr %1424) #10
  store ptr %1425, ptr %144, align 8
  store i8 1, ptr %141, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  br label %1426

1426:                                             ; preds = %1435, %1423
  %1427 = load i8, ptr %141, align 1, !tbaa !9, !range !11, !noundef !12
  %1428 = trunc i8 %1427 to i1
  br i1 %1428, label %1436, label %1429

1429:                                             ; preds = %1426
  %1430 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %140, i32 0, i32 0
  store ptr @.str.256, ptr %1430, align 8, !tbaa !13
  store i32 3, ptr %136, align 4
  br label %1437

1431:                                             ; preds = %1419
  %1432 = load ptr, ptr %6, align 8
  %1433 = call ptr @__cxa_begin_catch(ptr %1432) #10
  %1434 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %140, i32 0, i32 0
  store ptr @.str.255, ptr %1434, align 8, !tbaa !13
  store i32 3, ptr %136, align 4
  call void @__cxa_end_catch()
  br label %1437

1435:                                             ; preds = %1410, %1406
  br label %1426

1436:                                             ; preds = %1426
  store i32 0, ptr %136, align 4
  br label %1437

1437:                                             ; preds = %1436, %1431, %1429
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #10
  %1438 = load i32, ptr %136, align 4
  switch i32 %1438, label %5354 [
    i32 0, label %1439
    i32 3, label %1441
  ]

1439:                                             ; preds = %1437
  br label %1455

1440:                                             ; preds = %1402
  br label %1441

1441:                                             ; preds = %1440, %1437
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145)
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #10
  %1442 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %140, i32 0, i32 0
  %1443 = load ptr, ptr %1442, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef 1, ptr noundef @.str.4, i32 noundef 265, ptr noundef %1443)
          to label %1444 unwind label %1446

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

1445:                                             ; preds = %1444
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  br label %1455

1446:                                             ; preds = %1441
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %6, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %7, align 4
  br label %1454

1450:                                             ; preds = %1444
  %1451 = landingpad { ptr, i32 }
          cleanup
  %1452 = extractvalue { ptr, i32 } %1451, 0
  store ptr %1452, ptr %6, align 8
  %1453 = extractvalue { ptr, i32 } %1451, 1
  store i32 %1453, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #10
  br label %1454

1454:                                             ; preds = %1450, %1446
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  br label %5348

1455:                                             ; preds = %1445, %1439
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %147) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %147, ptr noundef @.str.218)
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #10
  %1456 = call noundef zeroext i1 @_ZNK4chen10ip_address6isIPv6Ev(ptr noundef nonnull align 4 dereferenceable(28) %147)
  %1457 = zext i1 %1456 to i8
  store i8 %1457, ptr %149, align 1, !tbaa !9
  call 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)
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #10
  %1458 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %148)
          to label %1459 unwind label %1461

1459:                                             ; preds = %1455
  br i1 %1458, label %1460, label %1465

1460:                                             ; preds = %1459
  br label %1490

1461:                                             ; preds = %1455
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %6, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %7, align 4
  br label %1495

1465:                                             ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1466 unwind label %1471

1466:                                             ; preds = %1465
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %152) #10
  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.257, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %1467 unwind label %1475

1467:                                             ; preds = %1466
  %1468 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %152) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %151, i32 noundef 1, ptr noundef @.str.4, i32 noundef 268, ptr noundef %1468)
          to label %1469 unwind label %1479

1469:                                             ; preds = %1467
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1470 unwind label %1483

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

1471:                                             ; preds = %1465
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %6, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %7, align 4
  br label %1489

1475:                                             ; preds = %1466
  %1476 = landingpad { ptr, i32 }
          cleanup
  %1477 = extractvalue { ptr, i32 } %1476, 0
  store ptr %1477, ptr %6, align 8
  %1478 = extractvalue { ptr, i32 } %1476, 1
  store i32 %1478, ptr %7, align 4
  br label %1488

1479:                                             ; preds = %1467
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %6, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %7, align 4
  br label %1487

1483:                                             ; preds = %1469
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %6, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #10
  br label %1487

1487:                                             ; preds = %1483, %1479
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #10
  br label %1488

1488:                                             ; preds = %1487, %1475
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #10
  br label %1489

1489:                                             ; preds = %1488, %1471
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #10
  br label %1495

1490:                                             ; preds = %1470, %1460
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %154) #10
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %154, ptr noundef nonnull align 4 dereferenceable(28) %147, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %153, ptr noundef @.str.258, ptr noundef @.str.259, ptr noundef nonnull align 1 dereferenceable(4) @.str.218, ptr noundef nonnull align 8 dereferenceable(32) %154)
          to label %1491 unwind label %1496

1491:                                             ; preds = %1490
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #10
  %1492 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
          to label %1493 unwind label %1500

1493:                                             ; preds = %1491
  br i1 %1492, label %1494, label %1504

1494:                                             ; preds = %1493
  br label %1524

1495:                                             ; preds = %1489, %1461
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #10
  br label %5347

1496:                                             ; preds = %1490
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %6, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #10
  br label %1531

1500:                                             ; preds = %1491
  %1501 = landingpad { ptr, i32 }
          cleanup
  %1502 = extractvalue { ptr, i32 } %1501, 0
  store ptr %1502, ptr %6, align 8
  %1503 = extractvalue { ptr, i32 } %1501, 1
  store i32 %1503, ptr %7, align 4
  br label %1530

1504:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1505 unwind label %1510

1505:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #10
  %1506 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
          to label %1507 unwind label %1514

1507:                                             ; preds = %1505
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef 1, ptr noundef @.str.4, i32 noundef 269, ptr noundef %1506)
          to label %1508 unwind label %1514

1508:                                             ; preds = %1507
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1509 unwind label %1518

1509:                                             ; preds = %1508
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #10
  br label %1524

1510:                                             ; preds = %1504
  %1511 = landingpad { ptr, i32 }
          cleanup
  %1512 = extractvalue { ptr, i32 } %1511, 0
  store ptr %1512, ptr %6, align 8
  %1513 = extractvalue { ptr, i32 } %1511, 1
  store i32 %1513, ptr %7, align 4
  br label %1523

1514:                                             ; preds = %1507, %1505
  %1515 = landingpad { ptr, i32 }
          cleanup
  %1516 = extractvalue { ptr, i32 } %1515, 0
  store ptr %1516, ptr %6, align 8
  %1517 = extractvalue { ptr, i32 } %1515, 1
  store i32 %1517, ptr %7, align 4
  br label %1522

1518:                                             ; preds = %1508
  %1519 = landingpad { ptr, i32 }
          cleanup
  %1520 = extractvalue { ptr, i32 } %1519, 0
  store ptr %1520, ptr %6, align 8
  %1521 = extractvalue { ptr, i32 } %1519, 1
  store i32 %1521, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #10
  br label %1522

1522:                                             ; preds = %1518, %1514
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #10
  br label %1523

1523:                                             ; preds = %1522, %1510
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #10
  br label %1530

1524:                                             ; preds = %1509, %1494
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %157) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #10
  store i32 16, ptr %158, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %160) #10
  call void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %160, ptr noundef nonnull align 4 dereferenceable(28) %147)
  %1525 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #10
  store i64 %1525, ptr %159, align 8, !tbaa !17
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %157, ptr noundef @.str.260, ptr noundef @.str.261, ptr noundef nonnull align 4 dereferenceable(4) %158, ptr noundef nonnull align 8 dereferenceable(8) %159)
          to label %1526 unwind label %1532

1526:                                             ; preds = %1524
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #10
  %1527 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
          to label %1528 unwind label %1536

1528:                                             ; preds = %1526
  br i1 %1527, label %1529, label %1540

1529:                                             ; preds = %1528
  br label %1560

1530:                                             ; preds = %1523, %1500
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #10
  br label %1531

1531:                                             ; preds = %1530, %1496
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #10
  br label %5347

1532:                                             ; preds = %1524
  %1533 = landingpad { ptr, i32 }
          cleanup
  %1534 = extractvalue { ptr, i32 } %1533, 0
  store ptr %1534, ptr %6, align 8
  %1535 = extractvalue { ptr, i32 } %1533, 1
  store i32 %1535, ptr %7, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #10
  br label %1567

1536:                                             ; preds = %1526
  %1537 = landingpad { ptr, i32 }
          cleanup
  %1538 = extractvalue { ptr, i32 } %1537, 0
  store ptr %1538, ptr %6, align 8
  %1539 = extractvalue { ptr, i32 } %1537, 1
  store i32 %1539, ptr %7, align 4
  br label %1566

1540:                                             ; preds = %1528
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1541 unwind label %1546

1541:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %1542 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
          to label %1543 unwind label %1550

1543:                                             ; preds = %1541
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %162, i32 noundef 1, ptr noundef @.str.4, i32 noundef 270, ptr noundef %1542)
          to label %1544 unwind label %1550

1544:                                             ; preds = %1543
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1545 unwind label %1554

1545:                                             ; preds = %1544
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  br label %1560

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

1550:                                             ; preds = %1543, %1541
  %1551 = landingpad { ptr, i32 }
          cleanup
  %1552 = extractvalue { ptr, i32 } %1551, 0
  store ptr %1552, ptr %6, align 8
  %1553 = extractvalue { ptr, i32 } %1551, 1
  store i32 %1553, ptr %7, align 4
  br label %1558

1554:                                             ; preds = %1544
  %1555 = landingpad { ptr, i32 }
          cleanup
  %1556 = extractvalue { ptr, i32 } %1555, 0
  store ptr %1556, ptr %6, align 8
  %1557 = extractvalue { ptr, i32 } %1555, 1
  store i32 %1557, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #10
  br label %1558

1558:                                             ; preds = %1554, %1550
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  br label %1559

1559:                                             ; preds = %1558, %1546
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  br label %1566

1560:                                             ; preds = %1545, %1529
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %157) #10
  %1561 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28) %147, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %164) #10
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %164, ptr noundef nonnull align 4 dereferenceable(28) %147, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %163, ptr noundef @.str.262, ptr noundef @.str.259, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %164)
          to label %1562 unwind label %1568

1562:                                             ; preds = %1560
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #10
  %1563 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %163)
          to label %1564 unwind label %1572

1564:                                             ; preds = %1562
  br i1 %1563, label %1565, label %1576

1565:                                             ; preds = %1564
  br label %1596

1566:                                             ; preds = %1559, %1536
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #10
  br label %1567

1567:                                             ; preds = %1566, %1532
  call void @llvm.lifetime.end.p0(i64 16, ptr %157) #10
  br label %5347

1568:                                             ; preds = %1560
  %1569 = landingpad { ptr, i32 }
          cleanup
  %1570 = extractvalue { ptr, i32 } %1569, 0
  store ptr %1570, ptr %6, align 8
  %1571 = extractvalue { ptr, i32 } %1569, 1
  store i32 %1571, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #10
  br label %1602

1572:                                             ; preds = %1562
  %1573 = landingpad { ptr, i32 }
          cleanup
  %1574 = extractvalue { ptr, i32 } %1573, 0
  store ptr %1574, ptr %6, align 8
  %1575 = extractvalue { ptr, i32 } %1573, 1
  store i32 %1575, ptr %7, align 4
  br label %1601

1576:                                             ; preds = %1564
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %1577 unwind label %1582

1577:                                             ; preds = %1576
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #10
  %1578 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %163)
          to label %1579 unwind label %1586

1579:                                             ; preds = %1577
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %166, i32 noundef 1, ptr noundef @.str.4, i32 noundef 273, ptr noundef %1578)
          to label %1580 unwind label %1586

1580:                                             ; preds = %1579
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %1581 unwind label %1590

1581:                                             ; preds = %1580
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  br label %1596

1582:                                             ; preds = %1576
  %1583 = landingpad { ptr, i32 }
          cleanup
  %1584 = extractvalue { ptr, i32 } %1583, 0
  store ptr %1584, ptr %6, align 8
  %1585 = extractvalue { ptr, i32 } %1583, 1
  store i32 %1585, ptr %7, align 4
  br label %1595

1586:                                             ; preds = %1579, %1577
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %6, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %7, align 4
  br label %1594

1590:                                             ; preds = %1580
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %6, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  br label %1594

1594:                                             ; preds = %1590, %1586
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  br label %1595

1595:                                             ; preds = %1594, %1582
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  br label %1601

1596:                                             ; preds = %1581, %1565
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %167) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #10
  store i32 128, ptr %168, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %169) #10
  %1597 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %147)
  store i8 %1597, ptr %169, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %167, ptr noundef @.str.263, ptr noundef @.str.264, ptr noundef nonnull align 4 dereferenceable(4) %168, ptr noundef nonnull align 1 dereferenceable(1) %169)
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #10
  %1598 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %167)
          to label %1599 unwind label %1603

1599:                                             ; preds = %1596
  br i1 %1598, label %1600, label %1607

1600:                                             ; preds = %1599
  br label %1627

1601:                                             ; preds = %1595, %1572
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #10
  br label %1602

1602:                                             ; preds = %1601, %1568
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #10
  br label %5347

1603:                                             ; preds = %1596
  %1604 = landingpad { ptr, i32 }
          cleanup
  %1605 = extractvalue { ptr, i32 } %1604, 0
  store ptr %1605, ptr %6, align 8
  %1606 = extractvalue { ptr, i32 } %1604, 1
  store i32 %1606, ptr %7, align 4
  br label %1634

1607:                                             ; preds = %1599
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %1608 unwind label %1613

1608:                                             ; preds = %1607
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #10
  %1609 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %167)
          to label %1610 unwind label %1617

1610:                                             ; preds = %1608
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %171, i32 noundef 1, ptr noundef @.str.4, i32 noundef 274, ptr noundef %1609)
          to label %1611 unwind label %1617

1611:                                             ; preds = %1610
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %1612 unwind label %1621

1612:                                             ; preds = %1611
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #10
  br label %1627

1613:                                             ; preds = %1607
  %1614 = landingpad { ptr, i32 }
          cleanup
  %1615 = extractvalue { ptr, i32 } %1614, 0
  store ptr %1615, ptr %6, align 8
  %1616 = extractvalue { ptr, i32 } %1614, 1
  store i32 %1616, ptr %7, align 4
  br label %1626

1617:                                             ; preds = %1610, %1608
  %1618 = landingpad { ptr, i32 }
          cleanup
  %1619 = extractvalue { ptr, i32 } %1618, 0
  store ptr %1619, ptr %6, align 8
  %1620 = extractvalue { ptr, i32 } %1618, 1
  store i32 %1620, ptr %7, align 4
  br label %1625

1621:                                             ; preds = %1611
  %1622 = landingpad { ptr, i32 }
          cleanup
  %1623 = extractvalue { ptr, i32 } %1622, 0
  store ptr %1623, ptr %6, align 8
  %1624 = extractvalue { ptr, i32 } %1622, 1
  store i32 %1624, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #10
  br label %1625

1625:                                             ; preds = %1621, %1617
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #10
  br label %1626

1626:                                             ; preds = %1625, %1613
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #10
  br label %1634

1627:                                             ; preds = %1612, %1600
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %167) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %167) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %172) #10
  %1628 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  call void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24) %172, ptr noundef %1628)
  %1629 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %147, ptr noundef nonnull align 4 dereferenceable(24) %172)
  call void @llvm.lifetime.end.p0(i64 24, ptr %172) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %173) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %174) #10
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %174, ptr noundef nonnull align 4 dereferenceable(28) %147, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %173, ptr noundef @.str.262, ptr noundef @.str.259, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %174)
          to label %1630 unwind label %1635

1630:                                             ; preds = %1627
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #10
  %1631 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %1632 unwind label %1639

1632:                                             ; preds = %1630
  br i1 %1631, label %1633, label %1643

1633:                                             ; preds = %1632
  br label %1663

1634:                                             ; preds = %1626, %1603
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %167) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %167) #10
  br label %5347

1635:                                             ; preds = %1627
  %1636 = landingpad { ptr, i32 }
          cleanup
  %1637 = extractvalue { ptr, i32 } %1636, 0
  store ptr %1637, ptr %6, align 8
  %1638 = extractvalue { ptr, i32 } %1636, 1
  store i32 %1638, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #10
  br label %1669

1639:                                             ; preds = %1630
  %1640 = landingpad { ptr, i32 }
          cleanup
  %1641 = extractvalue { ptr, i32 } %1640, 0
  store ptr %1641, ptr %6, align 8
  %1642 = extractvalue { ptr, i32 } %1640, 1
  store i32 %1642, ptr %7, align 4
  br label %1668

1643:                                             ; preds = %1632
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1644 unwind label %1649

1644:                                             ; preds = %1643
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #10
  %1645 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %1646 unwind label %1653

1646:                                             ; preds = %1644
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef 1, ptr noundef @.str.4, i32 noundef 277, ptr noundef %1645)
          to label %1647 unwind label %1653

1647:                                             ; preds = %1646
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1648 unwind label %1657

1648:                                             ; preds = %1647
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #10
  br label %1663

1649:                                             ; preds = %1643
  %1650 = landingpad { ptr, i32 }
          cleanup
  %1651 = extractvalue { ptr, i32 } %1650, 0
  store ptr %1651, ptr %6, align 8
  %1652 = extractvalue { ptr, i32 } %1650, 1
  store i32 %1652, ptr %7, align 4
  br label %1662

1653:                                             ; preds = %1646, %1644
  %1654 = landingpad { ptr, i32 }
          cleanup
  %1655 = extractvalue { ptr, i32 } %1654, 0
  store ptr %1655, ptr %6, align 8
  %1656 = extractvalue { ptr, i32 } %1654, 1
  store i32 %1656, ptr %7, align 4
  br label %1661

1657:                                             ; preds = %1647
  %1658 = landingpad { ptr, i32 }
          cleanup
  %1659 = extractvalue { ptr, i32 } %1658, 0
  store ptr %1659, ptr %6, align 8
  %1660 = extractvalue { ptr, i32 } %1658, 1
  store i32 %1660, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #10
  br label %1661

1661:                                             ; preds = %1657, %1653
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #10
  br label %1662

1662:                                             ; preds = %1661, %1649
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #10
  br label %1668

1663:                                             ; preds = %1648, %1633
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #10
  store i32 128, ptr %178, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #10
  %1664 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %147)
  store i8 %1664, ptr %179, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %177, ptr noundef @.str.263, ptr noundef @.str.264, ptr noundef nonnull align 4 dereferenceable(4) %178, ptr noundef nonnull align 1 dereferenceable(1) %179)
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #10
  %1665 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1666 unwind label %1670

1666:                                             ; preds = %1663
  br i1 %1665, label %1667, label %1674

1667:                                             ; preds = %1666
  br label %1694

1668:                                             ; preds = %1662, %1639
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #10
  br label %1669

1669:                                             ; preds = %1668, %1635
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #10
  br label %5347

1670:                                             ; preds = %1663
  %1671 = landingpad { ptr, i32 }
          cleanup
  %1672 = extractvalue { ptr, i32 } %1671, 0
  store ptr %1672, ptr %6, align 8
  %1673 = extractvalue { ptr, i32 } %1671, 1
  store i32 %1673, ptr %7, align 4
  br label %1698

1674:                                             ; preds = %1666
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %180)
          to label %1675 unwind label %1680

1675:                                             ; preds = %1674
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #10
  %1676 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1677 unwind label %1684

1677:                                             ; preds = %1675
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %181, i32 noundef 1, ptr noundef @.str.4, i32 noundef 278, ptr noundef %1676)
          to label %1678 unwind label %1684

1678:                                             ; preds = %1677
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %180)
          to label %1679 unwind label %1688

1679:                                             ; preds = %1678
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %1694

1680:                                             ; preds = %1674
  %1681 = landingpad { ptr, i32 }
          cleanup
  %1682 = extractvalue { ptr, i32 } %1681, 0
  store ptr %1682, ptr %6, align 8
  %1683 = extractvalue { ptr, i32 } %1681, 1
  store i32 %1683, ptr %7, align 4
  br label %1693

1684:                                             ; preds = %1677, %1675
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %6, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %7, align 4
  br label %1692

1688:                                             ; preds = %1678
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %6, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #10
  br label %1692

1692:                                             ; preds = %1688, %1684
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #10
  br label %1693

1693:                                             ; preds = %1692, %1680
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %1698

1694:                                             ; preds = %1679, %1667
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %182) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %183) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %183, ptr noundef @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr %184) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %184, ptr noundef @.str.266)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %182, ptr noundef @.str.236, ptr noundef @.str.265, ptr noundef nonnull align 4 dereferenceable(28) %183, ptr noundef nonnull align 4 dereferenceable(28) %184)
  call void @llvm.lifetime.end.p0(i64 28, ptr %184) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %183) #10
  %1695 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %182)
          to label %1696 unwind label %1699

1696:                                             ; preds = %1694
  br i1 %1695, label %1697, label %1703

1697:                                             ; preds = %1696
  br label %1723

1698:                                             ; preds = %1693, %1670
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #10
  br label %5347

1699:                                             ; preds = %1694
  %1700 = landingpad { ptr, i32 }
          cleanup
  %1701 = extractvalue { ptr, i32 } %1700, 0
  store ptr %1701, ptr %6, align 8
  %1702 = extractvalue { ptr, i32 } %1700, 1
  store i32 %1702, ptr %7, align 4
  br label %1728

1703:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %1704 unwind label %1709

1704:                                             ; preds = %1703
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #10
  %1705 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %182)
          to label %1706 unwind label %1713

1706:                                             ; preds = %1704
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %186, i32 noundef 1, ptr noundef @.str.4, i32 noundef 281, ptr noundef %1705)
          to label %1707 unwind label %1713

1707:                                             ; preds = %1706
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %1708 unwind label %1717

1708:                                             ; preds = %1707
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #10
  br label %1723

1709:                                             ; preds = %1703
  %1710 = landingpad { ptr, i32 }
          cleanup
  %1711 = extractvalue { ptr, i32 } %1710, 0
  store ptr %1711, ptr %6, align 8
  %1712 = extractvalue { ptr, i32 } %1710, 1
  store i32 %1712, ptr %7, align 4
  br label %1722

1713:                                             ; preds = %1706, %1704
  %1714 = landingpad { ptr, i32 }
          cleanup
  %1715 = extractvalue { ptr, i32 } %1714, 0
  store ptr %1715, ptr %6, align 8
  %1716 = extractvalue { ptr, i32 } %1714, 1
  store i32 %1716, ptr %7, align 4
  br label %1721

1717:                                             ; preds = %1707
  %1718 = landingpad { ptr, i32 }
          cleanup
  %1719 = extractvalue { ptr, i32 } %1718, 0
  store ptr %1719, ptr %6, align 8
  %1720 = extractvalue { ptr, i32 } %1718, 1
  store i32 %1720, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #10
  br label %1721

1721:                                             ; preds = %1717, %1713
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #10
  br label %1722

1722:                                             ; preds = %1721, %1709
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #10
  br label %1728

1723:                                             ; preds = %1708, %1697
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %182) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %182) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %187) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %188) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %189) #10
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %189, i8 noundef zeroext 10)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %188, ptr noundef nonnull align 4 dereferenceable(28) %189, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %187, ptr noundef @.str.267, ptr noundef @.str.268, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %188)
          to label %1724 unwind label %1729

1724:                                             ; preds = %1723
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %189) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #10
  %1725 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %187)
          to label %1726 unwind label %1733

1726:                                             ; preds = %1724
  br i1 %1725, label %1727, label %1737

1727:                                             ; preds = %1726
  br label %1757

1728:                                             ; preds = %1722, %1699
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %182) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %182) #10
  br label %5347

1729:                                             ; preds = %1723
  %1730 = landingpad { ptr, i32 }
          cleanup
  %1731 = extractvalue { ptr, i32 } %1730, 0
  store ptr %1731, ptr %6, align 8
  %1732 = extractvalue { ptr, i32 } %1730, 1
  store i32 %1732, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %189) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #10
  br label %1763

1733:                                             ; preds = %1724
  %1734 = landingpad { ptr, i32 }
          cleanup
  %1735 = extractvalue { ptr, i32 } %1734, 0
  store ptr %1735, ptr %6, align 8
  %1736 = extractvalue { ptr, i32 } %1734, 1
  store i32 %1736, ptr %7, align 4
  br label %1762

1737:                                             ; preds = %1726
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %1738 unwind label %1743

1738:                                             ; preds = %1737
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #10
  %1739 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %187)
          to label %1740 unwind label %1747

1740:                                             ; preds = %1738
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %191, i32 noundef 1, ptr noundef @.str.4, i32 noundef 284, ptr noundef %1739)
          to label %1741 unwind label %1747

1741:                                             ; preds = %1740
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %1742 unwind label %1751

1742:                                             ; preds = %1741
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #10
  br label %1757

1743:                                             ; preds = %1737
  %1744 = landingpad { ptr, i32 }
          cleanup
  %1745 = extractvalue { ptr, i32 } %1744, 0
  store ptr %1745, ptr %6, align 8
  %1746 = extractvalue { ptr, i32 } %1744, 1
  store i32 %1746, ptr %7, align 4
  br label %1756

1747:                                             ; preds = %1740, %1738
  %1748 = landingpad { ptr, i32 }
          cleanup
  %1749 = extractvalue { ptr, i32 } %1748, 0
  store ptr %1749, ptr %6, align 8
  %1750 = extractvalue { ptr, i32 } %1748, 1
  store i32 %1750, ptr %7, align 4
  br label %1755

1751:                                             ; preds = %1741
  %1752 = landingpad { ptr, i32 }
          cleanup
  %1753 = extractvalue { ptr, i32 } %1752, 0
  store ptr %1753, ptr %6, align 8
  %1754 = extractvalue { ptr, i32 } %1752, 1
  store i32 %1754, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #10
  br label %1755

1755:                                             ; preds = %1751, %1747
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #10
  br label %1756

1756:                                             ; preds = %1755, %1743
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #10
  br label %1762

1757:                                             ; preds = %1742, %1727
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %187) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %192) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %193) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %194) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %194, ptr noundef @.str.272)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %193, ptr noundef nonnull align 4 dereferenceable(28) %194, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %192, ptr noundef @.str.269, ptr noundef @.str.270, ptr noundef nonnull align 1 dereferenceable(21) @.str.271, ptr noundef nonnull align 8 dereferenceable(32) %193)
          to label %1758 unwind label %1764

1758:                                             ; preds = %1757
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %193) #10
  %1759 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %192)
          to label %1760 unwind label %1768

1760:                                             ; preds = %1758
  br i1 %1759, label %1761, label %1772

1761:                                             ; preds = %1760
  br label %1792

1762:                                             ; preds = %1756, %1733
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #10
  br label %1763

1763:                                             ; preds = %1762, %1729
  call void @llvm.lifetime.end.p0(i64 16, ptr %187) #10
  br label %5347

1764:                                             ; preds = %1757
  %1765 = landingpad { ptr, i32 }
          cleanup
  %1766 = extractvalue { ptr, i32 } %1765, 0
  store ptr %1766, ptr %6, align 8
  %1767 = extractvalue { ptr, i32 } %1765, 1
  store i32 %1767, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %193) #10
  br label %1798

1768:                                             ; preds = %1758
  %1769 = landingpad { ptr, i32 }
          cleanup
  %1770 = extractvalue { ptr, i32 } %1769, 0
  store ptr %1770, ptr %6, align 8
  %1771 = extractvalue { ptr, i32 } %1769, 1
  store i32 %1771, ptr %7, align 4
  br label %1797

1772:                                             ; preds = %1760
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195)
          to label %1773 unwind label %1778

1773:                                             ; preds = %1772
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #10
  %1774 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %192)
          to label %1775 unwind label %1782

1775:                                             ; preds = %1773
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %196, i32 noundef 1, ptr noundef @.str.4, i32 noundef 285, ptr noundef %1774)
          to label %1776 unwind label %1782

1776:                                             ; preds = %1775
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) %195)
          to label %1777 unwind label %1786

1777:                                             ; preds = %1776
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %196) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  br label %1792

1778:                                             ; preds = %1772
  %1779 = landingpad { ptr, i32 }
          cleanup
  %1780 = extractvalue { ptr, i32 } %1779, 0
  store ptr %1780, ptr %6, align 8
  %1781 = extractvalue { ptr, i32 } %1779, 1
  store i32 %1781, ptr %7, align 4
  br label %1791

1782:                                             ; preds = %1775, %1773
  %1783 = landingpad { ptr, i32 }
          cleanup
  %1784 = extractvalue { ptr, i32 } %1783, 0
  store ptr %1784, ptr %6, align 8
  %1785 = extractvalue { ptr, i32 } %1783, 1
  store i32 %1785, ptr %7, align 4
  br label %1790

1786:                                             ; preds = %1776
  %1787 = landingpad { ptr, i32 }
          cleanup
  %1788 = extractvalue { ptr, i32 } %1787, 0
  store ptr %1788, ptr %6, align 8
  %1789 = extractvalue { ptr, i32 } %1787, 1
  store i32 %1789, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %196) #10
  br label %1790

1790:                                             ; preds = %1786, %1782
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #10
  br label %1791

1791:                                             ; preds = %1790, %1778
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  br label %1797

1792:                                             ; preds = %1777, %1761
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %192) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %197) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %198) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %199) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %199, ptr noundef @.str.276)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %198, ptr noundef nonnull align 4 dereferenceable(28) %199, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %197, ptr noundef @.str.273, ptr noundef @.str.274, ptr noundef nonnull align 1 dereferenceable(21) @.str.275, ptr noundef nonnull align 8 dereferenceable(32) %198)
          to label %1793 unwind label %1799

1793:                                             ; preds = %1792
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %199) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #10
  %1794 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %197)
          to label %1795 unwind label %1803

1795:                                             ; preds = %1793
  br i1 %1794, label %1796, label %1807

1796:                                             ; preds = %1795
  br label %1827

1797:                                             ; preds = %1791, %1768
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %192) #10
  br label %1798

1798:                                             ; preds = %1797, %1764
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #10
  br label %5347

1799:                                             ; preds = %1792
  %1800 = landingpad { ptr, i32 }
          cleanup
  %1801 = extractvalue { ptr, i32 } %1800, 0
  store ptr %1801, ptr %6, align 8
  %1802 = extractvalue { ptr, i32 } %1800, 1
  store i32 %1802, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %199) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %198) #10
  br label %1833

1803:                                             ; preds = %1793
  %1804 = landingpad { ptr, i32 }
          cleanup
  %1805 = extractvalue { ptr, i32 } %1804, 0
  store ptr %1805, ptr %6, align 8
  %1806 = extractvalue { ptr, i32 } %1804, 1
  store i32 %1806, ptr %7, align 4
  br label %1832

1807:                                             ; preds = %1795
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %1808 unwind label %1813

1808:                                             ; preds = %1807
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #10
  %1809 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %197)
          to label %1810 unwind label %1817

1810:                                             ; preds = %1808
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %201, i32 noundef 1, ptr noundef @.str.4, i32 noundef 286, ptr noundef %1809)
          to label %1811 unwind label %1817

1811:                                             ; preds = %1810
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %1812 unwind label %1821

1812:                                             ; preds = %1811
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #10
  br label %1827

1813:                                             ; preds = %1807
  %1814 = landingpad { ptr, i32 }
          cleanup
  %1815 = extractvalue { ptr, i32 } %1814, 0
  store ptr %1815, ptr %6, align 8
  %1816 = extractvalue { ptr, i32 } %1814, 1
  store i32 %1816, ptr %7, align 4
  br label %1826

1817:                                             ; preds = %1810, %1808
  %1818 = landingpad { ptr, i32 }
          cleanup
  %1819 = extractvalue { ptr, i32 } %1818, 0
  store ptr %1819, ptr %6, align 8
  %1820 = extractvalue { ptr, i32 } %1818, 1
  store i32 %1820, ptr %7, align 4
  br label %1825

1821:                                             ; preds = %1811
  %1822 = landingpad { ptr, i32 }
          cleanup
  %1823 = extractvalue { ptr, i32 } %1822, 0
  store ptr %1823, ptr %6, align 8
  %1824 = extractvalue { ptr, i32 } %1822, 1
  store i32 %1824, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #10
  br label %1825

1825:                                             ; preds = %1821, %1817
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #10
  br label %1826

1826:                                             ; preds = %1825, %1813
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #10
  br label %1832

1827:                                             ; preds = %1812, %1796
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %202) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %203) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %204) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %204, ptr noundef @.str.229)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %203, ptr noundef nonnull align 4 dereferenceable(28) %204, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %202, ptr noundef @.str.262, ptr noundef @.str.277, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %203)
          to label %1828 unwind label %1834

1828:                                             ; preds = %1827
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %204) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #10
  %1829 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %202)
          to label %1830 unwind label %1838

1830:                                             ; preds = %1828
  br i1 %1829, label %1831, label %1842

1831:                                             ; preds = %1830
  br label %1862

1832:                                             ; preds = %1826, %1803
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #10
  br label %1833

1833:                                             ; preds = %1832, %1799
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #10
  br label %5347

1834:                                             ; preds = %1827
  %1835 = landingpad { ptr, i32 }
          cleanup
  %1836 = extractvalue { ptr, i32 } %1835, 0
  store ptr %1836, ptr %6, align 8
  %1837 = extractvalue { ptr, i32 } %1835, 1
  store i32 %1837, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %204) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #10
  br label %1869

1838:                                             ; preds = %1828
  %1839 = landingpad { ptr, i32 }
          cleanup
  %1840 = extractvalue { ptr, i32 } %1839, 0
  store ptr %1840, ptr %6, align 8
  %1841 = extractvalue { ptr, i32 } %1839, 1
  store i32 %1841, ptr %7, align 4
  br label %1868

1842:                                             ; preds = %1830
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %1843 unwind label %1848

1843:                                             ; preds = %1842
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #10
  %1844 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %202)
          to label %1845 unwind label %1852

1845:                                             ; preds = %1843
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %206, i32 noundef 1, ptr noundef @.str.4, i32 noundef 287, ptr noundef %1844)
          to label %1846 unwind label %1852

1846:                                             ; preds = %1845
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %1847 unwind label %1856

1847:                                             ; preds = %1846
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %206) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #10
  br label %1862

1848:                                             ; preds = %1842
  %1849 = landingpad { ptr, i32 }
          cleanup
  %1850 = extractvalue { ptr, i32 } %1849, 0
  store ptr %1850, ptr %6, align 8
  %1851 = extractvalue { ptr, i32 } %1849, 1
  store i32 %1851, ptr %7, align 4
  br label %1861

1852:                                             ; preds = %1845, %1843
  %1853 = landingpad { ptr, i32 }
          cleanup
  %1854 = extractvalue { ptr, i32 } %1853, 0
  store ptr %1854, ptr %6, align 8
  %1855 = extractvalue { ptr, i32 } %1853, 1
  store i32 %1855, ptr %7, align 4
  br label %1860

1856:                                             ; preds = %1846
  %1857 = landingpad { ptr, i32 }
          cleanup
  %1858 = extractvalue { ptr, i32 } %1857, 0
  store ptr %1858, ptr %6, align 8
  %1859 = extractvalue { ptr, i32 } %1857, 1
  store i32 %1859, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %206) #10
  br label %1860

1860:                                             ; preds = %1856, %1852
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #10
  br label %1861

1861:                                             ; preds = %1860, %1848
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #10
  br label %1868

1862:                                             ; preds = %1847, %1831
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %202) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %202) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %207) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %208) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %209) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %209, ptr noundef @.str.229)
  %1863 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %209)
  call void @_ZNK4chen11ip_version68expandedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %208, ptr noundef nonnull align 4 dereferenceable(24) %1863)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA40_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %207, ptr noundef @.str.278, ptr noundef @.str.279, ptr noundef nonnull align 1 dereferenceable(40) @.str.280, ptr noundef nonnull align 8 dereferenceable(32) %208)
          to label %1864 unwind label %1870

1864:                                             ; preds = %1862
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %209) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #10
  %1865 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %207)
          to label %1866 unwind label %1874

1866:                                             ; preds = %1864
  br i1 %1865, label %1867, label %1878

1867:                                             ; preds = %1866
  br label %1898

1868:                                             ; preds = %1861, %1838
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %202) #10
  br label %1869

1869:                                             ; preds = %1868, %1834
  call void @llvm.lifetime.end.p0(i64 16, ptr %202) #10
  br label %5347

1870:                                             ; preds = %1862
  %1871 = landingpad { ptr, i32 }
          cleanup
  %1872 = extractvalue { ptr, i32 } %1871, 0
  store ptr %1872, ptr %6, align 8
  %1873 = extractvalue { ptr, i32 } %1871, 1
  store i32 %1873, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %209) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #10
  br label %1905

1874:                                             ; preds = %1864
  %1875 = landingpad { ptr, i32 }
          cleanup
  %1876 = extractvalue { ptr, i32 } %1875, 0
  store ptr %1876, ptr %6, align 8
  %1877 = extractvalue { ptr, i32 } %1875, 1
  store i32 %1877, ptr %7, align 4
  br label %1904

1878:                                             ; preds = %1866
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %1879 unwind label %1884

1879:                                             ; preds = %1878
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #10
  %1880 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %207)
          to label %1881 unwind label %1888

1881:                                             ; preds = %1879
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %211, i32 noundef 1, ptr noundef @.str.4, i32 noundef 288, ptr noundef %1880)
          to label %1882 unwind label %1888

1882:                                             ; preds = %1881
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %1883 unwind label %1892

1883:                                             ; preds = %1882
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  br label %1898

1884:                                             ; preds = %1878
  %1885 = landingpad { ptr, i32 }
          cleanup
  %1886 = extractvalue { ptr, i32 } %1885, 0
  store ptr %1886, ptr %6, align 8
  %1887 = extractvalue { ptr, i32 } %1885, 1
  store i32 %1887, ptr %7, align 4
  br label %1897

1888:                                             ; preds = %1881, %1879
  %1889 = landingpad { ptr, i32 }
          cleanup
  %1890 = extractvalue { ptr, i32 } %1889, 0
  store ptr %1890, ptr %6, align 8
  %1891 = extractvalue { ptr, i32 } %1889, 1
  store i32 %1891, ptr %7, align 4
  br label %1896

1892:                                             ; preds = %1882
  %1893 = landingpad { ptr, i32 }
          cleanup
  %1894 = extractvalue { ptr, i32 } %1893, 0
  store ptr %1894, ptr %6, align 8
  %1895 = extractvalue { ptr, i32 } %1893, 1
  store i32 %1895, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #10
  br label %1896

1896:                                             ; preds = %1892, %1888
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #10
  br label %1897

1897:                                             ; preds = %1896, %1884
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  br label %1904

1898:                                             ; preds = %1883, %1867
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %207) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %212) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %213) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %214) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %214, ptr noundef @.str.229)
  %1899 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %214)
  call void @_ZNK4chen11ip_version610suppressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %213, ptr noundef nonnull align 4 dereferenceable(24) %1899)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA30_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %212, ptr noundef @.str.281, ptr noundef @.str.282, ptr noundef nonnull align 1 dereferenceable(30) @.str.227, ptr noundef nonnull align 8 dereferenceable(32) %213)
          to label %1900 unwind label %1906

1900:                                             ; preds = %1898
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %214) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #10
  %1901 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %212)
          to label %1902 unwind label %1910

1902:                                             ; preds = %1900
  br i1 %1901, label %1903, label %1914

1903:                                             ; preds = %1902
  br label %1934

1904:                                             ; preds = %1897, %1874
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #10
  br label %1905

1905:                                             ; preds = %1904, %1870
  call void @llvm.lifetime.end.p0(i64 16, ptr %207) #10
  br label %5347

1906:                                             ; preds = %1898
  %1907 = landingpad { ptr, i32 }
          cleanup
  %1908 = extractvalue { ptr, i32 } %1907, 0
  store ptr %1908, ptr %6, align 8
  %1909 = extractvalue { ptr, i32 } %1907, 1
  store i32 %1909, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %214) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #10
  br label %1941

1910:                                             ; preds = %1900
  %1911 = landingpad { ptr, i32 }
          cleanup
  %1912 = extractvalue { ptr, i32 } %1911, 0
  store ptr %1912, ptr %6, align 8
  %1913 = extractvalue { ptr, i32 } %1911, 1
  store i32 %1913, ptr %7, align 4
  br label %1940

1914:                                             ; preds = %1902
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %1915 unwind label %1920

1915:                                             ; preds = %1914
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #10
  %1916 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %212)
          to label %1917 unwind label %1924

1917:                                             ; preds = %1915
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %216, i32 noundef 1, ptr noundef @.str.4, i32 noundef 289, ptr noundef %1916)
          to label %1918 unwind label %1924

1918:                                             ; preds = %1917
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %1919 unwind label %1928

1919:                                             ; preds = %1918
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #10
  br label %1934

1920:                                             ; preds = %1914
  %1921 = landingpad { ptr, i32 }
          cleanup
  %1922 = extractvalue { ptr, i32 } %1921, 0
  store ptr %1922, ptr %6, align 8
  %1923 = extractvalue { ptr, i32 } %1921, 1
  store i32 %1923, ptr %7, align 4
  br label %1933

1924:                                             ; preds = %1917, %1915
  %1925 = landingpad { ptr, i32 }
          cleanup
  %1926 = extractvalue { ptr, i32 } %1925, 0
  store ptr %1926, ptr %6, align 8
  %1927 = extractvalue { ptr, i32 } %1925, 1
  store i32 %1927, ptr %7, align 4
  br label %1932

1928:                                             ; preds = %1918
  %1929 = landingpad { ptr, i32 }
          cleanup
  %1930 = extractvalue { ptr, i32 } %1929, 0
  store ptr %1930, ptr %6, align 8
  %1931 = extractvalue { ptr, i32 } %1929, 1
  store i32 %1931, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #10
  br label %1932

1932:                                             ; preds = %1928, %1924
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #10
  br label %1933

1933:                                             ; preds = %1932, %1920
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #10
  br label %1940

1934:                                             ; preds = %1919, %1903
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %212) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %217) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %218) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %219) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %219, ptr noundef @.str.229)
  %1935 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %219)
  call void @_ZNK4chen11ip_version610compressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %218, ptr noundef nonnull align 4 dereferenceable(24) %1935)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %217, ptr noundef @.str.262, ptr noundef @.str.283, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %218)
          to label %1936 unwind label %1942

1936:                                             ; preds = %1934
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %219) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #10
  %1937 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %217)
          to label %1938 unwind label %1946

1938:                                             ; preds = %1936
  br i1 %1937, label %1939, label %1950

1939:                                             ; preds = %1938
  br label %1970

1940:                                             ; preds = %1933, %1910
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %212) #10
  br label %1941

1941:                                             ; preds = %1940, %1906
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #10
  br label %5347

1942:                                             ; preds = %1934
  %1943 = landingpad { ptr, i32 }
          cleanup
  %1944 = extractvalue { ptr, i32 } %1943, 0
  store ptr %1944, ptr %6, align 8
  %1945 = extractvalue { ptr, i32 } %1943, 1
  store i32 %1945, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %219) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %218) #10
  br label %1977

1946:                                             ; preds = %1936
  %1947 = landingpad { ptr, i32 }
          cleanup
  %1948 = extractvalue { ptr, i32 } %1947, 0
  store ptr %1948, ptr %6, align 8
  %1949 = extractvalue { ptr, i32 } %1947, 1
  store i32 %1949, ptr %7, align 4
  br label %1976

1950:                                             ; preds = %1938
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %1951 unwind label %1956

1951:                                             ; preds = %1950
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #10
  %1952 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %217)
          to label %1953 unwind label %1960

1953:                                             ; preds = %1951
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %221, i32 noundef 1, ptr noundef @.str.4, i32 noundef 290, ptr noundef %1952)
          to label %1954 unwind label %1960

1954:                                             ; preds = %1953
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %1955 unwind label %1964

1955:                                             ; preds = %1954
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #10
  br label %1970

1956:                                             ; preds = %1950
  %1957 = landingpad { ptr, i32 }
          cleanup
  %1958 = extractvalue { ptr, i32 } %1957, 0
  store ptr %1958, ptr %6, align 8
  %1959 = extractvalue { ptr, i32 } %1957, 1
  store i32 %1959, ptr %7, align 4
  br label %1969

1960:                                             ; preds = %1953, %1951
  %1961 = landingpad { ptr, i32 }
          cleanup
  %1962 = extractvalue { ptr, i32 } %1961, 0
  store ptr %1962, ptr %6, align 8
  %1963 = extractvalue { ptr, i32 } %1961, 1
  store i32 %1963, ptr %7, align 4
  br label %1968

1964:                                             ; preds = %1954
  %1965 = landingpad { ptr, i32 }
          cleanup
  %1966 = extractvalue { ptr, i32 } %1965, 0
  store ptr %1966, ptr %6, align 8
  %1967 = extractvalue { ptr, i32 } %1965, 1
  store i32 %1967, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #10
  br label %1968

1968:                                             ; preds = %1964, %1960
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #10
  br label %1969

1969:                                             ; preds = %1968, %1956
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #10
  br label %1976

1970:                                             ; preds = %1955, %1939
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %217) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %217) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %223) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %224) #10
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %224, ptr noundef @.str.287)
  %1971 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %224)
  call void @_ZNK4chen11ip_version65mixedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %223, ptr noundef nonnull align 4 dereferenceable(24) %1971)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA19_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %222, ptr noundef @.str.284, ptr noundef @.str.285, ptr noundef nonnull align 1 dereferenceable(19) @.str.286, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %1972 unwind label %1978

1972:                                             ; preds = %1970
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %224) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #10
  %1973 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %222)
          to label %1974 unwind label %1982

1974:                                             ; preds = %1972
  br i1 %1973, label %1975, label %1986

1975:                                             ; preds = %1974
  br label %2006

1976:                                             ; preds = %1969, %1946
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %217) #10
  br label %1977

1977:                                             ; preds = %1976, %1942
  call void @llvm.lifetime.end.p0(i64 16, ptr %217) #10
  br label %5347

1978:                                             ; preds = %1970
  %1979 = landingpad { ptr, i32 }
          cleanup
  %1980 = extractvalue { ptr, i32 } %1979, 0
  store ptr %1980, ptr %6, align 8
  %1981 = extractvalue { ptr, i32 } %1979, 1
  store i32 %1981, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %224) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %223) #10
  br label %2017

1982:                                             ; preds = %1972
  %1983 = landingpad { ptr, i32 }
          cleanup
  %1984 = extractvalue { ptr, i32 } %1983, 0
  store ptr %1984, ptr %6, align 8
  %1985 = extractvalue { ptr, i32 } %1983, 1
  store i32 %1985, ptr %7, align 4
  br label %2016

1986:                                             ; preds = %1974
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %1987 unwind label %1992

1987:                                             ; preds = %1986
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #10
  %1988 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %222)
          to label %1989 unwind label %1996

1989:                                             ; preds = %1987
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %226, i32 noundef 1, ptr noundef @.str.4, i32 noundef 291, ptr noundef %1988)
          to label %1990 unwind label %1996

1990:                                             ; preds = %1989
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %1991 unwind label %2000

1991:                                             ; preds = %1990
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  br label %2006

1992:                                             ; preds = %1986
  %1993 = landingpad { ptr, i32 }
          cleanup
  %1994 = extractvalue { ptr, i32 } %1993, 0
  store ptr %1994, ptr %6, align 8
  %1995 = extractvalue { ptr, i32 } %1993, 1
  store i32 %1995, ptr %7, align 4
  br label %2005

1996:                                             ; preds = %1989, %1987
  %1997 = landingpad { ptr, i32 }
          cleanup
  %1998 = extractvalue { ptr, i32 } %1997, 0
  store ptr %1998, ptr %6, align 8
  %1999 = extractvalue { ptr, i32 } %1997, 1
  store i32 %1999, ptr %7, align 4
  br label %2004

2000:                                             ; preds = %1990
  %2001 = landingpad { ptr, i32 }
          cleanup
  %2002 = extractvalue { ptr, i32 } %2001, 0
  store ptr %2002, ptr %6, align 8
  %2003 = extractvalue { ptr, i32 } %2001, 1
  store i32 %2003, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #10
  br label %2004

2004:                                             ; preds = %2000, %1996
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #10
  br label %2005

2005:                                             ; preds = %2004, %1992
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  br label %2016

2006:                                             ; preds = %1991, %1975
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %227) #10
  call void @_ZN4chen12inet_adapter5scopeB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %227, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr %228) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %229) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %229, ptr noundef @.str.290, ptr noundef nonnull align 8 dereferenceable(32) %227)
          to label %2007 unwind label %2018

2007:                                             ; preds = %2006
  call void @llvm.lifetime.start.p0(i64 32, ptr %230) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %231) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %231, ptr noundef @.str.237)
          to label %2008 unwind label %2022

2008:                                             ; preds = %2007
  %2009 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %231)
          to label %2010 unwind label %2022

2010:                                             ; preds = %2008
  invoke void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %230, ptr noundef nonnull align 4 dereferenceable(24) %2009, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %2011 unwind label %2022

2011:                                             ; preds = %2010
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %228, ptr noundef @.str.288, ptr noundef @.str.289, ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef nonnull align 8 dereferenceable(32) %230)
          to label %2012 unwind label %2026

2012:                                             ; preds = %2011
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %231) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %229) #10
  %2013 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %228)
          to label %2014 unwind label %2032

2014:                                             ; preds = %2012
  br i1 %2013, label %2015, label %2036

2015:                                             ; preds = %2014
  br label %2056

2016:                                             ; preds = %2005, %1982
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %222) #10
  br label %2017

2017:                                             ; preds = %2016, %1978
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #10
  br label %5347

2018:                                             ; preds = %2006
  %2019 = landingpad { ptr, i32 }
          cleanup
  %2020 = extractvalue { ptr, i32 } %2019, 0
  store ptr %2020, ptr %6, align 8
  %2021 = extractvalue { ptr, i32 } %2019, 1
  store i32 %2021, ptr %7, align 4
  br label %2031

2022:                                             ; preds = %2010, %2008, %2007
  %2023 = landingpad { ptr, i32 }
          cleanup
  %2024 = extractvalue { ptr, i32 } %2023, 0
  store ptr %2024, ptr %6, align 8
  %2025 = extractvalue { ptr, i32 } %2023, 1
  store i32 %2025, ptr %7, align 4
  br label %2030

2026:                                             ; preds = %2011
  %2027 = landingpad { ptr, i32 }
          cleanup
  %2028 = extractvalue { ptr, i32 } %2027, 0
  store ptr %2028, ptr %6, align 8
  %2029 = extractvalue { ptr, i32 } %2027, 1
  store i32 %2029, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #10
  br label %2030

2030:                                             ; preds = %2026, %2022
  call void @llvm.lifetime.end.p0(i64 28, ptr %231) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #10
  br label %2031

2031:                                             ; preds = %2030, %2018
  call void @llvm.lifetime.end.p0(i64 32, ptr %229) #10
  br label %2068

2032:                                             ; preds = %2012
  %2033 = landingpad { ptr, i32 }
          cleanup
  %2034 = extractvalue { ptr, i32 } %2033, 0
  store ptr %2034, ptr %6, align 8
  %2035 = extractvalue { ptr, i32 } %2033, 1
  store i32 %2035, ptr %7, align 4
  br label %2067

2036:                                             ; preds = %2014
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232)
          to label %2037 unwind label %2042

2037:                                             ; preds = %2036
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #10
  %2038 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %228)
          to label %2039 unwind label %2046

2039:                                             ; preds = %2037
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %233, i32 noundef 1, ptr noundef @.str.4, i32 noundef 295, ptr noundef %2038)
          to label %2040 unwind label %2046

2040:                                             ; preds = %2039
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull align 8 dereferenceable(8) %232)
          to label %2041 unwind label %2050

2041:                                             ; preds = %2040
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #10
  br label %2056

2042:                                             ; preds = %2036
  %2043 = landingpad { ptr, i32 }
          cleanup
  %2044 = extractvalue { ptr, i32 } %2043, 0
  store ptr %2044, ptr %6, align 8
  %2045 = extractvalue { ptr, i32 } %2043, 1
  store i32 %2045, ptr %7, align 4
  br label %2055

2046:                                             ; preds = %2039, %2037
  %2047 = landingpad { ptr, i32 }
          cleanup
  %2048 = extractvalue { ptr, i32 } %2047, 0
  store ptr %2048, ptr %6, align 8
  %2049 = extractvalue { ptr, i32 } %2047, 1
  store i32 %2049, ptr %7, align 4
  br label %2054

2050:                                             ; preds = %2040
  %2051 = landingpad { ptr, i32 }
          cleanup
  %2052 = extractvalue { ptr, i32 } %2051, 0
  store ptr %2052, ptr %6, align 8
  %2053 = extractvalue { ptr, i32 } %2051, 1
  store i32 %2053, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #10
  br label %2054

2054:                                             ; preds = %2050, %2046
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #10
  br label %2055

2055:                                             ; preds = %2054, %2042
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #10
  br label %2067

2056:                                             ; preds = %2041, %2015
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %228) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %234) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %235) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %236) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %236, ptr noundef @.str.290, ptr noundef nonnull align 8 dereferenceable(32) %227)
          to label %2057 unwind label %2069

2057:                                             ; preds = %2056
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %235, ptr noundef nonnull align 8 dereferenceable(32) %236, ptr noundef @.str.293)
          to label %2058 unwind label %2073

2058:                                             ; preds = %2057
  call void @llvm.lifetime.start.p0(i64 32, ptr %237) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %238) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %238, ptr noundef @.str.237)
          to label %2059 unwind label %2077

2059:                                             ; preds = %2058
  %2060 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %238)
          to label %2061 unwind label %2077

2061:                                             ; preds = %2059
  invoke void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %237, ptr noundef nonnull align 4 dereferenceable(24) %2060, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %2062 unwind label %2077

2062:                                             ; preds = %2061
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %234, ptr noundef @.str.291, ptr noundef @.str.292, ptr noundef nonnull align 8 dereferenceable(32) %235, ptr noundef nonnull align 8 dereferenceable(32) %237)
          to label %2063 unwind label %2081

2063:                                             ; preds = %2062
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %238) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %237) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %236) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %235) #10
  %2064 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %234)
          to label %2065 unwind label %2088

2065:                                             ; preds = %2063
  br i1 %2064, label %2066, label %2092

2066:                                             ; preds = %2065
  br label %2112

2067:                                             ; preds = %2055, %2032
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #10
  br label %2068

2068:                                             ; preds = %2067, %2031
  call void @llvm.lifetime.end.p0(i64 16, ptr %228) #10
  br label %5346

2069:                                             ; preds = %2056
  %2070 = landingpad { ptr, i32 }
          cleanup
  %2071 = extractvalue { ptr, i32 } %2070, 0
  store ptr %2071, ptr %6, align 8
  %2072 = extractvalue { ptr, i32 } %2070, 1
  store i32 %2072, ptr %7, align 4
  br label %2087

2073:                                             ; preds = %2057
  %2074 = landingpad { ptr, i32 }
          cleanup
  %2075 = extractvalue { ptr, i32 } %2074, 0
  store ptr %2075, ptr %6, align 8
  %2076 = extractvalue { ptr, i32 } %2074, 1
  store i32 %2076, ptr %7, align 4
  br label %2086

2077:                                             ; preds = %2061, %2059, %2058
  %2078 = landingpad { ptr, i32 }
          cleanup
  %2079 = extractvalue { ptr, i32 } %2078, 0
  store ptr %2079, ptr %6, align 8
  %2080 = extractvalue { ptr, i32 } %2078, 1
  store i32 %2080, ptr %7, align 4
  br label %2085

2081:                                             ; preds = %2062
  %2082 = landingpad { ptr, i32 }
          cleanup
  %2083 = extractvalue { ptr, i32 } %2082, 0
  store ptr %2083, ptr %6, align 8
  %2084 = extractvalue { ptr, i32 } %2082, 1
  store i32 %2084, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #10
  br label %2085

2085:                                             ; preds = %2081, %2077
  call void @llvm.lifetime.end.p0(i64 28, ptr %238) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %237) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #10
  br label %2086

2086:                                             ; preds = %2085, %2073
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #10
  br label %2087

2087:                                             ; preds = %2086, %2069
  call void @llvm.lifetime.end.p0(i64 32, ptr %236) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %235) #10
  br label %2121

2088:                                             ; preds = %2063
  %2089 = landingpad { ptr, i32 }
          cleanup
  %2090 = extractvalue { ptr, i32 } %2089, 0
  store ptr %2090, ptr %6, align 8
  %2091 = extractvalue { ptr, i32 } %2089, 1
  store i32 %2091, ptr %7, align 4
  br label %2120

2092:                                             ; preds = %2065
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %2093 unwind label %2098

2093:                                             ; preds = %2092
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #10
  %2094 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %234)
          to label %2095 unwind label %2102

2095:                                             ; preds = %2093
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %240, i32 noundef 1, ptr noundef @.str.4, i32 noundef 296, ptr noundef %2094)
          to label %2096 unwind label %2102

2096:                                             ; preds = %2095
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %2097 unwind label %2106

2097:                                             ; preds = %2096
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #10
  br label %2112

2098:                                             ; preds = %2092
  %2099 = landingpad { ptr, i32 }
          cleanup
  %2100 = extractvalue { ptr, i32 } %2099, 0
  store ptr %2100, ptr %6, align 8
  %2101 = extractvalue { ptr, i32 } %2099, 1
  store i32 %2101, ptr %7, align 4
  br label %2111

2102:                                             ; preds = %2095, %2093
  %2103 = landingpad { ptr, i32 }
          cleanup
  %2104 = extractvalue { ptr, i32 } %2103, 0
  store ptr %2104, ptr %6, align 8
  %2105 = extractvalue { ptr, i32 } %2103, 1
  store i32 %2105, ptr %7, align 4
  br label %2110

2106:                                             ; preds = %2096
  %2107 = landingpad { ptr, i32 }
          cleanup
  %2108 = extractvalue { ptr, i32 } %2107, 0
  store ptr %2108, ptr %6, align 8
  %2109 = extractvalue { ptr, i32 } %2107, 1
  store i32 %2109, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #10
  br label %2110

2110:                                             ; preds = %2106, %2102
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #10
  br label %2111

2111:                                             ; preds = %2110, %2098
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #10
  br label %2120

2112:                                             ; preds = %2097, %2066
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %234) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %234) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %241) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %242) #10
  store i32 1, ptr %242, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %243) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %244) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %244, ptr noundef @.str.237)
          to label %2113 unwind label %2122

2113:                                             ; preds = %2112
  %2114 = invoke noundef i32 @_ZNK4chen10ip_address5scopeEv(ptr noundef nonnull align 4 dereferenceable(28) %244)
          to label %2115 unwind label %2122

2115:                                             ; preds = %2113
  store i32 %2114, ptr %243, align 4, !tbaa !15
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %241, ptr noundef @.str.294, ptr noundef @.str.295, ptr noundef nonnull align 4 dereferenceable(4) %242, ptr noundef nonnull align 4 dereferenceable(4) %243)
          to label %2116 unwind label %2122

2116:                                             ; preds = %2115
  call void @llvm.lifetime.end.p0(i64 28, ptr %244) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %243) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %242) #10
  %2117 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %241)
          to label %2118 unwind label %2126

2118:                                             ; preds = %2116
  br i1 %2117, label %2119, label %2130

2119:                                             ; preds = %2118
  br label %2150

2120:                                             ; preds = %2111, %2088
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %234) #10
  br label %2121

2121:                                             ; preds = %2120, %2087
  call void @llvm.lifetime.end.p0(i64 16, ptr %234) #10
  br label %5346

2122:                                             ; preds = %2115, %2113, %2112
  %2123 = landingpad { ptr, i32 }
          cleanup
  %2124 = extractvalue { ptr, i32 } %2123, 0
  store ptr %2124, ptr %6, align 8
  %2125 = extractvalue { ptr, i32 } %2123, 1
  store i32 %2125, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %244) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %243) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %242) #10
  br label %2164

2126:                                             ; preds = %2116
  %2127 = landingpad { ptr, i32 }
          cleanup
  %2128 = extractvalue { ptr, i32 } %2127, 0
  store ptr %2128, ptr %6, align 8
  %2129 = extractvalue { ptr, i32 } %2127, 1
  store i32 %2129, ptr %7, align 4
  br label %2163

2130:                                             ; preds = %2118
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %2131 unwind label %2136

2131:                                             ; preds = %2130
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #10
  %2132 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %241)
          to label %2133 unwind label %2140

2133:                                             ; preds = %2131
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %246, i32 noundef 1, ptr noundef @.str.4, i32 noundef 298, ptr noundef %2132)
          to label %2134 unwind label %2140

2134:                                             ; preds = %2133
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %2135 unwind label %2144

2135:                                             ; preds = %2134
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #10
  br label %2150

2136:                                             ; preds = %2130
  %2137 = landingpad { ptr, i32 }
          cleanup
  %2138 = extractvalue { ptr, i32 } %2137, 0
  store ptr %2138, ptr %6, align 8
  %2139 = extractvalue { ptr, i32 } %2137, 1
  store i32 %2139, ptr %7, align 4
  br label %2149

2140:                                             ; preds = %2133, %2131
  %2141 = landingpad { ptr, i32 }
          cleanup
  %2142 = extractvalue { ptr, i32 } %2141, 0
  store ptr %2142, ptr %6, align 8
  %2143 = extractvalue { ptr, i32 } %2141, 1
  store i32 %2143, ptr %7, align 4
  br label %2148

2144:                                             ; preds = %2134
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %6, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #10
  br label %2148

2148:                                             ; preds = %2144, %2140
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #10
  br label %2149

2149:                                             ; preds = %2148, %2136
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #10
  br label %2163

2150:                                             ; preds = %2135, %2119
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %241) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %241) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %247) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %248) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %248, ptr noundef @.str.298)
          to label %2151 unwind label %2165

2151:                                             ; preds = %2150
  %2152 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %248)
          to label %2153 unwind label %2165

2153:                                             ; preds = %2151
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %250) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %250, ptr noundef @.str.287)
          to label %2154 unwind label %2169

2154:                                             ; preds = %2153
  %2155 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %250)
          to label %2156 unwind label %2169

2156:                                             ; preds = %2154
  %2157 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2155)
          to label %2158 unwind label %2169

2158:                                             ; preds = %2156
  store i64 %2157, ptr %249, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %247, ptr noundef @.str.296, ptr noundef @.str.297, ptr noundef nonnull align 4 dereferenceable(8) %2152, ptr noundef nonnull align 4 dereferenceable(8) %249)
          to label %2159 unwind label %2169

2159:                                             ; preds = %2158
  call void @llvm.lifetime.end.p0(i64 28, ptr %250) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %248) #10
  %2160 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %247)
          to label %2161 unwind label %2174

2161:                                             ; preds = %2159
  br i1 %2160, label %2162, label %2178

2162:                                             ; preds = %2161
  br label %2198

2163:                                             ; preds = %2149, %2126
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %241) #10
  br label %2164

2164:                                             ; preds = %2163, %2122
  call void @llvm.lifetime.end.p0(i64 16, ptr %241) #10
  br label %5346

2165:                                             ; preds = %2151, %2150
  %2166 = landingpad { ptr, i32 }
          cleanup
  %2167 = extractvalue { ptr, i32 } %2166, 0
  store ptr %2167, ptr %6, align 8
  %2168 = extractvalue { ptr, i32 } %2166, 1
  store i32 %2168, ptr %7, align 4
  br label %2173

2169:                                             ; preds = %2158, %2156, %2154, %2153
  %2170 = landingpad { ptr, i32 }
          cleanup
  %2171 = extractvalue { ptr, i32 } %2170, 0
  store ptr %2171, ptr %6, align 8
  %2172 = extractvalue { ptr, i32 } %2170, 1
  store i32 %2172, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %250) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #10
  br label %2173

2173:                                             ; preds = %2169, %2165
  call void @llvm.lifetime.end.p0(i64 28, ptr %248) #10
  br label %2212

2174:                                             ; preds = %2159
  %2175 = landingpad { ptr, i32 }
          cleanup
  %2176 = extractvalue { ptr, i32 } %2175, 0
  store ptr %2176, ptr %6, align 8
  %2177 = extractvalue { ptr, i32 } %2175, 1
  store i32 %2177, ptr %7, align 4
  br label %2211

2178:                                             ; preds = %2161
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %2179 unwind label %2184

2179:                                             ; preds = %2178
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #10
  %2180 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %247)
          to label %2181 unwind label %2188

2181:                                             ; preds = %2179
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %252, i32 noundef 1, ptr noundef @.str.4, i32 noundef 300, ptr noundef %2180)
          to label %2182 unwind label %2188

2182:                                             ; preds = %2181
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %2183 unwind label %2192

2183:                                             ; preds = %2182
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #10
  br label %2198

2184:                                             ; preds = %2178
  %2185 = landingpad { ptr, i32 }
          cleanup
  %2186 = extractvalue { ptr, i32 } %2185, 0
  store ptr %2186, ptr %6, align 8
  %2187 = extractvalue { ptr, i32 } %2185, 1
  store i32 %2187, ptr %7, align 4
  br label %2197

2188:                                             ; preds = %2181, %2179
  %2189 = landingpad { ptr, i32 }
          cleanup
  %2190 = extractvalue { ptr, i32 } %2189, 0
  store ptr %2190, ptr %6, align 8
  %2191 = extractvalue { ptr, i32 } %2189, 1
  store i32 %2191, ptr %7, align 4
  br label %2196

2192:                                             ; preds = %2182
  %2193 = landingpad { ptr, i32 }
          cleanup
  %2194 = extractvalue { ptr, i32 } %2193, 0
  store ptr %2194, ptr %6, align 8
  %2195 = extractvalue { ptr, i32 } %2193, 1
  store i32 %2195, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #10
  br label %2196

2196:                                             ; preds = %2192, %2188
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #10
  br label %2197

2197:                                             ; preds = %2196, %2184
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #10
  br label %2211

2198:                                             ; preds = %2183, %2162
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %247) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %253) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %254) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %254, ptr noundef @.str.301)
          to label %2199 unwind label %2213

2199:                                             ; preds = %2198
  %2200 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %254)
          to label %2201 unwind label %2213

2201:                                             ; preds = %2199
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %256) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %256, ptr noundef @.str.302)
          to label %2202 unwind label %2217

2202:                                             ; preds = %2201
  %2203 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %256)
          to label %2204 unwind label %2217

2204:                                             ; preds = %2202
  %2205 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2203)
          to label %2206 unwind label %2217

2206:                                             ; preds = %2204
  store i64 %2205, ptr %255, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %253, ptr noundef @.str.299, ptr noundef @.str.300, ptr noundef nonnull align 4 dereferenceable(8) %2200, ptr noundef nonnull align 4 dereferenceable(8) %255)
          to label %2207 unwind label %2217

2207:                                             ; preds = %2206
  call void @llvm.lifetime.end.p0(i64 28, ptr %256) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %254) #10
  %2208 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %2209 unwind label %2222

2209:                                             ; preds = %2207
  br i1 %2208, label %2210, label %2226

2210:                                             ; preds = %2209
  br label %2246

2211:                                             ; preds = %2197, %2174
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %247) #10
  br label %2212

2212:                                             ; preds = %2211, %2173
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #10
  br label %5346

2213:                                             ; preds = %2199, %2198
  %2214 = landingpad { ptr, i32 }
          cleanup
  %2215 = extractvalue { ptr, i32 } %2214, 0
  store ptr %2215, ptr %6, align 8
  %2216 = extractvalue { ptr, i32 } %2214, 1
  store i32 %2216, ptr %7, align 4
  br label %2221

2217:                                             ; preds = %2206, %2204, %2202, %2201
  %2218 = landingpad { ptr, i32 }
          cleanup
  %2219 = extractvalue { ptr, i32 } %2218, 0
  store ptr %2219, ptr %6, align 8
  %2220 = extractvalue { ptr, i32 } %2218, 1
  store i32 %2220, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %256) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #10
  br label %2221

2221:                                             ; preds = %2217, %2213
  call void @llvm.lifetime.end.p0(i64 28, ptr %254) #10
  br label %2260

2222:                                             ; preds = %2207
  %2223 = landingpad { ptr, i32 }
          cleanup
  %2224 = extractvalue { ptr, i32 } %2223, 0
  store ptr %2224, ptr %6, align 8
  %2225 = extractvalue { ptr, i32 } %2223, 1
  store i32 %2225, ptr %7, align 4
  br label %2259

2226:                                             ; preds = %2209
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2227 unwind label %2232

2227:                                             ; preds = %2226
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #10
  %2228 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %2229 unwind label %2236

2229:                                             ; preds = %2227
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %258, i32 noundef 1, ptr noundef @.str.4, i32 noundef 301, ptr noundef %2228)
          to label %2230 unwind label %2236

2230:                                             ; preds = %2229
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2231 unwind label %2240

2231:                                             ; preds = %2230
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #10
  br label %2246

2232:                                             ; preds = %2226
  %2233 = landingpad { ptr, i32 }
          cleanup
  %2234 = extractvalue { ptr, i32 } %2233, 0
  store ptr %2234, ptr %6, align 8
  %2235 = extractvalue { ptr, i32 } %2233, 1
  store i32 %2235, ptr %7, align 4
  br label %2245

2236:                                             ; preds = %2229, %2227
  %2237 = landingpad { ptr, i32 }
          cleanup
  %2238 = extractvalue { ptr, i32 } %2237, 0
  store ptr %2238, ptr %6, align 8
  %2239 = extractvalue { ptr, i32 } %2237, 1
  store i32 %2239, ptr %7, align 4
  br label %2244

2240:                                             ; preds = %2230
  %2241 = landingpad { ptr, i32 }
          cleanup
  %2242 = extractvalue { ptr, i32 } %2241, 0
  store ptr %2242, ptr %6, align 8
  %2243 = extractvalue { ptr, i32 } %2241, 1
  store i32 %2243, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #10
  br label %2244

2244:                                             ; preds = %2240, %2236
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #10
  br label %2245

2245:                                             ; preds = %2244, %2232
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #10
  br label %2259

2246:                                             ; preds = %2231, %2210
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %259) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %260) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %260, ptr noundef @.str.301)
          to label %2247 unwind label %2261

2247:                                             ; preds = %2246
  %2248 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %260)
          to label %2249 unwind label %2261

2249:                                             ; preds = %2247
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %262) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %262, ptr noundef @.str.304)
          to label %2250 unwind label %2265

2250:                                             ; preds = %2249
  %2251 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %262)
          to label %2252 unwind label %2265

2252:                                             ; preds = %2250
  %2253 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2251)
          to label %2254 unwind label %2265

2254:                                             ; preds = %2252
  store i64 %2253, ptr %261, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %259, ptr noundef @.str.299, ptr noundef @.str.303, ptr noundef nonnull align 4 dereferenceable(8) %2248, ptr noundef nonnull align 4 dereferenceable(8) %261)
          to label %2255 unwind label %2265

2255:                                             ; preds = %2254
  call void @llvm.lifetime.end.p0(i64 28, ptr %262) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %260) #10
  %2256 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %259)
          to label %2257 unwind label %2270

2257:                                             ; preds = %2255
  br i1 %2256, label %2258, label %2274

2258:                                             ; preds = %2257
  br label %2294

2259:                                             ; preds = %2245, %2222
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #10
  br label %2260

2260:                                             ; preds = %2259, %2221
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #10
  br label %5346

2261:                                             ; preds = %2247, %2246
  %2262 = landingpad { ptr, i32 }
          cleanup
  %2263 = extractvalue { ptr, i32 } %2262, 0
  store ptr %2263, ptr %6, align 8
  %2264 = extractvalue { ptr, i32 } %2262, 1
  store i32 %2264, ptr %7, align 4
  br label %2269

2265:                                             ; preds = %2254, %2252, %2250, %2249
  %2266 = landingpad { ptr, i32 }
          cleanup
  %2267 = extractvalue { ptr, i32 } %2266, 0
  store ptr %2267, ptr %6, align 8
  %2268 = extractvalue { ptr, i32 } %2266, 1
  store i32 %2268, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %262) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #10
  br label %2269

2269:                                             ; preds = %2265, %2261
  call void @llvm.lifetime.end.p0(i64 28, ptr %260) #10
  br label %2308

2270:                                             ; preds = %2255
  %2271 = landingpad { ptr, i32 }
          cleanup
  %2272 = extractvalue { ptr, i32 } %2271, 0
  store ptr %2272, ptr %6, align 8
  %2273 = extractvalue { ptr, i32 } %2271, 1
  store i32 %2273, ptr %7, align 4
  br label %2307

2274:                                             ; preds = %2257
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %263)
          to label %2275 unwind label %2280

2275:                                             ; preds = %2274
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #10
  %2276 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %259)
          to label %2277 unwind label %2284

2277:                                             ; preds = %2275
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %264, i32 noundef 1, ptr noundef @.str.4, i32 noundef 302, ptr noundef %2276)
          to label %2278 unwind label %2284

2278:                                             ; preds = %2277
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull align 8 dereferenceable(8) %263)
          to label %2279 unwind label %2288

2279:                                             ; preds = %2278
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #10
  br label %2294

2280:                                             ; preds = %2274
  %2281 = landingpad { ptr, i32 }
          cleanup
  %2282 = extractvalue { ptr, i32 } %2281, 0
  store ptr %2282, ptr %6, align 8
  %2283 = extractvalue { ptr, i32 } %2281, 1
  store i32 %2283, ptr %7, align 4
  br label %2293

2284:                                             ; preds = %2277, %2275
  %2285 = landingpad { ptr, i32 }
          cleanup
  %2286 = extractvalue { ptr, i32 } %2285, 0
  store ptr %2286, ptr %6, align 8
  %2287 = extractvalue { ptr, i32 } %2285, 1
  store i32 %2287, ptr %7, align 4
  br label %2292

2288:                                             ; preds = %2278
  %2289 = landingpad { ptr, i32 }
          cleanup
  %2290 = extractvalue { ptr, i32 } %2289, 0
  store ptr %2290, ptr %6, align 8
  %2291 = extractvalue { ptr, i32 } %2289, 1
  store i32 %2291, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #10
  br label %2292

2292:                                             ; preds = %2288, %2284
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #10
  br label %2293

2293:                                             ; preds = %2292, %2280
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #10
  br label %2307

2294:                                             ; preds = %2279, %2258
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %265) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %266) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %266, ptr noundef @.str.301)
          to label %2295 unwind label %2309

2295:                                             ; preds = %2294
  %2296 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %266)
          to label %2297 unwind label %2309

2297:                                             ; preds = %2295
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %268) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %268, ptr noundef @.str.306)
          to label %2298 unwind label %2313

2298:                                             ; preds = %2297
  %2299 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %268)
          to label %2300 unwind label %2313

2300:                                             ; preds = %2298
  %2301 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2299)
          to label %2302 unwind label %2313

2302:                                             ; preds = %2300
  store i64 %2301, ptr %267, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %265, ptr noundef @.str.299, ptr noundef @.str.305, ptr noundef nonnull align 4 dereferenceable(8) %2296, ptr noundef nonnull align 4 dereferenceable(8) %267)
          to label %2303 unwind label %2313

2303:                                             ; preds = %2302
  call void @llvm.lifetime.end.p0(i64 28, ptr %268) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %266) #10
  %2304 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %265)
          to label %2305 unwind label %2318

2305:                                             ; preds = %2303
  br i1 %2304, label %2306, label %2322

2306:                                             ; preds = %2305
  br label %2342

2307:                                             ; preds = %2293, %2270
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #10
  br label %2308

2308:                                             ; preds = %2307, %2269
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #10
  br label %5346

2309:                                             ; preds = %2295, %2294
  %2310 = landingpad { ptr, i32 }
          cleanup
  %2311 = extractvalue { ptr, i32 } %2310, 0
  store ptr %2311, ptr %6, align 8
  %2312 = extractvalue { ptr, i32 } %2310, 1
  store i32 %2312, ptr %7, align 4
  br label %2317

2313:                                             ; preds = %2302, %2300, %2298, %2297
  %2314 = landingpad { ptr, i32 }
          cleanup
  %2315 = extractvalue { ptr, i32 } %2314, 0
  store ptr %2315, ptr %6, align 8
  %2316 = extractvalue { ptr, i32 } %2314, 1
  store i32 %2316, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %268) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #10
  br label %2317

2317:                                             ; preds = %2313, %2309
  call void @llvm.lifetime.end.p0(i64 28, ptr %266) #10
  br label %2356

2318:                                             ; preds = %2303
  %2319 = landingpad { ptr, i32 }
          cleanup
  %2320 = extractvalue { ptr, i32 } %2319, 0
  store ptr %2320, ptr %6, align 8
  %2321 = extractvalue { ptr, i32 } %2319, 1
  store i32 %2321, ptr %7, align 4
  br label %2355

2322:                                             ; preds = %2305
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %269)
          to label %2323 unwind label %2328

2323:                                             ; preds = %2322
  call void @llvm.lifetime.start.p0(i64 8, ptr %270) #10
  %2324 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %265)
          to label %2325 unwind label %2332

2325:                                             ; preds = %2323
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %270, i32 noundef 1, ptr noundef @.str.4, i32 noundef 303, ptr noundef %2324)
          to label %2326 unwind label %2332

2326:                                             ; preds = %2325
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(8) %269)
          to label %2327 unwind label %2336

2327:                                             ; preds = %2326
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %270) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #10
  br label %2342

2328:                                             ; preds = %2322
  %2329 = landingpad { ptr, i32 }
          cleanup
  %2330 = extractvalue { ptr, i32 } %2329, 0
  store ptr %2330, ptr %6, align 8
  %2331 = extractvalue { ptr, i32 } %2329, 1
  store i32 %2331, ptr %7, align 4
  br label %2341

2332:                                             ; preds = %2325, %2323
  %2333 = landingpad { ptr, i32 }
          cleanup
  %2334 = extractvalue { ptr, i32 } %2333, 0
  store ptr %2334, ptr %6, align 8
  %2335 = extractvalue { ptr, i32 } %2333, 1
  store i32 %2335, ptr %7, align 4
  br label %2340

2336:                                             ; preds = %2326
  %2337 = landingpad { ptr, i32 }
          cleanup
  %2338 = extractvalue { ptr, i32 } %2337, 0
  store ptr %2338, ptr %6, align 8
  %2339 = extractvalue { ptr, i32 } %2337, 1
  store i32 %2339, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #10
  br label %2340

2340:                                             ; preds = %2336, %2332
  call void @llvm.lifetime.end.p0(i64 8, ptr %270) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #10
  br label %2341

2341:                                             ; preds = %2340, %2328
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #10
  br label %2355

2342:                                             ; preds = %2327, %2306
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %265) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %271) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %272) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %272, ptr noundef @.str.301)
          to label %2343 unwind label %2357

2343:                                             ; preds = %2342
  %2344 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %272)
          to label %2345 unwind label %2357

2345:                                             ; preds = %2343
  call void @llvm.lifetime.start.p0(i64 8, ptr %273) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %274) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %274, ptr noundef @.str.308)
          to label %2346 unwind label %2361

2346:                                             ; preds = %2345
  %2347 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %274)
          to label %2348 unwind label %2361

2348:                                             ; preds = %2346
  %2349 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2347)
          to label %2350 unwind label %2361

2350:                                             ; preds = %2348
  store i64 %2349, ptr %273, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %271, ptr noundef @.str.299, ptr noundef @.str.307, ptr noundef nonnull align 4 dereferenceable(8) %2344, ptr noundef nonnull align 4 dereferenceable(8) %273)
          to label %2351 unwind label %2361

2351:                                             ; preds = %2350
  call void @llvm.lifetime.end.p0(i64 28, ptr %274) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %272) #10
  %2352 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %271)
          to label %2353 unwind label %2366

2353:                                             ; preds = %2351
  br i1 %2352, label %2354, label %2370

2354:                                             ; preds = %2353
  br label %2390

2355:                                             ; preds = %2341, %2318
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %265) #10
  br label %2356

2356:                                             ; preds = %2355, %2317
  call void @llvm.lifetime.end.p0(i64 16, ptr %265) #10
  br label %5346

2357:                                             ; preds = %2343, %2342
  %2358 = landingpad { ptr, i32 }
          cleanup
  %2359 = extractvalue { ptr, i32 } %2358, 0
  store ptr %2359, ptr %6, align 8
  %2360 = extractvalue { ptr, i32 } %2358, 1
  store i32 %2360, ptr %7, align 4
  br label %2365

2361:                                             ; preds = %2350, %2348, %2346, %2345
  %2362 = landingpad { ptr, i32 }
          cleanup
  %2363 = extractvalue { ptr, i32 } %2362, 0
  store ptr %2363, ptr %6, align 8
  %2364 = extractvalue { ptr, i32 } %2362, 1
  store i32 %2364, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %274) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #10
  br label %2365

2365:                                             ; preds = %2361, %2357
  call void @llvm.lifetime.end.p0(i64 28, ptr %272) #10
  br label %2404

2366:                                             ; preds = %2351
  %2367 = landingpad { ptr, i32 }
          cleanup
  %2368 = extractvalue { ptr, i32 } %2367, 0
  store ptr %2368, ptr %6, align 8
  %2369 = extractvalue { ptr, i32 } %2367, 1
  store i32 %2369, ptr %7, align 4
  br label %2403

2370:                                             ; preds = %2353
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %2371 unwind label %2376

2371:                                             ; preds = %2370
  call void @llvm.lifetime.start.p0(i64 8, ptr %276) #10
  %2372 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %271)
          to label %2373 unwind label %2380

2373:                                             ; preds = %2371
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %276, i32 noundef 1, ptr noundef @.str.4, i32 noundef 304, ptr noundef %2372)
          to label %2374 unwind label %2380

2374:                                             ; preds = %2373
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %2375 unwind label %2384

2375:                                             ; preds = %2374
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #10
  br label %2390

2376:                                             ; preds = %2370
  %2377 = landingpad { ptr, i32 }
          cleanup
  %2378 = extractvalue { ptr, i32 } %2377, 0
  store ptr %2378, ptr %6, align 8
  %2379 = extractvalue { ptr, i32 } %2377, 1
  store i32 %2379, ptr %7, align 4
  br label %2389

2380:                                             ; preds = %2373, %2371
  %2381 = landingpad { ptr, i32 }
          cleanup
  %2382 = extractvalue { ptr, i32 } %2381, 0
  store ptr %2382, ptr %6, align 8
  %2383 = extractvalue { ptr, i32 } %2381, 1
  store i32 %2383, ptr %7, align 4
  br label %2388

2384:                                             ; preds = %2374
  %2385 = landingpad { ptr, i32 }
          cleanup
  %2386 = extractvalue { ptr, i32 } %2385, 0
  store ptr %2386, ptr %6, align 8
  %2387 = extractvalue { ptr, i32 } %2385, 1
  store i32 %2387, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #10
  br label %2388

2388:                                             ; preds = %2384, %2380
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #10
  br label %2389

2389:                                             ; preds = %2388, %2376
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #10
  br label %2403

2390:                                             ; preds = %2375, %2354
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %271) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %271) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %277) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %278) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %278, ptr noundef @.str.301)
          to label %2391 unwind label %2405

2391:                                             ; preds = %2390
  %2392 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %278)
          to label %2393 unwind label %2405

2393:                                             ; preds = %2391
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %280) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %280, ptr noundef @.str.310)
          to label %2394 unwind label %2409

2394:                                             ; preds = %2393
  %2395 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %280)
          to label %2396 unwind label %2409

2396:                                             ; preds = %2394
  %2397 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2395)
          to label %2398 unwind label %2409

2398:                                             ; preds = %2396
  store i64 %2397, ptr %279, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %277, ptr noundef @.str.299, ptr noundef @.str.309, ptr noundef nonnull align 4 dereferenceable(8) %2392, ptr noundef nonnull align 4 dereferenceable(8) %279)
          to label %2399 unwind label %2409

2399:                                             ; preds = %2398
  call void @llvm.lifetime.end.p0(i64 28, ptr %280) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %278) #10
  %2400 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %2401 unwind label %2414

2401:                                             ; preds = %2399
  br i1 %2400, label %2402, label %2418

2402:                                             ; preds = %2401
  br label %2438

2403:                                             ; preds = %2389, %2366
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %271) #10
  br label %2404

2404:                                             ; preds = %2403, %2365
  call void @llvm.lifetime.end.p0(i64 16, ptr %271) #10
  br label %5346

2405:                                             ; preds = %2391, %2390
  %2406 = landingpad { ptr, i32 }
          cleanup
  %2407 = extractvalue { ptr, i32 } %2406, 0
  store ptr %2407, ptr %6, align 8
  %2408 = extractvalue { ptr, i32 } %2406, 1
  store i32 %2408, ptr %7, align 4
  br label %2413

2409:                                             ; preds = %2398, %2396, %2394, %2393
  %2410 = landingpad { ptr, i32 }
          cleanup
  %2411 = extractvalue { ptr, i32 } %2410, 0
  store ptr %2411, ptr %6, align 8
  %2412 = extractvalue { ptr, i32 } %2410, 1
  store i32 %2412, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %280) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #10
  br label %2413

2413:                                             ; preds = %2409, %2405
  call void @llvm.lifetime.end.p0(i64 28, ptr %278) #10
  br label %2452

2414:                                             ; preds = %2399
  %2415 = landingpad { ptr, i32 }
          cleanup
  %2416 = extractvalue { ptr, i32 } %2415, 0
  store ptr %2416, ptr %6, align 8
  %2417 = extractvalue { ptr, i32 } %2415, 1
  store i32 %2417, ptr %7, align 4
  br label %2451

2418:                                             ; preds = %2401
  call void @llvm.lifetime.start.p0(i64 8, ptr %281) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %2419 unwind label %2424

2419:                                             ; preds = %2418
  call void @llvm.lifetime.start.p0(i64 8, ptr %282) #10
  %2420 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %2421 unwind label %2428

2421:                                             ; preds = %2419
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %282, i32 noundef 1, ptr noundef @.str.4, i32 noundef 305, ptr noundef %2420)
          to label %2422 unwind label %2428

2422:                                             ; preds = %2421
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %2423 unwind label %2432

2423:                                             ; preds = %2422
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #10
  br label %2438

2424:                                             ; preds = %2418
  %2425 = landingpad { ptr, i32 }
          cleanup
  %2426 = extractvalue { ptr, i32 } %2425, 0
  store ptr %2426, ptr %6, align 8
  %2427 = extractvalue { ptr, i32 } %2425, 1
  store i32 %2427, ptr %7, align 4
  br label %2437

2428:                                             ; preds = %2421, %2419
  %2429 = landingpad { ptr, i32 }
          cleanup
  %2430 = extractvalue { ptr, i32 } %2429, 0
  store ptr %2430, ptr %6, align 8
  %2431 = extractvalue { ptr, i32 } %2429, 1
  store i32 %2431, ptr %7, align 4
  br label %2436

2432:                                             ; preds = %2422
  %2433 = landingpad { ptr, i32 }
          cleanup
  %2434 = extractvalue { ptr, i32 } %2433, 0
  store ptr %2434, ptr %6, align 8
  %2435 = extractvalue { ptr, i32 } %2433, 1
  store i32 %2435, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #10
  br label %2436

2436:                                             ; preds = %2432, %2428
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #10
  br label %2437

2437:                                             ; preds = %2436, %2424
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #10
  br label %2451

2438:                                             ; preds = %2423, %2402
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %277) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %283) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %284) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %284, ptr noundef @.str.301)
          to label %2439 unwind label %2453

2439:                                             ; preds = %2438
  %2440 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %284)
          to label %2441 unwind label %2453

2441:                                             ; preds = %2439
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %286) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %286, ptr noundef @.str.312)
          to label %2442 unwind label %2457

2442:                                             ; preds = %2441
  %2443 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %286)
          to label %2444 unwind label %2457

2444:                                             ; preds = %2442
  %2445 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2443)
          to label %2446 unwind label %2457

2446:                                             ; preds = %2444
  store i64 %2445, ptr %285, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %283, ptr noundef @.str.299, ptr noundef @.str.311, ptr noundef nonnull align 4 dereferenceable(8) %2440, ptr noundef nonnull align 4 dereferenceable(8) %285)
          to label %2447 unwind label %2457

2447:                                             ; preds = %2446
  call void @llvm.lifetime.end.p0(i64 28, ptr %286) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %284) #10
  %2448 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %283)
          to label %2449 unwind label %2462

2449:                                             ; preds = %2447
  br i1 %2448, label %2450, label %2466

2450:                                             ; preds = %2449
  br label %2486

2451:                                             ; preds = %2437, %2414
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %277) #10
  br label %2452

2452:                                             ; preds = %2451, %2413
  call void @llvm.lifetime.end.p0(i64 16, ptr %277) #10
  br label %5346

2453:                                             ; preds = %2439, %2438
  %2454 = landingpad { ptr, i32 }
          cleanup
  %2455 = extractvalue { ptr, i32 } %2454, 0
  store ptr %2455, ptr %6, align 8
  %2456 = extractvalue { ptr, i32 } %2454, 1
  store i32 %2456, ptr %7, align 4
  br label %2461

2457:                                             ; preds = %2446, %2444, %2442, %2441
  %2458 = landingpad { ptr, i32 }
          cleanup
  %2459 = extractvalue { ptr, i32 } %2458, 0
  store ptr %2459, ptr %6, align 8
  %2460 = extractvalue { ptr, i32 } %2458, 1
  store i32 %2460, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %286) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #10
  br label %2461

2461:                                             ; preds = %2457, %2453
  call void @llvm.lifetime.end.p0(i64 28, ptr %284) #10
  br label %2500

2462:                                             ; preds = %2447
  %2463 = landingpad { ptr, i32 }
          cleanup
  %2464 = extractvalue { ptr, i32 } %2463, 0
  store ptr %2464, ptr %6, align 8
  %2465 = extractvalue { ptr, i32 } %2463, 1
  store i32 %2465, ptr %7, align 4
  br label %2499

2466:                                             ; preds = %2449
  call void @llvm.lifetime.start.p0(i64 8, ptr %287) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %2467 unwind label %2472

2467:                                             ; preds = %2466
  call void @llvm.lifetime.start.p0(i64 8, ptr %288) #10
  %2468 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %283)
          to label %2469 unwind label %2476

2469:                                             ; preds = %2467
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %288, i32 noundef 1, ptr noundef @.str.4, i32 noundef 306, ptr noundef %2468)
          to label %2470 unwind label %2476

2470:                                             ; preds = %2469
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %2471 unwind label %2480

2471:                                             ; preds = %2470
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #10
  br label %2486

2472:                                             ; preds = %2466
  %2473 = landingpad { ptr, i32 }
          cleanup
  %2474 = extractvalue { ptr, i32 } %2473, 0
  store ptr %2474, ptr %6, align 8
  %2475 = extractvalue { ptr, i32 } %2473, 1
  store i32 %2475, ptr %7, align 4
  br label %2485

2476:                                             ; preds = %2469, %2467
  %2477 = landingpad { ptr, i32 }
          cleanup
  %2478 = extractvalue { ptr, i32 } %2477, 0
  store ptr %2478, ptr %6, align 8
  %2479 = extractvalue { ptr, i32 } %2477, 1
  store i32 %2479, ptr %7, align 4
  br label %2484

2480:                                             ; preds = %2470
  %2481 = landingpad { ptr, i32 }
          cleanup
  %2482 = extractvalue { ptr, i32 } %2481, 0
  store ptr %2482, ptr %6, align 8
  %2483 = extractvalue { ptr, i32 } %2481, 1
  store i32 %2483, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #10
  br label %2484

2484:                                             ; preds = %2480, %2476
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #10
  br label %2485

2485:                                             ; preds = %2484, %2472
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #10
  br label %2499

2486:                                             ; preds = %2471, %2450
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %283) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %283) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %289) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %290) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %290, ptr noundef @.str.301)
          to label %2487 unwind label %2501

2487:                                             ; preds = %2486
  %2488 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %290)
          to label %2489 unwind label %2501

2489:                                             ; preds = %2487
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %292) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %292, ptr noundef @.str.314)
          to label %2490 unwind label %2505

2490:                                             ; preds = %2489
  %2491 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %292)
          to label %2492 unwind label %2505

2492:                                             ; preds = %2490
  %2493 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %2491)
          to label %2494 unwind label %2505

2494:                                             ; preds = %2492
  store i64 %2493, ptr %291, align 4
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %289, ptr noundef @.str.299, ptr noundef @.str.313, ptr noundef nonnull align 4 dereferenceable(8) %2488, ptr noundef nonnull align 4 dereferenceable(8) %291)
          to label %2495 unwind label %2505

2495:                                             ; preds = %2494
  call void @llvm.lifetime.end.p0(i64 28, ptr %292) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %290) #10
  %2496 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %289)
          to label %2497 unwind label %2510

2497:                                             ; preds = %2495
  br i1 %2496, label %2498, label %2514

2498:                                             ; preds = %2497
  br label %2534

2499:                                             ; preds = %2485, %2462
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %283) #10
  br label %2500

2500:                                             ; preds = %2499, %2461
  call void @llvm.lifetime.end.p0(i64 16, ptr %283) #10
  br label %5346

2501:                                             ; preds = %2487, %2486
  %2502 = landingpad { ptr, i32 }
          cleanup
  %2503 = extractvalue { ptr, i32 } %2502, 0
  store ptr %2503, ptr %6, align 8
  %2504 = extractvalue { ptr, i32 } %2502, 1
  store i32 %2504, ptr %7, align 4
  br label %2509

2505:                                             ; preds = %2494, %2492, %2490, %2489
  %2506 = landingpad { ptr, i32 }
          cleanup
  %2507 = extractvalue { ptr, i32 } %2506, 0
  store ptr %2507, ptr %6, align 8
  %2508 = extractvalue { ptr, i32 } %2506, 1
  store i32 %2508, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %292) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #10
  br label %2509

2509:                                             ; preds = %2505, %2501
  call void @llvm.lifetime.end.p0(i64 28, ptr %290) #10
  br label %2542

2510:                                             ; preds = %2495
  %2511 = landingpad { ptr, i32 }
          cleanup
  %2512 = extractvalue { ptr, i32 } %2511, 0
  store ptr %2512, ptr %6, align 8
  %2513 = extractvalue { ptr, i32 } %2511, 1
  store i32 %2513, ptr %7, align 4
  br label %2541

2514:                                             ; preds = %2497
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %2515 unwind label %2520

2515:                                             ; preds = %2514
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #10
  %2516 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %289)
          to label %2517 unwind label %2524

2517:                                             ; preds = %2515
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef 1, ptr noundef @.str.4, i32 noundef 307, ptr noundef %2516)
          to label %2518 unwind label %2524

2518:                                             ; preds = %2517
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %2519 unwind label %2528

2519:                                             ; preds = %2518
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #10
  br label %2534

2520:                                             ; preds = %2514
  %2521 = landingpad { ptr, i32 }
          cleanup
  %2522 = extractvalue { ptr, i32 } %2521, 0
  store ptr %2522, ptr %6, align 8
  %2523 = extractvalue { ptr, i32 } %2521, 1
  store i32 %2523, ptr %7, align 4
  br label %2533

2524:                                             ; preds = %2517, %2515
  %2525 = landingpad { ptr, i32 }
          cleanup
  %2526 = extractvalue { ptr, i32 } %2525, 0
  store ptr %2526, ptr %6, align 8
  %2527 = extractvalue { ptr, i32 } %2525, 1
  store i32 %2527, ptr %7, align 4
  br label %2532

2528:                                             ; preds = %2518
  %2529 = landingpad { ptr, i32 }
          cleanup
  %2530 = extractvalue { ptr, i32 } %2529, 0
  store ptr %2530, ptr %6, align 8
  %2531 = extractvalue { ptr, i32 } %2529, 1
  store i32 %2531, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #10
  br label %2532

2532:                                             ; preds = %2528, %2524
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #10
  br label %2533

2533:                                             ; preds = %2532, %2520
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #10
  br label %2541

2534:                                             ; preds = %2519, %2498
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %289) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %289) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %295) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %296) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %297) #10
  invoke void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %297, i8 noundef zeroext 10)
          to label %2535 unwind label %2543

2535:                                             ; preds = %2534
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %296, ptr noundef nonnull align 4 dereferenceable(28) %297, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2536 unwind label %2543

2536:                                             ; preds = %2535
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %295, ptr noundef @.str.267, ptr noundef @.str.268, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %2537 unwind label %2547

2537:                                             ; preds = %2536
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %297) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #10
  %2538 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %295)
          to label %2539 unwind label %2552

2539:                                             ; preds = %2537
  br i1 %2538, label %2540, label %2556

2540:                                             ; preds = %2539
  br label %2576

2541:                                             ; preds = %2533, %2510
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %289) #10
  br label %2542

2542:                                             ; preds = %2541, %2509
  call void @llvm.lifetime.end.p0(i64 16, ptr %289) #10
  br label %5346

2543:                                             ; preds = %2535, %2534
  %2544 = landingpad { ptr, i32 }
          cleanup
  %2545 = extractvalue { ptr, i32 } %2544, 0
  store ptr %2545, ptr %6, align 8
  %2546 = extractvalue { ptr, i32 } %2544, 1
  store i32 %2546, ptr %7, align 4
  br label %2551

2547:                                             ; preds = %2536
  %2548 = landingpad { ptr, i32 }
          cleanup
  %2549 = extractvalue { ptr, i32 } %2548, 0
  store ptr %2549, ptr %6, align 8
  %2550 = extractvalue { ptr, i32 } %2548, 1
  store i32 %2550, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #10
  br label %2551

2551:                                             ; preds = %2547, %2543
  call void @llvm.lifetime.end.p0(i64 28, ptr %297) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %296) #10
  br label %2584

2552:                                             ; preds = %2537
  %2553 = landingpad { ptr, i32 }
          cleanup
  %2554 = extractvalue { ptr, i32 } %2553, 0
  store ptr %2554, ptr %6, align 8
  %2555 = extractvalue { ptr, i32 } %2553, 1
  store i32 %2555, ptr %7, align 4
  br label %2583

2556:                                             ; preds = %2539
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %2557 unwind label %2562

2557:                                             ; preds = %2556
  call void @llvm.lifetime.start.p0(i64 8, ptr %299) #10
  %2558 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %295)
          to label %2559 unwind label %2566

2559:                                             ; preds = %2557
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %299, i32 noundef 1, ptr noundef @.str.4, i32 noundef 309, ptr noundef %2558)
          to label %2560 unwind label %2566

2560:                                             ; preds = %2559
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %2561 unwind label %2570

2561:                                             ; preds = %2560
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #10
  br label %2576

2562:                                             ; preds = %2556
  %2563 = landingpad { ptr, i32 }
          cleanup
  %2564 = extractvalue { ptr, i32 } %2563, 0
  store ptr %2564, ptr %6, align 8
  %2565 = extractvalue { ptr, i32 } %2563, 1
  store i32 %2565, ptr %7, align 4
  br label %2575

2566:                                             ; preds = %2559, %2557
  %2567 = landingpad { ptr, i32 }
          cleanup
  %2568 = extractvalue { ptr, i32 } %2567, 0
  store ptr %2568, ptr %6, align 8
  %2569 = extractvalue { ptr, i32 } %2567, 1
  store i32 %2569, ptr %7, align 4
  br label %2574

2570:                                             ; preds = %2560
  %2571 = landingpad { ptr, i32 }
          cleanup
  %2572 = extractvalue { ptr, i32 } %2571, 0
  store ptr %2572, ptr %6, align 8
  %2573 = extractvalue { ptr, i32 } %2571, 1
  store i32 %2573, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %299) #10
  br label %2574

2574:                                             ; preds = %2570, %2566
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #10
  br label %2575

2575:                                             ; preds = %2574, %2562
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #10
  br label %2583

2576:                                             ; preds = %2561, %2540
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %300) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %301) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %302) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %302, ptr noundef @.str.229)
          to label %2577 unwind label %2585

2577:                                             ; preds = %2576
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %301, ptr noundef nonnull align 4 dereferenceable(28) %302, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2578 unwind label %2585

2578:                                             ; preds = %2577
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %300, ptr noundef @.str.262, ptr noundef @.str.277, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %301)
          to label %2579 unwind label %2589

2579:                                             ; preds = %2578
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %302) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %301) #10
  %2580 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %300)
          to label %2581 unwind label %2594

2581:                                             ; preds = %2579
  br i1 %2580, label %2582, label %2598

2582:                                             ; preds = %2581
  br label %2618

2583:                                             ; preds = %2575, %2552
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #10
  br label %2584

2584:                                             ; preds = %2583, %2551
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #10
  br label %5346

2585:                                             ; preds = %2577, %2576
  %2586 = landingpad { ptr, i32 }
          cleanup
  %2587 = extractvalue { ptr, i32 } %2586, 0
  store ptr %2587, ptr %6, align 8
  %2588 = extractvalue { ptr, i32 } %2586, 1
  store i32 %2588, ptr %7, align 4
  br label %2593

2589:                                             ; preds = %2578
  %2590 = landingpad { ptr, i32 }
          cleanup
  %2591 = extractvalue { ptr, i32 } %2590, 0
  store ptr %2591, ptr %6, align 8
  %2592 = extractvalue { ptr, i32 } %2590, 1
  store i32 %2592, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #10
  br label %2593

2593:                                             ; preds = %2589, %2585
  call void @llvm.lifetime.end.p0(i64 28, ptr %302) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %301) #10
  br label %2631

2594:                                             ; preds = %2579
  %2595 = landingpad { ptr, i32 }
          cleanup
  %2596 = extractvalue { ptr, i32 } %2595, 0
  store ptr %2596, ptr %6, align 8
  %2597 = extractvalue { ptr, i32 } %2595, 1
  store i32 %2597, ptr %7, align 4
  br label %2630

2598:                                             ; preds = %2581
  call void @llvm.lifetime.start.p0(i64 8, ptr %303) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %303)
          to label %2599 unwind label %2604

2599:                                             ; preds = %2598
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #10
  %2600 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %300)
          to label %2601 unwind label %2608

2601:                                             ; preds = %2599
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %304, i32 noundef 1, ptr noundef @.str.4, i32 noundef 310, ptr noundef %2600)
          to label %2602 unwind label %2608

2602:                                             ; preds = %2601
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull align 8 dereferenceable(8) %303)
          to label %2603 unwind label %2612

2603:                                             ; preds = %2602
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #10
  br label %2618

2604:                                             ; preds = %2598
  %2605 = landingpad { ptr, i32 }
          cleanup
  %2606 = extractvalue { ptr, i32 } %2605, 0
  store ptr %2606, ptr %6, align 8
  %2607 = extractvalue { ptr, i32 } %2605, 1
  store i32 %2607, ptr %7, align 4
  br label %2617

2608:                                             ; preds = %2601, %2599
  %2609 = landingpad { ptr, i32 }
          cleanup
  %2610 = extractvalue { ptr, i32 } %2609, 0
  store ptr %2610, ptr %6, align 8
  %2611 = extractvalue { ptr, i32 } %2609, 1
  store i32 %2611, ptr %7, align 4
  br label %2616

2612:                                             ; preds = %2602
  %2613 = landingpad { ptr, i32 }
          cleanup
  %2614 = extractvalue { ptr, i32 } %2613, 0
  store ptr %2614, ptr %6, align 8
  %2615 = extractvalue { ptr, i32 } %2613, 1
  store i32 %2615, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #10
  br label %2616

2616:                                             ; preds = %2612, %2608
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #10
  br label %2617

2617:                                             ; preds = %2616, %2604
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #10
  br label %2630

2618:                                             ; preds = %2603, %2582
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %305) #10
  %2619 = call noundef ptr @_ZNSt5arrayIhLm16EE4dataEv(ptr noundef nonnull align 1 dereferenceable(16) %305) #11
  %2620 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2619, ptr align 16 %2620, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %306) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %307) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %307, ptr noundef @.str.10)
          to label %2621 unwind label %2632

2621:                                             ; preds = %2618
  %2622 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %307)
          to label %2623 unwind label %2632

2623:                                             ; preds = %2621
  %2624 = invoke noundef nonnull align 1 dereferenceable(16) ptr @_ZNK4chen11ip_version64addrEv(ptr noundef nonnull align 4 dereferenceable(24) %2622)
          to label %2625 unwind label %2632

2625:                                             ; preds = %2623
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %306, ptr noundef @.str.315, ptr noundef @.str.316, ptr noundef nonnull align 1 dereferenceable(16) %305, ptr noundef nonnull align 1 dereferenceable(16) %2624)
          to label %2626 unwind label %2632

2626:                                             ; preds = %2625
  call void @llvm.lifetime.end.p0(i64 28, ptr %307) #10
  %2627 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %306)
          to label %2628 unwind label %2636

2628:                                             ; preds = %2626
  br i1 %2627, label %2629, label %2640

2629:                                             ; preds = %2628
  br label %2660

2630:                                             ; preds = %2617, %2594
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %300) #10
  br label %2631

2631:                                             ; preds = %2630, %2593
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #10
  br label %5346

2632:                                             ; preds = %2625, %2623, %2621, %2618
  %2633 = landingpad { ptr, i32 }
          cleanup
  %2634 = extractvalue { ptr, i32 } %2633, 0
  store ptr %2634, ptr %6, align 8
  %2635 = extractvalue { ptr, i32 } %2633, 1
  store i32 %2635, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %307) #10
  br label %2669

2636:                                             ; preds = %2626
  %2637 = landingpad { ptr, i32 }
          cleanup
  %2638 = extractvalue { ptr, i32 } %2637, 0
  store ptr %2638, ptr %6, align 8
  %2639 = extractvalue { ptr, i32 } %2637, 1
  store i32 %2639, ptr %7, align 4
  br label %2668

2640:                                             ; preds = %2628
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308)
          to label %2641 unwind label %2646

2641:                                             ; preds = %2640
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #10
  %2642 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %306)
          to label %2643 unwind label %2650

2643:                                             ; preds = %2641
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %309, i32 noundef 1, ptr noundef @.str.4, i32 noundef 315, ptr noundef %2642)
          to label %2644 unwind label %2650

2644:                                             ; preds = %2643
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull align 8 dereferenceable(8) %308)
          to label %2645 unwind label %2654

2645:                                             ; preds = %2644
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #10
  br label %2660

2646:                                             ; preds = %2640
  %2647 = landingpad { ptr, i32 }
          cleanup
  %2648 = extractvalue { ptr, i32 } %2647, 0
  store ptr %2648, ptr %6, align 8
  %2649 = extractvalue { ptr, i32 } %2647, 1
  store i32 %2649, ptr %7, align 4
  br label %2659

2650:                                             ; preds = %2643, %2641
  %2651 = landingpad { ptr, i32 }
          cleanup
  %2652 = extractvalue { ptr, i32 } %2651, 0
  store ptr %2652, ptr %6, align 8
  %2653 = extractvalue { ptr, i32 } %2651, 1
  store i32 %2653, ptr %7, align 4
  br label %2658

2654:                                             ; preds = %2644
  %2655 = landingpad { ptr, i32 }
          cleanup
  %2656 = extractvalue { ptr, i32 } %2655, 0
  store ptr %2656, ptr %6, align 8
  %2657 = extractvalue { ptr, i32 } %2655, 1
  store i32 %2657, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #10
  br label %2658

2658:                                             ; preds = %2654, %2650
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #10
  br label %2659

2659:                                             ; preds = %2658, %2646
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #10
  br label %2668

2660:                                             ; preds = %2645, %2629
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %306) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %310) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %311) #10
  store i32 128, ptr %311, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %312) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %313) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %313, ptr noundef @.str.10)
          to label %2661 unwind label %2670

2661:                                             ; preds = %2660
  %2662 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %313)
          to label %2663 unwind label %2670

2663:                                             ; preds = %2661
  store i8 %2662, ptr %312, align 1, !tbaa !19
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %310, ptr noundef @.str.263, ptr noundef @.str.317, ptr noundef nonnull align 4 dereferenceable(4) %311, ptr noundef nonnull align 1 dereferenceable(1) %312)
          to label %2664 unwind label %2670

2664:                                             ; preds = %2663
  call void @llvm.lifetime.end.p0(i64 28, ptr %313) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %311) #10
  %2665 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %2666 unwind label %2674

2666:                                             ; preds = %2664
  br i1 %2665, label %2667, label %2678

2667:                                             ; preds = %2666
  br label %2698

2668:                                             ; preds = %2659, %2636
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %306) #10
  br label %2669

2669:                                             ; preds = %2668, %2632
  call void @llvm.lifetime.end.p0(i64 16, ptr %306) #10
  br label %5345

2670:                                             ; preds = %2663, %2661, %2660
  %2671 = landingpad { ptr, i32 }
          cleanup
  %2672 = extractvalue { ptr, i32 } %2671, 0
  store ptr %2672, ptr %6, align 8
  %2673 = extractvalue { ptr, i32 } %2671, 1
  store i32 %2673, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %313) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %311) #10
  br label %2707

2674:                                             ; preds = %2664
  %2675 = landingpad { ptr, i32 }
          cleanup
  %2676 = extractvalue { ptr, i32 } %2675, 0
  store ptr %2676, ptr %6, align 8
  %2677 = extractvalue { ptr, i32 } %2675, 1
  store i32 %2677, ptr %7, align 4
  br label %2706

2678:                                             ; preds = %2666
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %2679 unwind label %2684

2679:                                             ; preds = %2678
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #10
  %2680 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %2681 unwind label %2688

2681:                                             ; preds = %2679
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %315, i32 noundef 1, ptr noundef @.str.4, i32 noundef 316, ptr noundef %2680)
          to label %2682 unwind label %2688

2682:                                             ; preds = %2681
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %2683 unwind label %2692

2683:                                             ; preds = %2682
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #10
  br label %2698

2684:                                             ; preds = %2678
  %2685 = landingpad { ptr, i32 }
          cleanup
  %2686 = extractvalue { ptr, i32 } %2685, 0
  store ptr %2686, ptr %6, align 8
  %2687 = extractvalue { ptr, i32 } %2685, 1
  store i32 %2687, ptr %7, align 4
  br label %2697

2688:                                             ; preds = %2681, %2679
  %2689 = landingpad { ptr, i32 }
          cleanup
  %2690 = extractvalue { ptr, i32 } %2689, 0
  store ptr %2690, ptr %6, align 8
  %2691 = extractvalue { ptr, i32 } %2689, 1
  store i32 %2691, ptr %7, align 4
  br label %2696

2692:                                             ; preds = %2682
  %2693 = landingpad { ptr, i32 }
          cleanup
  %2694 = extractvalue { ptr, i32 } %2693, 0
  store ptr %2694, ptr %6, align 8
  %2695 = extractvalue { ptr, i32 } %2693, 1
  store i32 %2695, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #10
  br label %2696

2696:                                             ; preds = %2692, %2688
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #10
  br label %2697

2697:                                             ; preds = %2696, %2684
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #10
  br label %2706

2698:                                             ; preds = %2683, %2667
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %316) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %317) #10
  store i32 128, ptr %317, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %318) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %319) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %319, ptr noundef @.str.231)
          to label %2699 unwind label %2708

2699:                                             ; preds = %2698
  %2700 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %319)
          to label %2701 unwind label %2708

2701:                                             ; preds = %2699
  store i8 %2700, ptr %318, align 1, !tbaa !19
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %316, ptr noundef @.str.263, ptr noundef @.str.318, ptr noundef nonnull align 4 dereferenceable(4) %317, ptr noundef nonnull align 1 dereferenceable(1) %318)
          to label %2702 unwind label %2708

2702:                                             ; preds = %2701
  call void @llvm.lifetime.end.p0(i64 28, ptr %319) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %317) #10
  %2703 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %316)
          to label %2704 unwind label %2712

2704:                                             ; preds = %2702
  br i1 %2703, label %2705, label %2716

2705:                                             ; preds = %2704
  br label %2736

2706:                                             ; preds = %2697, %2674
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #10
  br label %2707

2707:                                             ; preds = %2706, %2670
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #10
  br label %5345

2708:                                             ; preds = %2701, %2699, %2698
  %2709 = landingpad { ptr, i32 }
          cleanup
  %2710 = extractvalue { ptr, i32 } %2709, 0
  store ptr %2710, ptr %6, align 8
  %2711 = extractvalue { ptr, i32 } %2709, 1
  store i32 %2711, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %319) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %317) #10
  br label %2745

2712:                                             ; preds = %2702
  %2713 = landingpad { ptr, i32 }
          cleanup
  %2714 = extractvalue { ptr, i32 } %2713, 0
  store ptr %2714, ptr %6, align 8
  %2715 = extractvalue { ptr, i32 } %2713, 1
  store i32 %2715, ptr %7, align 4
  br label %2744

2716:                                             ; preds = %2704
  call void @llvm.lifetime.start.p0(i64 8, ptr %320) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %320)
          to label %2717 unwind label %2722

2717:                                             ; preds = %2716
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #10
  %2718 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %316)
          to label %2719 unwind label %2726

2719:                                             ; preds = %2717
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %321, i32 noundef 1, ptr noundef @.str.4, i32 noundef 317, ptr noundef %2718)
          to label %2720 unwind label %2726

2720:                                             ; preds = %2719
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(8) %320)
          to label %2721 unwind label %2730

2721:                                             ; preds = %2720
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #10
  br label %2736

2722:                                             ; preds = %2716
  %2723 = landingpad { ptr, i32 }
          cleanup
  %2724 = extractvalue { ptr, i32 } %2723, 0
  store ptr %2724, ptr %6, align 8
  %2725 = extractvalue { ptr, i32 } %2723, 1
  store i32 %2725, ptr %7, align 4
  br label %2735

2726:                                             ; preds = %2719, %2717
  %2727 = landingpad { ptr, i32 }
          cleanup
  %2728 = extractvalue { ptr, i32 } %2727, 0
  store ptr %2728, ptr %6, align 8
  %2729 = extractvalue { ptr, i32 } %2727, 1
  store i32 %2729, ptr %7, align 4
  br label %2734

2730:                                             ; preds = %2720
  %2731 = landingpad { ptr, i32 }
          cleanup
  %2732 = extractvalue { ptr, i32 } %2731, 0
  store ptr %2732, ptr %6, align 8
  %2733 = extractvalue { ptr, i32 } %2731, 1
  store i32 %2733, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #10
  br label %2734

2734:                                             ; preds = %2730, %2726
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #10
  br label %2735

2735:                                             ; preds = %2734, %2722
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #10
  br label %2744

2736:                                             ; preds = %2721, %2705
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %316) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %316) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %322) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %323) #10
  store i32 64, ptr %323, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %324) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %325) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %325, ptr noundef @.str.250)
          to label %2737 unwind label %2746

2737:                                             ; preds = %2736
  %2738 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %325)
          to label %2739 unwind label %2746

2739:                                             ; preds = %2737
  store i8 %2738, ptr %324, align 1, !tbaa !19
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %322, ptr noundef @.str.319, ptr noundef @.str.320, ptr noundef nonnull align 4 dereferenceable(4) %323, ptr noundef nonnull align 1 dereferenceable(1) %324)
          to label %2740 unwind label %2746

2740:                                             ; preds = %2739
  call void @llvm.lifetime.end.p0(i64 28, ptr %325) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %324) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %323) #10
  %2741 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %322)
          to label %2742 unwind label %2750

2742:                                             ; preds = %2740
  br i1 %2741, label %2743, label %2754

2743:                                             ; preds = %2742
  br label %2774

2744:                                             ; preds = %2735, %2712
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %316) #10
  br label %2745

2745:                                             ; preds = %2744, %2708
  call void @llvm.lifetime.end.p0(i64 16, ptr %316) #10
  br label %5345

2746:                                             ; preds = %2739, %2737, %2736
  %2747 = landingpad { ptr, i32 }
          cleanup
  %2748 = extractvalue { ptr, i32 } %2747, 0
  store ptr %2748, ptr %6, align 8
  %2749 = extractvalue { ptr, i32 } %2747, 1
  store i32 %2749, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %325) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %324) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %323) #10
  br label %2790

2750:                                             ; preds = %2740
  %2751 = landingpad { ptr, i32 }
          cleanup
  %2752 = extractvalue { ptr, i32 } %2751, 0
  store ptr %2752, ptr %6, align 8
  %2753 = extractvalue { ptr, i32 } %2751, 1
  store i32 %2753, ptr %7, align 4
  br label %2789

2754:                                             ; preds = %2742
  call void @llvm.lifetime.start.p0(i64 8, ptr %326) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %2755 unwind label %2760

2755:                                             ; preds = %2754
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #10
  %2756 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %322)
          to label %2757 unwind label %2764

2757:                                             ; preds = %2755
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %327, i32 noundef 1, ptr noundef @.str.4, i32 noundef 318, ptr noundef %2756)
          to label %2758 unwind label %2764

2758:                                             ; preds = %2757
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %2759 unwind label %2768

2759:                                             ; preds = %2758
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #10
  br label %2774

2760:                                             ; preds = %2754
  %2761 = landingpad { ptr, i32 }
          cleanup
  %2762 = extractvalue { ptr, i32 } %2761, 0
  store ptr %2762, ptr %6, align 8
  %2763 = extractvalue { ptr, i32 } %2761, 1
  store i32 %2763, ptr %7, align 4
  br label %2773

2764:                                             ; preds = %2757, %2755
  %2765 = landingpad { ptr, i32 }
          cleanup
  %2766 = extractvalue { ptr, i32 } %2765, 0
  store ptr %2766, ptr %6, align 8
  %2767 = extractvalue { ptr, i32 } %2765, 1
  store i32 %2767, ptr %7, align 4
  br label %2772

2768:                                             ; preds = %2758
  %2769 = landingpad { ptr, i32 }
          cleanup
  %2770 = extractvalue { ptr, i32 } %2769, 0
  store ptr %2770, ptr %6, align 8
  %2771 = extractvalue { ptr, i32 } %2769, 1
  store i32 %2771, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #10
  br label %2772

2772:                                             ; preds = %2768, %2764
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #10
  br label %2773

2773:                                             ; preds = %2772, %2760
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #10
  br label %2789

2774:                                             ; preds = %2759, %2743
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %322) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %322) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %328) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %328, ptr align 1 @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.netmask, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %329) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %329, ptr align 1 @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.wildcard, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %330) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %331) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %332) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %332, ptr noundef @.str.323)
          to label %2775 unwind label %2791

2775:                                             ; preds = %2774
  %2776 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %332)
          to label %2777 unwind label %2791

2777:                                             ; preds = %2775
  %2778 = invoke { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24) %2776)
          to label %2779 unwind label %2791

2779:                                             ; preds = %2777
  %2780 = getelementptr inbounds %"struct.std::array", ptr %331, i32 0, i32 0
  %2781 = getelementptr inbounds { i64, i64 }, ptr %2780, i32 0, i32 0
  %2782 = extractvalue { i64, i64 } %2778, 0
  store i64 %2782, ptr %2781, align 1
  %2783 = getelementptr inbounds { i64, i64 }, ptr %2780, i32 0, i32 1
  %2784 = extractvalue { i64, i64 } %2778, 1
  store i64 %2784, ptr %2783, align 1
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %330, ptr noundef @.str.321, ptr noundef @.str.322, ptr noundef nonnull align 1 dereferenceable(16) %328, ptr noundef nonnull align 1 dereferenceable(16) %331)
          to label %2785 unwind label %2791

2785:                                             ; preds = %2779
  call void @llvm.lifetime.end.p0(i64 28, ptr %332) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %331) #10
  %2786 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %330)
          to label %2787 unwind label %2795

2787:                                             ; preds = %2785
  br i1 %2786, label %2788, label %2799

2788:                                             ; preds = %2787
  br label %2819

2789:                                             ; preds = %2773, %2750
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %322) #10
  br label %2790

2790:                                             ; preds = %2789, %2746
  call void @llvm.lifetime.end.p0(i64 16, ptr %322) #10
  br label %5345

2791:                                             ; preds = %2779, %2777, %2775, %2774
  %2792 = landingpad { ptr, i32 }
          cleanup
  %2793 = extractvalue { ptr, i32 } %2792, 0
  store ptr %2793, ptr %6, align 8
  %2794 = extractvalue { ptr, i32 } %2792, 1
  store i32 %2794, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %332) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %331) #10
  br label %2835

2795:                                             ; preds = %2785
  %2796 = landingpad { ptr, i32 }
          cleanup
  %2797 = extractvalue { ptr, i32 } %2796, 0
  store ptr %2797, ptr %6, align 8
  %2798 = extractvalue { ptr, i32 } %2796, 1
  store i32 %2798, ptr %7, align 4
  br label %2834

2799:                                             ; preds = %2787
  call void @llvm.lifetime.start.p0(i64 8, ptr %333) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %2800 unwind label %2805

2800:                                             ; preds = %2799
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #10
  %2801 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %330)
          to label %2802 unwind label %2809

2802:                                             ; preds = %2800
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %334, i32 noundef 1, ptr noundef @.str.4, i32 noundef 324, ptr noundef %2801)
          to label %2803 unwind label %2809

2803:                                             ; preds = %2802
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %2804 unwind label %2813

2804:                                             ; preds = %2803
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #10
  br label %2819

2805:                                             ; preds = %2799
  %2806 = landingpad { ptr, i32 }
          cleanup
  %2807 = extractvalue { ptr, i32 } %2806, 0
  store ptr %2807, ptr %6, align 8
  %2808 = extractvalue { ptr, i32 } %2806, 1
  store i32 %2808, ptr %7, align 4
  br label %2818

2809:                                             ; preds = %2802, %2800
  %2810 = landingpad { ptr, i32 }
          cleanup
  %2811 = extractvalue { ptr, i32 } %2810, 0
  store ptr %2811, ptr %6, align 8
  %2812 = extractvalue { ptr, i32 } %2810, 1
  store i32 %2812, ptr %7, align 4
  br label %2817

2813:                                             ; preds = %2803
  %2814 = landingpad { ptr, i32 }
          cleanup
  %2815 = extractvalue { ptr, i32 } %2814, 0
  store ptr %2815, ptr %6, align 8
  %2816 = extractvalue { ptr, i32 } %2814, 1
  store i32 %2816, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #10
  br label %2817

2817:                                             ; preds = %2813, %2809
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #10
  br label %2818

2818:                                             ; preds = %2817, %2805
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #10
  br label %2834

2819:                                             ; preds = %2804, %2788
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %330) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %335) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %336) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %337) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %337, ptr noundef @.str.323)
          to label %2820 unwind label %2836

2820:                                             ; preds = %2819
  %2821 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %337)
          to label %2822 unwind label %2836

2822:                                             ; preds = %2820
  %2823 = invoke { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24) %2821)
          to label %2824 unwind label %2836

2824:                                             ; preds = %2822
  %2825 = getelementptr inbounds %"struct.std::array", ptr %336, i32 0, i32 0
  %2826 = getelementptr inbounds { i64, i64 }, ptr %2825, i32 0, i32 0
  %2827 = extractvalue { i64, i64 } %2823, 0
  store i64 %2827, ptr %2826, align 1
  %2828 = getelementptr inbounds { i64, i64 }, ptr %2825, i32 0, i32 1
  %2829 = extractvalue { i64, i64 } %2823, 1
  store i64 %2829, ptr %2828, align 1
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %335, ptr noundef @.str.324, ptr noundef @.str.325, ptr noundef nonnull align 1 dereferenceable(16) %329, ptr noundef nonnull align 1 dereferenceable(16) %336)
          to label %2830 unwind label %2836

2830:                                             ; preds = %2824
  call void @llvm.lifetime.end.p0(i64 28, ptr %337) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %336) #10
  %2831 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %335)
          to label %2832 unwind label %2840

2832:                                             ; preds = %2830
  br i1 %2831, label %2833, label %2844

2833:                                             ; preds = %2832
  br label %2864

2834:                                             ; preds = %2818, %2795
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %330) #10
  br label %2835

2835:                                             ; preds = %2834, %2791
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #10
  br label %5344

2836:                                             ; preds = %2824, %2822, %2820, %2819
  %2837 = landingpad { ptr, i32 }
          cleanup
  %2838 = extractvalue { ptr, i32 } %2837, 0
  store ptr %2838, ptr %6, align 8
  %2839 = extractvalue { ptr, i32 } %2837, 1
  store i32 %2839, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %337) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %336) #10
  br label %2912

2840:                                             ; preds = %2830
  %2841 = landingpad { ptr, i32 }
          cleanup
  %2842 = extractvalue { ptr, i32 } %2841, 0
  store ptr %2842, ptr %6, align 8
  %2843 = extractvalue { ptr, i32 } %2841, 1
  store i32 %2843, ptr %7, align 4
  br label %2911

2844:                                             ; preds = %2832
  call void @llvm.lifetime.start.p0(i64 8, ptr %338) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %338)
          to label %2845 unwind label %2850

2845:                                             ; preds = %2844
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #10
  %2846 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %335)
          to label %2847 unwind label %2854

2847:                                             ; preds = %2845
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %339, i32 noundef 1, ptr noundef @.str.4, i32 noundef 325, ptr noundef %2846)
          to label %2848 unwind label %2854

2848:                                             ; preds = %2847
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %338)
          to label %2849 unwind label %2858

2849:                                             ; preds = %2848
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #10
  br label %2864

2850:                                             ; preds = %2844
  %2851 = landingpad { ptr, i32 }
          cleanup
  %2852 = extractvalue { ptr, i32 } %2851, 0
  store ptr %2852, ptr %6, align 8
  %2853 = extractvalue { ptr, i32 } %2851, 1
  store i32 %2853, ptr %7, align 4
  br label %2863

2854:                                             ; preds = %2847, %2845
  %2855 = landingpad { ptr, i32 }
          cleanup
  %2856 = extractvalue { ptr, i32 } %2855, 0
  store ptr %2856, ptr %6, align 8
  %2857 = extractvalue { ptr, i32 } %2855, 1
  store i32 %2857, ptr %7, align 4
  br label %2862

2858:                                             ; preds = %2848
  %2859 = landingpad { ptr, i32 }
          cleanup
  %2860 = extractvalue { ptr, i32 } %2859, 0
  store ptr %2860, ptr %6, align 8
  %2861 = extractvalue { ptr, i32 } %2859, 1
  store i32 %2861, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #10
  br label %2862

2862:                                             ; preds = %2858, %2854
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #10
  br label %2863

2863:                                             ; preds = %2862, %2850
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #10
  br label %2911

2864:                                             ; preds = %2849, %2833
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %335) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %340) #10
  %2865 = getelementptr inbounds %"struct.std::array", ptr %340, i32 0, i32 0
  store i8 -1, ptr %2865, align 1, !tbaa !19
  %2866 = getelementptr inbounds i8, ptr %2865, i64 1
  store i8 -1, ptr %2866, align 1, !tbaa !19
  %2867 = getelementptr inbounds i8, ptr %2865, i64 2
  store i8 -1, ptr %2867, align 1, !tbaa !19
  %2868 = getelementptr inbounds i8, ptr %2865, i64 3
  store i8 -1, ptr %2868, align 1, !tbaa !19
  %2869 = getelementptr inbounds i8, ptr %2865, i64 4
  store i8 -1, ptr %2869, align 1, !tbaa !19
  %2870 = getelementptr inbounds i8, ptr %2865, i64 5
  store i8 -4, ptr %2870, align 1, !tbaa !19
  %2871 = getelementptr inbounds i8, ptr %2865, i64 6
  store i8 0, ptr %2871, align 1, !tbaa !19
  %2872 = getelementptr inbounds i8, ptr %2865, i64 7
  store i8 0, ptr %2872, align 1, !tbaa !19
  %2873 = getelementptr inbounds i8, ptr %2865, i64 8
  store i8 0, ptr %2873, align 1, !tbaa !19
  %2874 = getelementptr inbounds i8, ptr %2865, i64 9
  store i8 0, ptr %2874, align 1, !tbaa !19
  %2875 = getelementptr inbounds i8, ptr %2865, i64 10
  store i8 0, ptr %2875, align 1, !tbaa !19
  %2876 = getelementptr inbounds i8, ptr %2865, i64 11
  store i8 0, ptr %2876, align 1, !tbaa !19
  %2877 = getelementptr inbounds i8, ptr %2865, i64 12
  store i8 0, ptr %2877, align 1, !tbaa !19
  %2878 = getelementptr inbounds i8, ptr %2865, i64 13
  store i8 0, ptr %2878, align 1, !tbaa !19
  %2879 = getelementptr inbounds i8, ptr %2865, i64 14
  store i8 0, ptr %2879, align 1, !tbaa !19
  %2880 = getelementptr inbounds i8, ptr %2865, i64 15
  store i8 0, ptr %2880, align 1, !tbaa !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %328, ptr align 1 %340, i64 16, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %340) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %341) #10
  %2881 = getelementptr inbounds %"struct.std::array", ptr %341, i32 0, i32 0
  store i8 0, ptr %2881, align 1, !tbaa !19
  %2882 = getelementptr inbounds i8, ptr %2881, i64 1
  store i8 0, ptr %2882, align 1, !tbaa !19
  %2883 = getelementptr inbounds i8, ptr %2881, i64 2
  store i8 0, ptr %2883, align 1, !tbaa !19
  %2884 = getelementptr inbounds i8, ptr %2881, i64 3
  store i8 0, ptr %2884, align 1, !tbaa !19
  %2885 = getelementptr inbounds i8, ptr %2881, i64 4
  store i8 0, ptr %2885, align 1, !tbaa !19
  %2886 = getelementptr inbounds i8, ptr %2881, i64 5
  store i8 3, ptr %2886, align 1, !tbaa !19
  %2887 = getelementptr inbounds i8, ptr %2881, i64 6
  store i8 -1, ptr %2887, align 1, !tbaa !19
  %2888 = getelementptr inbounds i8, ptr %2881, i64 7
  store i8 -1, ptr %2888, align 1, !tbaa !19
  %2889 = getelementptr inbounds i8, ptr %2881, i64 8
  store i8 -1, ptr %2889, align 1, !tbaa !19
  %2890 = getelementptr inbounds i8, ptr %2881, i64 9
  store i8 -1, ptr %2890, align 1, !tbaa !19
  %2891 = getelementptr inbounds i8, ptr %2881, i64 10
  store i8 -1, ptr %2891, align 1, !tbaa !19
  %2892 = getelementptr inbounds i8, ptr %2881, i64 11
  store i8 -1, ptr %2892, align 1, !tbaa !19
  %2893 = getelementptr inbounds i8, ptr %2881, i64 12
  store i8 -1, ptr %2893, align 1, !tbaa !19
  %2894 = getelementptr inbounds i8, ptr %2881, i64 13
  store i8 -1, ptr %2894, align 1, !tbaa !19
  %2895 = getelementptr inbounds i8, ptr %2881, i64 14
  store i8 -1, ptr %2895, align 1, !tbaa !19
  %2896 = getelementptr inbounds i8, ptr %2881, i64 15
  store i8 -1, ptr %2896, align 1, !tbaa !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %329, ptr align 1 %341, i64 16, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %341) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %342) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %343) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %344) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %344, ptr noundef @.str.327)
          to label %2897 unwind label %2913

2897:                                             ; preds = %2864
  %2898 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %344)
          to label %2899 unwind label %2913

2899:                                             ; preds = %2897
  %2900 = invoke { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24) %2898)
          to label %2901 unwind label %2913

2901:                                             ; preds = %2899
  %2902 = getelementptr inbounds %"struct.std::array", ptr %343, i32 0, i32 0
  %2903 = getelementptr inbounds { i64, i64 }, ptr %2902, i32 0, i32 0
  %2904 = extractvalue { i64, i64 } %2900, 0
  store i64 %2904, ptr %2903, align 1
  %2905 = getelementptr inbounds { i64, i64 }, ptr %2902, i32 0, i32 1
  %2906 = extractvalue { i64, i64 } %2900, 1
  store i64 %2906, ptr %2905, align 1
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %342, ptr noundef @.str.321, ptr noundef @.str.326, ptr noundef nonnull align 1 dereferenceable(16) %328, ptr noundef nonnull align 1 dereferenceable(16) %343)
          to label %2907 unwind label %2913

2907:                                             ; preds = %2901
  call void @llvm.lifetime.end.p0(i64 28, ptr %344) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %343) #10
  %2908 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
          to label %2909 unwind label %2917

2909:                                             ; preds = %2907
  br i1 %2908, label %2910, label %2921

2910:                                             ; preds = %2909
  br label %2941

2911:                                             ; preds = %2863, %2840
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #10
  br label %2912

2912:                                             ; preds = %2911, %2836
  call void @llvm.lifetime.end.p0(i64 16, ptr %335) #10
  br label %5344

2913:                                             ; preds = %2901, %2899, %2897, %2864
  %2914 = landingpad { ptr, i32 }
          cleanup
  %2915 = extractvalue { ptr, i32 } %2914, 0
  store ptr %2915, ptr %6, align 8
  %2916 = extractvalue { ptr, i32 } %2914, 1
  store i32 %2916, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %344) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %343) #10
  br label %2957

2917:                                             ; preds = %2907
  %2918 = landingpad { ptr, i32 }
          cleanup
  %2919 = extractvalue { ptr, i32 } %2918, 0
  store ptr %2919, ptr %6, align 8
  %2920 = extractvalue { ptr, i32 } %2918, 1
  store i32 %2920, ptr %7, align 4
  br label %2956

2921:                                             ; preds = %2909
  call void @llvm.lifetime.start.p0(i64 8, ptr %345) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %2922 unwind label %2927

2922:                                             ; preds = %2921
  call void @llvm.lifetime.start.p0(i64 8, ptr %346) #10
  %2923 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
          to label %2924 unwind label %2931

2924:                                             ; preds = %2922
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %346, i32 noundef 1, ptr noundef @.str.4, i32 noundef 330, ptr noundef %2923)
          to label %2925 unwind label %2931

2925:                                             ; preds = %2924
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %2926 unwind label %2935

2926:                                             ; preds = %2925
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #10
  br label %2941

2927:                                             ; preds = %2921
  %2928 = landingpad { ptr, i32 }
          cleanup
  %2929 = extractvalue { ptr, i32 } %2928, 0
  store ptr %2929, ptr %6, align 8
  %2930 = extractvalue { ptr, i32 } %2928, 1
  store i32 %2930, ptr %7, align 4
  br label %2940

2931:                                             ; preds = %2924, %2922
  %2932 = landingpad { ptr, i32 }
          cleanup
  %2933 = extractvalue { ptr, i32 } %2932, 0
  store ptr %2933, ptr %6, align 8
  %2934 = extractvalue { ptr, i32 } %2932, 1
  store i32 %2934, ptr %7, align 4
  br label %2939

2935:                                             ; preds = %2925
  %2936 = landingpad { ptr, i32 }
          cleanup
  %2937 = extractvalue { ptr, i32 } %2936, 0
  store ptr %2937, ptr %6, align 8
  %2938 = extractvalue { ptr, i32 } %2936, 1
  store i32 %2938, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #10
  br label %2939

2939:                                             ; preds = %2935, %2931
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #10
  br label %2940

2940:                                             ; preds = %2939, %2927
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #10
  br label %2956

2941:                                             ; preds = %2926, %2910
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %342) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %347) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %348) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %349) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %349, ptr noundef @.str.327)
          to label %2942 unwind label %2958

2942:                                             ; preds = %2941
  %2943 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %349)
          to label %2944 unwind label %2958

2944:                                             ; preds = %2942
  %2945 = invoke { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24) %2943)
          to label %2946 unwind label %2958

2946:                                             ; preds = %2944
  %2947 = getelementptr inbounds %"struct.std::array", ptr %348, i32 0, i32 0
  %2948 = getelementptr inbounds { i64, i64 }, ptr %2947, i32 0, i32 0
  %2949 = extractvalue { i64, i64 } %2945, 0
  store i64 %2949, ptr %2948, align 1
  %2950 = getelementptr inbounds { i64, i64 }, ptr %2947, i32 0, i32 1
  %2951 = extractvalue { i64, i64 } %2945, 1
  store i64 %2951, ptr %2950, align 1
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %347, ptr noundef @.str.324, ptr noundef @.str.328, ptr noundef nonnull align 1 dereferenceable(16) %329, ptr noundef nonnull align 1 dereferenceable(16) %348)
          to label %2952 unwind label %2958

2952:                                             ; preds = %2946
  call void @llvm.lifetime.end.p0(i64 28, ptr %349) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %348) #10
  %2953 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
          to label %2954 unwind label %2962

2954:                                             ; preds = %2952
  br i1 %2953, label %2955, label %2966

2955:                                             ; preds = %2954
  br label %2986

2956:                                             ; preds = %2940, %2917
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #10
  br label %2957

2957:                                             ; preds = %2956, %2913
  call void @llvm.lifetime.end.p0(i64 16, ptr %342) #10
  br label %5344

2958:                                             ; preds = %2946, %2944, %2942, %2941
  %2959 = landingpad { ptr, i32 }
          cleanup
  %2960 = extractvalue { ptr, i32 } %2959, 0
  store ptr %2960, ptr %6, align 8
  %2961 = extractvalue { ptr, i32 } %2959, 1
  store i32 %2961, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %349) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %348) #10
  br label %2995

2962:                                             ; preds = %2952
  %2963 = landingpad { ptr, i32 }
          cleanup
  %2964 = extractvalue { ptr, i32 } %2963, 0
  store ptr %2964, ptr %6, align 8
  %2965 = extractvalue { ptr, i32 } %2963, 1
  store i32 %2965, ptr %7, align 4
  br label %2994

2966:                                             ; preds = %2954
  call void @llvm.lifetime.start.p0(i64 8, ptr %350) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %2967 unwind label %2972

2967:                                             ; preds = %2966
  call void @llvm.lifetime.start.p0(i64 8, ptr %351) #10
  %2968 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
          to label %2969 unwind label %2976

2969:                                             ; preds = %2967
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %351, i32 noundef 1, ptr noundef @.str.4, i32 noundef 331, ptr noundef %2968)
          to label %2970 unwind label %2976

2970:                                             ; preds = %2969
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %2971 unwind label %2980

2971:                                             ; preds = %2970
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #10
  br label %2986

2972:                                             ; preds = %2966
  %2973 = landingpad { ptr, i32 }
          cleanup
  %2974 = extractvalue { ptr, i32 } %2973, 0
  store ptr %2974, ptr %6, align 8
  %2975 = extractvalue { ptr, i32 } %2973, 1
  store i32 %2975, ptr %7, align 4
  br label %2985

2976:                                             ; preds = %2969, %2967
  %2977 = landingpad { ptr, i32 }
          cleanup
  %2978 = extractvalue { ptr, i32 } %2977, 0
  store ptr %2978, ptr %6, align 8
  %2979 = extractvalue { ptr, i32 } %2977, 1
  store i32 %2979, ptr %7, align 4
  br label %2984

2980:                                             ; preds = %2970
  %2981 = landingpad { ptr, i32 }
          cleanup
  %2982 = extractvalue { ptr, i32 } %2981, 0
  store ptr %2982, ptr %6, align 8
  %2983 = extractvalue { ptr, i32 } %2981, 1
  store i32 %2983, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #10
  br label %2984

2984:                                             ; preds = %2980, %2976
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #10
  br label %2985

2985:                                             ; preds = %2984, %2972
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #10
  br label %2994

2986:                                             ; preds = %2971, %2955
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %347) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %347) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %352) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %353) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %354) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %355) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %355, ptr noundef @.str.327)
          to label %2987 unwind label %2996

2987:                                             ; preds = %2986
  invoke void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %354, ptr noundef nonnull align 4 dereferenceable(28) %355)
          to label %2988 unwind label %2996

2988:                                             ; preds = %2987
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %353, ptr noundef nonnull align 4 dereferenceable(28) %354, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %2989 unwind label %2996

2989:                                             ; preds = %2988
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %352, ptr noundef @.str.329, ptr noundef @.str.330, ptr noundef nonnull align 1 dereferenceable(20) @.str.331, ptr noundef nonnull align 8 dereferenceable(32) %353)
          to label %2990 unwind label %3000

2990:                                             ; preds = %2989
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %355) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %354) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %353) #10
  %2991 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %352)
          to label %2992 unwind label %3005

2992:                                             ; preds = %2990
  br i1 %2991, label %2993, label %3009

2993:                                             ; preds = %2992
  br label %3029

2994:                                             ; preds = %2985, %2962
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %347) #10
  br label %2995

2995:                                             ; preds = %2994, %2958
  call void @llvm.lifetime.end.p0(i64 16, ptr %347) #10
  br label %5344

2996:                                             ; preds = %2988, %2987, %2986
  %2997 = landingpad { ptr, i32 }
          cleanup
  %2998 = extractvalue { ptr, i32 } %2997, 0
  store ptr %2998, ptr %6, align 8
  %2999 = extractvalue { ptr, i32 } %2997, 1
  store i32 %2999, ptr %7, align 4
  br label %3004

3000:                                             ; preds = %2989
  %3001 = landingpad { ptr, i32 }
          cleanup
  %3002 = extractvalue { ptr, i32 } %3001, 0
  store ptr %3002, ptr %6, align 8
  %3003 = extractvalue { ptr, i32 } %3001, 1
  store i32 %3003, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #10
  br label %3004

3004:                                             ; preds = %3000, %2996
  call void @llvm.lifetime.end.p0(i64 28, ptr %355) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %354) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %353) #10
  br label %3038

3005:                                             ; preds = %2990
  %3006 = landingpad { ptr, i32 }
          cleanup
  %3007 = extractvalue { ptr, i32 } %3006, 0
  store ptr %3007, ptr %6, align 8
  %3008 = extractvalue { ptr, i32 } %3006, 1
  store i32 %3008, ptr %7, align 4
  br label %3037

3009:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 8, ptr %356) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %3010 unwind label %3015

3010:                                             ; preds = %3009
  call void @llvm.lifetime.start.p0(i64 8, ptr %357) #10
  %3011 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %352)
          to label %3012 unwind label %3019

3012:                                             ; preds = %3010
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %357, i32 noundef 1, ptr noundef @.str.4, i32 noundef 333, ptr noundef %3011)
          to label %3013 unwind label %3019

3013:                                             ; preds = %3012
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %3014 unwind label %3023

3014:                                             ; preds = %3013
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %357) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #10
  br label %3029

3015:                                             ; preds = %3009
  %3016 = landingpad { ptr, i32 }
          cleanup
  %3017 = extractvalue { ptr, i32 } %3016, 0
  store ptr %3017, ptr %6, align 8
  %3018 = extractvalue { ptr, i32 } %3016, 1
  store i32 %3018, ptr %7, align 4
  br label %3028

3019:                                             ; preds = %3012, %3010
  %3020 = landingpad { ptr, i32 }
          cleanup
  %3021 = extractvalue { ptr, i32 } %3020, 0
  store ptr %3021, ptr %6, align 8
  %3022 = extractvalue { ptr, i32 } %3020, 1
  store i32 %3022, ptr %7, align 4
  br label %3027

3023:                                             ; preds = %3013
  %3024 = landingpad { ptr, i32 }
          cleanup
  %3025 = extractvalue { ptr, i32 } %3024, 0
  store ptr %3025, ptr %6, align 8
  %3026 = extractvalue { ptr, i32 } %3024, 1
  store i32 %3026, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #10
  br label %3027

3027:                                             ; preds = %3023, %3019
  call void @llvm.lifetime.end.p0(i64 8, ptr %357) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #10
  br label %3028

3028:                                             ; preds = %3027, %3015
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #10
  br label %3037

3029:                                             ; preds = %3014, %2993
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %352) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %352) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %358) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %359) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %360) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %361) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %361, ptr noundef @.str.231)
          to label %3030 unwind label %3039

3030:                                             ; preds = %3029
  invoke void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %360, ptr noundef nonnull align 4 dereferenceable(28) %361)
          to label %3031 unwind label %3039

3031:                                             ; preds = %3030
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %359, ptr noundef nonnull align 4 dereferenceable(28) %360, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3032 unwind label %3039

3032:                                             ; preds = %3031
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %358, ptr noundef @.str.262, ptr noundef @.str.332, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %3033 unwind label %3043

3033:                                             ; preds = %3032
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %361) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %360) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %359) #10
  %3034 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
          to label %3035 unwind label %3048

3035:                                             ; preds = %3033
  br i1 %3034, label %3036, label %3052

3036:                                             ; preds = %3035
  br label %3072

3037:                                             ; preds = %3028, %3005
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %352) #10
  br label %3038

3038:                                             ; preds = %3037, %3004
  call void @llvm.lifetime.end.p0(i64 16, ptr %352) #10
  br label %5344

3039:                                             ; preds = %3031, %3030, %3029
  %3040 = landingpad { ptr, i32 }
          cleanup
  %3041 = extractvalue { ptr, i32 } %3040, 0
  store ptr %3041, ptr %6, align 8
  %3042 = extractvalue { ptr, i32 } %3040, 1
  store i32 %3042, ptr %7, align 4
  br label %3047

3043:                                             ; preds = %3032
  %3044 = landingpad { ptr, i32 }
          cleanup
  %3045 = extractvalue { ptr, i32 } %3044, 0
  store ptr %3045, ptr %6, align 8
  %3046 = extractvalue { ptr, i32 } %3044, 1
  store i32 %3046, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %359) #10
  br label %3047

3047:                                             ; preds = %3043, %3039
  call void @llvm.lifetime.end.p0(i64 28, ptr %361) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %360) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %359) #10
  br label %3081

3048:                                             ; preds = %3033
  %3049 = landingpad { ptr, i32 }
          cleanup
  %3050 = extractvalue { ptr, i32 } %3049, 0
  store ptr %3050, ptr %6, align 8
  %3051 = extractvalue { ptr, i32 } %3049, 1
  store i32 %3051, ptr %7, align 4
  br label %3080

3052:                                             ; preds = %3035
  call void @llvm.lifetime.start.p0(i64 8, ptr %362) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %3053 unwind label %3058

3053:                                             ; preds = %3052
  call void @llvm.lifetime.start.p0(i64 8, ptr %363) #10
  %3054 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
          to label %3055 unwind label %3062

3055:                                             ; preds = %3053
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %363, i32 noundef 1, ptr noundef @.str.4, i32 noundef 334, ptr noundef %3054)
          to label %3056 unwind label %3062

3056:                                             ; preds = %3055
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %3057 unwind label %3066

3057:                                             ; preds = %3056
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %362) #10
  br label %3072

3058:                                             ; preds = %3052
  %3059 = landingpad { ptr, i32 }
          cleanup
  %3060 = extractvalue { ptr, i32 } %3059, 0
  store ptr %3060, ptr %6, align 8
  %3061 = extractvalue { ptr, i32 } %3059, 1
  store i32 %3061, ptr %7, align 4
  br label %3071

3062:                                             ; preds = %3055, %3053
  %3063 = landingpad { ptr, i32 }
          cleanup
  %3064 = extractvalue { ptr, i32 } %3063, 0
  store ptr %3064, ptr %6, align 8
  %3065 = extractvalue { ptr, i32 } %3063, 1
  store i32 %3065, ptr %7, align 4
  br label %3070

3066:                                             ; preds = %3056
  %3067 = landingpad { ptr, i32 }
          cleanup
  %3068 = extractvalue { ptr, i32 } %3067, 0
  store ptr %3068, ptr %6, align 8
  %3069 = extractvalue { ptr, i32 } %3067, 1
  store i32 %3069, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #10
  br label %3070

3070:                                             ; preds = %3066, %3062
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #10
  br label %3071

3071:                                             ; preds = %3070, %3058
  call void @llvm.lifetime.end.p0(i64 8, ptr %362) #10
  br label %3080

3072:                                             ; preds = %3057, %3036
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %358) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %358) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %364) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %365) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %366) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %367) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %367, ptr noundef @.str.327)
          to label %3073 unwind label %3082

3073:                                             ; preds = %3072
  invoke void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %366, ptr noundef nonnull align 4 dereferenceable(28) %367)
          to label %3074 unwind label %3082

3074:                                             ; preds = %3073
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %365, ptr noundef nonnull align 4 dereferenceable(28) %366, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %3075 unwind label %3082

3075:                                             ; preds = %3074
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %364, ptr noundef @.str.329, ptr noundef @.str.333, ptr noundef nonnull align 1 dereferenceable(20) @.str.331, ptr noundef nonnull align 8 dereferenceable(32) %365)
          to label %3076 unwind label %3086

3076:                                             ; preds = %3075
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %367) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %366) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %365) #10
  %3077 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %364)
          to label %3078 unwind label %3091

3078:                                             ; preds = %3076
  br i1 %3077, label %3079, label %3095

3079:                                             ; preds = %3078
  br label %3115

3080:                                             ; preds = %3071, %3048
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %358) #10
  br label %3081

3081:                                             ; preds = %3080, %3047
  call void @llvm.lifetime.end.p0(i64 16, ptr %358) #10
  br label %5344

3082:                                             ; preds = %3074, %3073, %3072
  %3083 = landingpad { ptr, i32 }
          cleanup
  %3084 = extractvalue { ptr, i32 } %3083, 0
  store ptr %3084, ptr %6, align 8
  %3085 = extractvalue { ptr, i32 } %3083, 1
  store i32 %3085, ptr %7, align 4
  br label %3090

3086:                                             ; preds = %3075
  %3087 = landingpad { ptr, i32 }
          cleanup
  %3088 = extractvalue { ptr, i32 } %3087, 0
  store ptr %3088, ptr %6, align 8
  %3089 = extractvalue { ptr, i32 } %3087, 1
  store i32 %3089, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #10
  br label %3090

3090:                                             ; preds = %3086, %3082
  call void @llvm.lifetime.end.p0(i64 28, ptr %367) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %366) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %365) #10
  br label %3124

3091:                                             ; preds = %3076
  %3092 = landingpad { ptr, i32 }
          cleanup
  %3093 = extractvalue { ptr, i32 } %3092, 0
  store ptr %3093, ptr %6, align 8
  %3094 = extractvalue { ptr, i32 } %3092, 1
  store i32 %3094, ptr %7, align 4
  br label %3123

3095:                                             ; preds = %3078
  call void @llvm.lifetime.start.p0(i64 8, ptr %368) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %3096 unwind label %3101

3096:                                             ; preds = %3095
  call void @llvm.lifetime.start.p0(i64 8, ptr %369) #10
  %3097 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %364)
          to label %3098 unwind label %3105

3098:                                             ; preds = %3096
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %369, i32 noundef 1, ptr noundef @.str.4, i32 noundef 336, ptr noundef %3097)
          to label %3099 unwind label %3105

3099:                                             ; preds = %3098
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %3100 unwind label %3109

3100:                                             ; preds = %3099
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #10
  br label %3115

3101:                                             ; preds = %3095
  %3102 = landingpad { ptr, i32 }
          cleanup
  %3103 = extractvalue { ptr, i32 } %3102, 0
  store ptr %3103, ptr %6, align 8
  %3104 = extractvalue { ptr, i32 } %3102, 1
  store i32 %3104, ptr %7, align 4
  br label %3114

3105:                                             ; preds = %3098, %3096
  %3106 = landingpad { ptr, i32 }
          cleanup
  %3107 = extractvalue { ptr, i32 } %3106, 0
  store ptr %3107, ptr %6, align 8
  %3108 = extractvalue { ptr, i32 } %3106, 1
  store i32 %3108, ptr %7, align 4
  br label %3113

3109:                                             ; preds = %3099
  %3110 = landingpad { ptr, i32 }
          cleanup
  %3111 = extractvalue { ptr, i32 } %3110, 0
  store ptr %3111, ptr %6, align 8
  %3112 = extractvalue { ptr, i32 } %3110, 1
  store i32 %3112, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #10
  br label %3113

3113:                                             ; preds = %3109, %3105
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #10
  br label %3114

3114:                                             ; preds = %3113, %3101
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #10
  br label %3123

3115:                                             ; preds = %3100, %3079
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %364) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %370) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %371) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %372) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %373) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %373, ptr noundef @.str.327)
          to label %3116 unwind label %3125

3116:                                             ; preds = %3115
  invoke void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %372, ptr noundef nonnull align 4 dereferenceable(28) %373)
          to label %3117 unwind label %3125

3117:                                             ; preds = %3116
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %371, ptr noundef nonnull align 4 dereferenceable(28) %372, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %3118 unwind label %3125

3118:                                             ; preds = %3117
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA43_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %370, ptr noundef @.str.334, ptr noundef @.str.335, ptr noundef nonnull align 1 dereferenceable(43) @.str.336, ptr noundef nonnull align 8 dereferenceable(32) %371)
          to label %3119 unwind label %3129

3119:                                             ; preds = %3118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %373) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %372) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #10
  %3120 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %370)
          to label %3121 unwind label %3134

3121:                                             ; preds = %3119
  br i1 %3120, label %3122, label %3138

3122:                                             ; preds = %3121
  br label %3158

3123:                                             ; preds = %3114, %3091
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %364) #10
  br label %3124

3124:                                             ; preds = %3123, %3090
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #10
  br label %5344

3125:                                             ; preds = %3117, %3116, %3115
  %3126 = landingpad { ptr, i32 }
          cleanup
  %3127 = extractvalue { ptr, i32 } %3126, 0
  store ptr %3127, ptr %6, align 8
  %3128 = extractvalue { ptr, i32 } %3126, 1
  store i32 %3128, ptr %7, align 4
  br label %3133

3129:                                             ; preds = %3118
  %3130 = landingpad { ptr, i32 }
          cleanup
  %3131 = extractvalue { ptr, i32 } %3130, 0
  store ptr %3131, ptr %6, align 8
  %3132 = extractvalue { ptr, i32 } %3130, 1
  store i32 %3132, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #10
  br label %3133

3133:                                             ; preds = %3129, %3125
  call void @llvm.lifetime.end.p0(i64 28, ptr %373) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %372) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %371) #10
  br label %3167

3134:                                             ; preds = %3119
  %3135 = landingpad { ptr, i32 }
          cleanup
  %3136 = extractvalue { ptr, i32 } %3135, 0
  store ptr %3136, ptr %6, align 8
  %3137 = extractvalue { ptr, i32 } %3135, 1
  store i32 %3137, ptr %7, align 4
  br label %3166

3138:                                             ; preds = %3121
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %3139 unwind label %3144

3139:                                             ; preds = %3138
  call void @llvm.lifetime.start.p0(i64 8, ptr %375) #10
  %3140 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %370)
          to label %3141 unwind label %3148

3141:                                             ; preds = %3139
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %375, i32 noundef 1, ptr noundef @.str.4, i32 noundef 337, ptr noundef %3140)
          to label %3142 unwind label %3148

3142:                                             ; preds = %3141
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %3143 unwind label %3152

3143:                                             ; preds = %3142
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #10
  br label %3158

3144:                                             ; preds = %3138
  %3145 = landingpad { ptr, i32 }
          cleanup
  %3146 = extractvalue { ptr, i32 } %3145, 0
  store ptr %3146, ptr %6, align 8
  %3147 = extractvalue { ptr, i32 } %3145, 1
  store i32 %3147, ptr %7, align 4
  br label %3157

3148:                                             ; preds = %3141, %3139
  %3149 = landingpad { ptr, i32 }
          cleanup
  %3150 = extractvalue { ptr, i32 } %3149, 0
  store ptr %3150, ptr %6, align 8
  %3151 = extractvalue { ptr, i32 } %3149, 1
  store i32 %3151, ptr %7, align 4
  br label %3156

3152:                                             ; preds = %3142
  %3153 = landingpad { ptr, i32 }
          cleanup
  %3154 = extractvalue { ptr, i32 } %3153, 0
  store ptr %3154, ptr %6, align 8
  %3155 = extractvalue { ptr, i32 } %3153, 1
  store i32 %3155, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #10
  br label %3156

3156:                                             ; preds = %3152, %3148
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #10
  br label %3157

3157:                                             ; preds = %3156, %3144
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #10
  br label %3166

3158:                                             ; preds = %3143, %3122
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %370) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %370) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %376) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %377) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %378) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %379) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %379, ptr noundef @.str.231)
          to label %3159 unwind label %3168

3159:                                             ; preds = %3158
  invoke void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %378, ptr noundef nonnull align 4 dereferenceable(28) %379)
          to label %3160 unwind label %3168

3160:                                             ; preds = %3159
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %377, ptr noundef nonnull align 4 dereferenceable(28) %378, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3161 unwind label %3168

3161:                                             ; preds = %3160
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %376, ptr noundef @.str.262, ptr noundef @.str.337, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %377)
          to label %3162 unwind label %3172

3162:                                             ; preds = %3161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %379) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %378) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %377) #10
  %3163 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %376)
          to label %3164 unwind label %3177

3164:                                             ; preds = %3162
  br i1 %3163, label %3165, label %3181

3165:                                             ; preds = %3164
  br label %3201

3166:                                             ; preds = %3157, %3134
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %370) #10
  br label %3167

3167:                                             ; preds = %3166, %3133
  call void @llvm.lifetime.end.p0(i64 16, ptr %370) #10
  br label %5344

3168:                                             ; preds = %3160, %3159, %3158
  %3169 = landingpad { ptr, i32 }
          cleanup
  %3170 = extractvalue { ptr, i32 } %3169, 0
  store ptr %3170, ptr %6, align 8
  %3171 = extractvalue { ptr, i32 } %3169, 1
  store i32 %3171, ptr %7, align 4
  br label %3176

3172:                                             ; preds = %3161
  %3173 = landingpad { ptr, i32 }
          cleanup
  %3174 = extractvalue { ptr, i32 } %3173, 0
  store ptr %3174, ptr %6, align 8
  %3175 = extractvalue { ptr, i32 } %3173, 1
  store i32 %3175, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #10
  br label %3176

3176:                                             ; preds = %3172, %3168
  call void @llvm.lifetime.end.p0(i64 28, ptr %379) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %378) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %377) #10
  br label %3210

3177:                                             ; preds = %3162
  %3178 = landingpad { ptr, i32 }
          cleanup
  %3179 = extractvalue { ptr, i32 } %3178, 0
  store ptr %3179, ptr %6, align 8
  %3180 = extractvalue { ptr, i32 } %3178, 1
  store i32 %3180, ptr %7, align 4
  br label %3209

3181:                                             ; preds = %3164
  call void @llvm.lifetime.start.p0(i64 8, ptr %380) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %3182 unwind label %3187

3182:                                             ; preds = %3181
  call void @llvm.lifetime.start.p0(i64 8, ptr %381) #10
  %3183 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %376)
          to label %3184 unwind label %3191

3184:                                             ; preds = %3182
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %381, i32 noundef 1, ptr noundef @.str.4, i32 noundef 339, ptr noundef %3183)
          to label %3185 unwind label %3191

3185:                                             ; preds = %3184
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %3186 unwind label %3195

3186:                                             ; preds = %3185
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #10
  br label %3201

3187:                                             ; preds = %3181
  %3188 = landingpad { ptr, i32 }
          cleanup
  %3189 = extractvalue { ptr, i32 } %3188, 0
  store ptr %3189, ptr %6, align 8
  %3190 = extractvalue { ptr, i32 } %3188, 1
  store i32 %3190, ptr %7, align 4
  br label %3200

3191:                                             ; preds = %3184, %3182
  %3192 = landingpad { ptr, i32 }
          cleanup
  %3193 = extractvalue { ptr, i32 } %3192, 0
  store ptr %3193, ptr %6, align 8
  %3194 = extractvalue { ptr, i32 } %3192, 1
  store i32 %3194, ptr %7, align 4
  br label %3199

3195:                                             ; preds = %3185
  %3196 = landingpad { ptr, i32 }
          cleanup
  %3197 = extractvalue { ptr, i32 } %3196, 0
  store ptr %3197, ptr %6, align 8
  %3198 = extractvalue { ptr, i32 } %3196, 1
  store i32 %3198, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #10
  br label %3199

3199:                                             ; preds = %3195, %3191
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #10
  br label %3200

3200:                                             ; preds = %3199, %3187
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #10
  br label %3209

3201:                                             ; preds = %3186, %3165
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %376) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %376) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %382) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %383) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %384) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %385) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %385, ptr noundef @.str.231)
          to label %3202 unwind label %3211

3202:                                             ; preds = %3201
  invoke void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %384, ptr noundef nonnull align 4 dereferenceable(28) %385)
          to label %3203 unwind label %3211

3203:                                             ; preds = %3202
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %383, ptr noundef nonnull align 4 dereferenceable(28) %384, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3204 unwind label %3211

3204:                                             ; preds = %3203
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %382, ptr noundef @.str.262, ptr noundef @.str.338, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %383)
          to label %3205 unwind label %3215

3205:                                             ; preds = %3204
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %385) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %384) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %383) #10
  %3206 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %382)
          to label %3207 unwind label %3220

3207:                                             ; preds = %3205
  br i1 %3206, label %3208, label %3224

3208:                                             ; preds = %3207
  br label %3244

3209:                                             ; preds = %3200, %3177
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %376) #10
  br label %3210

3210:                                             ; preds = %3209, %3176
  call void @llvm.lifetime.end.p0(i64 16, ptr %376) #10
  br label %5344

3211:                                             ; preds = %3203, %3202, %3201
  %3212 = landingpad { ptr, i32 }
          cleanup
  %3213 = extractvalue { ptr, i32 } %3212, 0
  store ptr %3213, ptr %6, align 8
  %3214 = extractvalue { ptr, i32 } %3212, 1
  store i32 %3214, ptr %7, align 4
  br label %3219

3215:                                             ; preds = %3204
  %3216 = landingpad { ptr, i32 }
          cleanup
  %3217 = extractvalue { ptr, i32 } %3216, 0
  store ptr %3217, ptr %6, align 8
  %3218 = extractvalue { ptr, i32 } %3216, 1
  store i32 %3218, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #10
  br label %3219

3219:                                             ; preds = %3215, %3211
  call void @llvm.lifetime.end.p0(i64 28, ptr %385) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %384) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %383) #10
  br label %3254

3220:                                             ; preds = %3205
  %3221 = landingpad { ptr, i32 }
          cleanup
  %3222 = extractvalue { ptr, i32 } %3221, 0
  store ptr %3222, ptr %6, align 8
  %3223 = extractvalue { ptr, i32 } %3221, 1
  store i32 %3223, ptr %7, align 4
  br label %3253

3224:                                             ; preds = %3207
  call void @llvm.lifetime.start.p0(i64 8, ptr %386) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %3225 unwind label %3230

3225:                                             ; preds = %3224
  call void @llvm.lifetime.start.p0(i64 8, ptr %387) #10
  %3226 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %382)
          to label %3227 unwind label %3234

3227:                                             ; preds = %3225
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %387, i32 noundef 1, ptr noundef @.str.4, i32 noundef 340, ptr noundef %3226)
          to label %3228 unwind label %3234

3228:                                             ; preds = %3227
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %3229 unwind label %3238

3229:                                             ; preds = %3228
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #10
  br label %3244

3230:                                             ; preds = %3224
  %3231 = landingpad { ptr, i32 }
          cleanup
  %3232 = extractvalue { ptr, i32 } %3231, 0
  store ptr %3232, ptr %6, align 8
  %3233 = extractvalue { ptr, i32 } %3231, 1
  store i32 %3233, ptr %7, align 4
  br label %3243

3234:                                             ; preds = %3227, %3225
  %3235 = landingpad { ptr, i32 }
          cleanup
  %3236 = extractvalue { ptr, i32 } %3235, 0
  store ptr %3236, ptr %6, align 8
  %3237 = extractvalue { ptr, i32 } %3235, 1
  store i32 %3237, ptr %7, align 4
  br label %3242

3238:                                             ; preds = %3228
  %3239 = landingpad { ptr, i32 }
          cleanup
  %3240 = extractvalue { ptr, i32 } %3239, 0
  store ptr %3240, ptr %6, align 8
  %3241 = extractvalue { ptr, i32 } %3239, 1
  store i32 %3241, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #10
  br label %3242

3242:                                             ; preds = %3238, %3234
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #10
  br label %3243

3243:                                             ; preds = %3242, %3230
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #10
  br label %3253

3244:                                             ; preds = %3229, %3208
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %382) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %382) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %388) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %389) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %390) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %390, ptr noundef @.str.214)
          to label %3245 unwind label %3255

3245:                                             ; preds = %3244
  %3246 = invoke noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %390)
          to label %3247 unwind label %3255

3247:                                             ; preds = %3245
  %3248 = zext i1 %3246 to i8
  store i8 %3248, ptr %389, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %388, ptr noundef nonnull align 1 dereferenceable(1) %389, ptr noundef null)
          to label %3249 unwind label %3255

3249:                                             ; preds = %3247
  call void @llvm.lifetime.end.p0(i64 28, ptr %390) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #10
  %3250 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
          to label %3251 unwind label %3259

3251:                                             ; preds = %3249
  br i1 %3250, label %3252, label %3263

3252:                                             ; preds = %3251
  br label %3288

3253:                                             ; preds = %3243, %3220
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %382) #10
  br label %3254

3254:                                             ; preds = %3253, %3219
  call void @llvm.lifetime.end.p0(i64 16, ptr %382) #10
  br label %5344

3255:                                             ; preds = %3247, %3245, %3244
  %3256 = landingpad { ptr, i32 }
          cleanup
  %3257 = extractvalue { ptr, i32 } %3256, 0
  store ptr %3257, ptr %6, align 8
  %3258 = extractvalue { ptr, i32 } %3256, 1
  store i32 %3258, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %390) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %389) #10
  br label %3299

3259:                                             ; preds = %3249
  %3260 = landingpad { ptr, i32 }
          cleanup
  %3261 = extractvalue { ptr, i32 } %3260, 0
  store ptr %3261, ptr %6, align 8
  %3262 = extractvalue { ptr, i32 } %3260, 1
  store i32 %3262, ptr %7, align 4
  br label %3298

3263:                                             ; preds = %3251
  call void @llvm.lifetime.start.p0(i64 8, ptr %391) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %391)
          to label %3264 unwind label %3269

3264:                                             ; preds = %3263
  call void @llvm.lifetime.start.p0(i64 8, ptr %392) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %393) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %393, ptr noundef nonnull align 8 dereferenceable(16) %388, ptr noundef @.str.339, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3265 unwind label %3273

3265:                                             ; preds = %3264
  %3266 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %393) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %392, i32 noundef 1, ptr noundef @.str.4, i32 noundef 343, ptr noundef %3266)
          to label %3267 unwind label %3277

3267:                                             ; preds = %3265
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull align 8 dereferenceable(8) %391)
          to label %3268 unwind label %3281

3268:                                             ; preds = %3267
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %393) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %393) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %391) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %391) #10
  br label %3288

3269:                                             ; preds = %3263
  %3270 = landingpad { ptr, i32 }
          cleanup
  %3271 = extractvalue { ptr, i32 } %3270, 0
  store ptr %3271, ptr %6, align 8
  %3272 = extractvalue { ptr, i32 } %3270, 1
  store i32 %3272, ptr %7, align 4
  br label %3287

3273:                                             ; preds = %3264
  %3274 = landingpad { ptr, i32 }
          cleanup
  %3275 = extractvalue { ptr, i32 } %3274, 0
  store ptr %3275, ptr %6, align 8
  %3276 = extractvalue { ptr, i32 } %3274, 1
  store i32 %3276, ptr %7, align 4
  br label %3286

3277:                                             ; preds = %3265
  %3278 = landingpad { ptr, i32 }
          cleanup
  %3279 = extractvalue { ptr, i32 } %3278, 0
  store ptr %3279, ptr %6, align 8
  %3280 = extractvalue { ptr, i32 } %3278, 1
  store i32 %3280, ptr %7, align 4
  br label %3285

3281:                                             ; preds = %3267
  %3282 = landingpad { ptr, i32 }
          cleanup
  %3283 = extractvalue { ptr, i32 } %3282, 0
  store ptr %3283, ptr %6, align 8
  %3284 = extractvalue { ptr, i32 } %3282, 1
  store i32 %3284, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #10
  br label %3285

3285:                                             ; preds = %3281, %3277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %393) #10
  br label %3286

3286:                                             ; preds = %3285, %3273
  call void @llvm.lifetime.end.p0(i64 32, ptr %393) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %391) #10
  br label %3287

3287:                                             ; preds = %3286, %3269
  call void @llvm.lifetime.end.p0(i64 8, ptr %391) #10
  br label %3298

3288:                                             ; preds = %3268, %3252
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %388) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %388) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %394) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %395) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %396) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %396, ptr noundef @.str.218)
          to label %3289 unwind label %3300

3289:                                             ; preds = %3288
  %3290 = invoke noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %396)
          to label %3291 unwind label %3300

3291:                                             ; preds = %3289
  %3292 = xor i1 %3290, true
  %3293 = zext i1 %3292 to i8
  store i8 %3293, ptr %395, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %394, ptr noundef nonnull align 1 dereferenceable(1) %395, ptr noundef null)
          to label %3294 unwind label %3300

3294:                                             ; preds = %3291
  call void @llvm.lifetime.end.p0(i64 28, ptr %396) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %395) #10
  %3295 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %394)
          to label %3296 unwind label %3304

3296:                                             ; preds = %3294
  br i1 %3295, label %3297, label %3308

3297:                                             ; preds = %3296
  br label %3333

3298:                                             ; preds = %3287, %3259
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %388) #10
  br label %3299

3299:                                             ; preds = %3298, %3255
  call void @llvm.lifetime.end.p0(i64 16, ptr %388) #10
  br label %5344

3300:                                             ; preds = %3291, %3289, %3288
  %3301 = landingpad { ptr, i32 }
          cleanup
  %3302 = extractvalue { ptr, i32 } %3301, 0
  store ptr %3302, ptr %6, align 8
  %3303 = extractvalue { ptr, i32 } %3301, 1
  store i32 %3303, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %396) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %395) #10
  br label %3343

3304:                                             ; preds = %3294
  %3305 = landingpad { ptr, i32 }
          cleanup
  %3306 = extractvalue { ptr, i32 } %3305, 0
  store ptr %3306, ptr %6, align 8
  %3307 = extractvalue { ptr, i32 } %3305, 1
  store i32 %3307, ptr %7, align 4
  br label %3342

3308:                                             ; preds = %3296
  call void @llvm.lifetime.start.p0(i64 8, ptr %397) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %397)
          to label %3309 unwind label %3314

3309:                                             ; preds = %3308
  call void @llvm.lifetime.start.p0(i64 8, ptr %398) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %399) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %399, ptr noundef nonnull align 8 dereferenceable(16) %394, ptr noundef @.str.340, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3310 unwind label %3318

3310:                                             ; preds = %3309
  %3311 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %399) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %398, i32 noundef 1, ptr noundef @.str.4, i32 noundef 344, ptr noundef %3311)
          to label %3312 unwind label %3322

3312:                                             ; preds = %3310
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef nonnull align 8 dereferenceable(8) %397)
          to label %3313 unwind label %3326

3313:                                             ; preds = %3312
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %399) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %397) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #10
  br label %3333

3314:                                             ; preds = %3308
  %3315 = landingpad { ptr, i32 }
          cleanup
  %3316 = extractvalue { ptr, i32 } %3315, 0
  store ptr %3316, ptr %6, align 8
  %3317 = extractvalue { ptr, i32 } %3315, 1
  store i32 %3317, ptr %7, align 4
  br label %3332

3318:                                             ; preds = %3309
  %3319 = landingpad { ptr, i32 }
          cleanup
  %3320 = extractvalue { ptr, i32 } %3319, 0
  store ptr %3320, ptr %6, align 8
  %3321 = extractvalue { ptr, i32 } %3319, 1
  store i32 %3321, ptr %7, align 4
  br label %3331

3322:                                             ; preds = %3310
  %3323 = landingpad { ptr, i32 }
          cleanup
  %3324 = extractvalue { ptr, i32 } %3323, 0
  store ptr %3324, ptr %6, align 8
  %3325 = extractvalue { ptr, i32 } %3323, 1
  store i32 %3325, ptr %7, align 4
  br label %3330

3326:                                             ; preds = %3312
  %3327 = landingpad { ptr, i32 }
          cleanup
  %3328 = extractvalue { ptr, i32 } %3327, 0
  store ptr %3328, ptr %6, align 8
  %3329 = extractvalue { ptr, i32 } %3327, 1
  store i32 %3329, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #10
  br label %3330

3330:                                             ; preds = %3326, %3322
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #10
  br label %3331

3331:                                             ; preds = %3330, %3318
  call void @llvm.lifetime.end.p0(i64 32, ptr %399) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %397) #10
  br label %3332

3332:                                             ; preds = %3331, %3314
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #10
  br label %3342

3333:                                             ; preds = %3313, %3297
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %394) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %394) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %400) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %401) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %402) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %402, ptr noundef @.str.218)
          to label %3334 unwind label %3344

3334:                                             ; preds = %3333
  %3335 = invoke noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %402)
          to label %3336 unwind label %3344

3336:                                             ; preds = %3334
  %3337 = zext i1 %3335 to i8
  store i8 %3337, ptr %401, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %400, ptr noundef nonnull align 1 dereferenceable(1) %401, ptr noundef null)
          to label %3338 unwind label %3344

3338:                                             ; preds = %3336
  call void @llvm.lifetime.end.p0(i64 28, ptr %402) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %401) #10
  %3339 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %400)
          to label %3340 unwind label %3348

3340:                                             ; preds = %3338
  br i1 %3339, label %3341, label %3352

3341:                                             ; preds = %3340
  br label %3377

3342:                                             ; preds = %3332, %3304
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %394) #10
  br label %3343

3343:                                             ; preds = %3342, %3300
  call void @llvm.lifetime.end.p0(i64 16, ptr %394) #10
  br label %5344

3344:                                             ; preds = %3336, %3334, %3333
  %3345 = landingpad { ptr, i32 }
          cleanup
  %3346 = extractvalue { ptr, i32 } %3345, 0
  store ptr %3346, ptr %6, align 8
  %3347 = extractvalue { ptr, i32 } %3345, 1
  store i32 %3347, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %402) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %401) #10
  br label %3388

3348:                                             ; preds = %3338
  %3349 = landingpad { ptr, i32 }
          cleanup
  %3350 = extractvalue { ptr, i32 } %3349, 0
  store ptr %3350, ptr %6, align 8
  %3351 = extractvalue { ptr, i32 } %3349, 1
  store i32 %3351, ptr %7, align 4
  br label %3387

3352:                                             ; preds = %3340
  call void @llvm.lifetime.start.p0(i64 8, ptr %403) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %3353 unwind label %3358

3353:                                             ; preds = %3352
  call void @llvm.lifetime.start.p0(i64 8, ptr %404) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %405) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %405, ptr noundef nonnull align 8 dereferenceable(16) %400, ptr noundef @.str.341, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3354 unwind label %3362

3354:                                             ; preds = %3353
  %3355 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %405) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %404, i32 noundef 1, ptr noundef @.str.4, i32 noundef 346, ptr noundef %3355)
          to label %3356 unwind label %3366

3356:                                             ; preds = %3354
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %404, ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %3357 unwind label %3370

3357:                                             ; preds = %3356
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %405) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #10
  br label %3377

3358:                                             ; preds = %3352
  %3359 = landingpad { ptr, i32 }
          cleanup
  %3360 = extractvalue { ptr, i32 } %3359, 0
  store ptr %3360, ptr %6, align 8
  %3361 = extractvalue { ptr, i32 } %3359, 1
  store i32 %3361, ptr %7, align 4
  br label %3376

3362:                                             ; preds = %3353
  %3363 = landingpad { ptr, i32 }
          cleanup
  %3364 = extractvalue { ptr, i32 } %3363, 0
  store ptr %3364, ptr %6, align 8
  %3365 = extractvalue { ptr, i32 } %3363, 1
  store i32 %3365, ptr %7, align 4
  br label %3375

3366:                                             ; preds = %3354
  %3367 = landingpad { ptr, i32 }
          cleanup
  %3368 = extractvalue { ptr, i32 } %3367, 0
  store ptr %3368, ptr %6, align 8
  %3369 = extractvalue { ptr, i32 } %3367, 1
  store i32 %3369, ptr %7, align 4
  br label %3374

3370:                                             ; preds = %3356
  %3371 = landingpad { ptr, i32 }
          cleanup
  %3372 = extractvalue { ptr, i32 } %3371, 0
  store ptr %3372, ptr %6, align 8
  %3373 = extractvalue { ptr, i32 } %3371, 1
  store i32 %3373, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #10
  br label %3374

3374:                                             ; preds = %3370, %3366
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #10
  br label %3375

3375:                                             ; preds = %3374, %3362
  call void @llvm.lifetime.end.p0(i64 32, ptr %405) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #10
  br label %3376

3376:                                             ; preds = %3375, %3358
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #10
  br label %3387

3377:                                             ; preds = %3357, %3341
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %400) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %406) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %407) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %408) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %408, ptr noundef @.str.214)
          to label %3378 unwind label %3389

3378:                                             ; preds = %3377
  %3379 = invoke noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %408)
          to label %3380 unwind label %3389

3380:                                             ; preds = %3378
  %3381 = xor i1 %3379, true
  %3382 = zext i1 %3381 to i8
  store i8 %3382, ptr %407, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %406, ptr noundef nonnull align 1 dereferenceable(1) %407, ptr noundef null)
          to label %3383 unwind label %3389

3383:                                             ; preds = %3380
  call void @llvm.lifetime.end.p0(i64 28, ptr %408) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %407) #10
  %3384 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %406)
          to label %3385 unwind label %3393

3385:                                             ; preds = %3383
  br i1 %3384, label %3386, label %3397

3386:                                             ; preds = %3385
  br label %3422

3387:                                             ; preds = %3376, %3348
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400) #10
  br label %3388

3388:                                             ; preds = %3387, %3344
  call void @llvm.lifetime.end.p0(i64 16, ptr %400) #10
  br label %5344

3389:                                             ; preds = %3380, %3378, %3377
  %3390 = landingpad { ptr, i32 }
          cleanup
  %3391 = extractvalue { ptr, i32 } %3390, 0
  store ptr %3391, ptr %6, align 8
  %3392 = extractvalue { ptr, i32 } %3390, 1
  store i32 %3392, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %408) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %407) #10
  br label %3434

3393:                                             ; preds = %3383
  %3394 = landingpad { ptr, i32 }
          cleanup
  %3395 = extractvalue { ptr, i32 } %3394, 0
  store ptr %3395, ptr %6, align 8
  %3396 = extractvalue { ptr, i32 } %3394, 1
  store i32 %3396, ptr %7, align 4
  br label %3433

3397:                                             ; preds = %3385
  call void @llvm.lifetime.start.p0(i64 8, ptr %409) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %3398 unwind label %3403

3398:                                             ; preds = %3397
  call void @llvm.lifetime.start.p0(i64 8, ptr %410) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %411) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %411, ptr noundef nonnull align 8 dereferenceable(16) %406, ptr noundef @.str.342, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3399 unwind label %3407

3399:                                             ; preds = %3398
  %3400 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %411) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %410, i32 noundef 1, ptr noundef @.str.4, i32 noundef 347, ptr noundef %3400)
          to label %3401 unwind label %3411

3401:                                             ; preds = %3399
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %3402 unwind label %3415

3402:                                             ; preds = %3401
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %411) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #10
  br label %3422

3403:                                             ; preds = %3397
  %3404 = landingpad { ptr, i32 }
          cleanup
  %3405 = extractvalue { ptr, i32 } %3404, 0
  store ptr %3405, ptr %6, align 8
  %3406 = extractvalue { ptr, i32 } %3404, 1
  store i32 %3406, ptr %7, align 4
  br label %3421

3407:                                             ; preds = %3398
  %3408 = landingpad { ptr, i32 }
          cleanup
  %3409 = extractvalue { ptr, i32 } %3408, 0
  store ptr %3409, ptr %6, align 8
  %3410 = extractvalue { ptr, i32 } %3408, 1
  store i32 %3410, ptr %7, align 4
  br label %3420

3411:                                             ; preds = %3399
  %3412 = landingpad { ptr, i32 }
          cleanup
  %3413 = extractvalue { ptr, i32 } %3412, 0
  store ptr %3413, ptr %6, align 8
  %3414 = extractvalue { ptr, i32 } %3412, 1
  store i32 %3414, ptr %7, align 4
  br label %3419

3415:                                             ; preds = %3401
  %3416 = landingpad { ptr, i32 }
          cleanup
  %3417 = extractvalue { ptr, i32 } %3416, 0
  store ptr %3417, ptr %6, align 8
  %3418 = extractvalue { ptr, i32 } %3416, 1
  store i32 %3418, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #10
  br label %3419

3419:                                             ; preds = %3415, %3411
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #10
  br label %3420

3420:                                             ; preds = %3419, %3407
  call void @llvm.lifetime.end.p0(i64 32, ptr %411) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #10
  br label %3421

3421:                                             ; preds = %3420, %3403
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #10
  br label %3433

3422:                                             ; preds = %3402, %3386
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %406) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %406) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %412) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %413) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %414) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %414, ptr noundef @.str.10)
          to label %3423 unwind label %3435

3423:                                             ; preds = %3422
  %3424 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %414)
          to label %3425 unwind label %3435

3425:                                             ; preds = %3423
  %3426 = invoke noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3424)
          to label %3427 unwind label %3435

3427:                                             ; preds = %3425
  %3428 = zext i1 %3426 to i8
  store i8 %3428, ptr %413, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %412, ptr noundef nonnull align 1 dereferenceable(1) %413, ptr noundef null)
          to label %3429 unwind label %3435

3429:                                             ; preds = %3427
  call void @llvm.lifetime.end.p0(i64 28, ptr %414) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #10
  %3430 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %412)
          to label %3431 unwind label %3439

3431:                                             ; preds = %3429
  br i1 %3430, label %3432, label %3443

3432:                                             ; preds = %3431
  br label %3468

3433:                                             ; preds = %3421, %3393
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %406) #10
  br label %3434

3434:                                             ; preds = %3433, %3389
  call void @llvm.lifetime.end.p0(i64 16, ptr %406) #10
  br label %5344

3435:                                             ; preds = %3427, %3425, %3423, %3422
  %3436 = landingpad { ptr, i32 }
          cleanup
  %3437 = extractvalue { ptr, i32 } %3436, 0
  store ptr %3437, ptr %6, align 8
  %3438 = extractvalue { ptr, i32 } %3436, 1
  store i32 %3438, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %414) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #10
  br label %3481

3439:                                             ; preds = %3429
  %3440 = landingpad { ptr, i32 }
          cleanup
  %3441 = extractvalue { ptr, i32 } %3440, 0
  store ptr %3441, ptr %6, align 8
  %3442 = extractvalue { ptr, i32 } %3440, 1
  store i32 %3442, ptr %7, align 4
  br label %3480

3443:                                             ; preds = %3431
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415)
          to label %3444 unwind label %3449

3444:                                             ; preds = %3443
  call void @llvm.lifetime.start.p0(i64 8, ptr %416) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %417) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %417, ptr noundef nonnull align 8 dereferenceable(16) %412, ptr noundef @.str.343, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3445 unwind label %3453

3445:                                             ; preds = %3444
  %3446 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %417) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %416, i32 noundef 1, ptr noundef @.str.4, i32 noundef 349, ptr noundef %3446)
          to label %3447 unwind label %3457

3447:                                             ; preds = %3445
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %416, ptr noundef nonnull align 8 dereferenceable(8) %415)
          to label %3448 unwind label %3461

3448:                                             ; preds = %3447
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %417) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #10
  br label %3468

3449:                                             ; preds = %3443
  %3450 = landingpad { ptr, i32 }
          cleanup
  %3451 = extractvalue { ptr, i32 } %3450, 0
  store ptr %3451, ptr %6, align 8
  %3452 = extractvalue { ptr, i32 } %3450, 1
  store i32 %3452, ptr %7, align 4
  br label %3467

3453:                                             ; preds = %3444
  %3454 = landingpad { ptr, i32 }
          cleanup
  %3455 = extractvalue { ptr, i32 } %3454, 0
  store ptr %3455, ptr %6, align 8
  %3456 = extractvalue { ptr, i32 } %3454, 1
  store i32 %3456, ptr %7, align 4
  br label %3466

3457:                                             ; preds = %3445
  %3458 = landingpad { ptr, i32 }
          cleanup
  %3459 = extractvalue { ptr, i32 } %3458, 0
  store ptr %3459, ptr %6, align 8
  %3460 = extractvalue { ptr, i32 } %3458, 1
  store i32 %3460, ptr %7, align 4
  br label %3465

3461:                                             ; preds = %3447
  %3462 = landingpad { ptr, i32 }
          cleanup
  %3463 = extractvalue { ptr, i32 } %3462, 0
  store ptr %3463, ptr %6, align 8
  %3464 = extractvalue { ptr, i32 } %3462, 1
  store i32 %3464, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #10
  br label %3465

3465:                                             ; preds = %3461, %3457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #10
  br label %3466

3466:                                             ; preds = %3465, %3453
  call void @llvm.lifetime.end.p0(i64 32, ptr %417) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #10
  br label %3467

3467:                                             ; preds = %3466, %3449
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #10
  br label %3480

3468:                                             ; preds = %3448, %3432
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %412) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %412) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %418) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %419) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %420) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %420, ptr noundef @.str.344)
          to label %3469 unwind label %3482

3469:                                             ; preds = %3468
  %3470 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %420)
          to label %3471 unwind label %3482

3471:                                             ; preds = %3469
  %3472 = invoke noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3470)
          to label %3473 unwind label %3482

3473:                                             ; preds = %3471
  %3474 = xor i1 %3472, true
  %3475 = zext i1 %3474 to i8
  store i8 %3475, ptr %419, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %418, ptr noundef nonnull align 1 dereferenceable(1) %419, ptr noundef null)
          to label %3476 unwind label %3482

3476:                                             ; preds = %3473
  call void @llvm.lifetime.end.p0(i64 28, ptr %420) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %419) #10
  %3477 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %418)
          to label %3478 unwind label %3486

3478:                                             ; preds = %3476
  br i1 %3477, label %3479, label %3490

3479:                                             ; preds = %3478
  br label %3515

3480:                                             ; preds = %3467, %3439
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %412) #10
  br label %3481

3481:                                             ; preds = %3480, %3435
  call void @llvm.lifetime.end.p0(i64 16, ptr %412) #10
  br label %5344

3482:                                             ; preds = %3473, %3471, %3469, %3468
  %3483 = landingpad { ptr, i32 }
          cleanup
  %3484 = extractvalue { ptr, i32 } %3483, 0
  store ptr %3484, ptr %6, align 8
  %3485 = extractvalue { ptr, i32 } %3483, 1
  store i32 %3485, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %420) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %419) #10
  br label %3527

3486:                                             ; preds = %3476
  %3487 = landingpad { ptr, i32 }
          cleanup
  %3488 = extractvalue { ptr, i32 } %3487, 0
  store ptr %3488, ptr %6, align 8
  %3489 = extractvalue { ptr, i32 } %3487, 1
  store i32 %3489, ptr %7, align 4
  br label %3526

3490:                                             ; preds = %3478
  call void @llvm.lifetime.start.p0(i64 8, ptr %421) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %421)
          to label %3491 unwind label %3496

3491:                                             ; preds = %3490
  call void @llvm.lifetime.start.p0(i64 8, ptr %422) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %423) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %423, ptr noundef nonnull align 8 dereferenceable(16) %418, ptr noundef @.str.345, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3492 unwind label %3500

3492:                                             ; preds = %3491
  %3493 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %423) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %422, i32 noundef 1, ptr noundef @.str.4, i32 noundef 350, ptr noundef %3493)
          to label %3494 unwind label %3504

3494:                                             ; preds = %3492
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %422, ptr noundef nonnull align 8 dereferenceable(8) %421)
          to label %3495 unwind label %3508

3495:                                             ; preds = %3494
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %422) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %423) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %422) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %421) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #10
  br label %3515

3496:                                             ; preds = %3490
  %3497 = landingpad { ptr, i32 }
          cleanup
  %3498 = extractvalue { ptr, i32 } %3497, 0
  store ptr %3498, ptr %6, align 8
  %3499 = extractvalue { ptr, i32 } %3497, 1
  store i32 %3499, ptr %7, align 4
  br label %3514

3500:                                             ; preds = %3491
  %3501 = landingpad { ptr, i32 }
          cleanup
  %3502 = extractvalue { ptr, i32 } %3501, 0
  store ptr %3502, ptr %6, align 8
  %3503 = extractvalue { ptr, i32 } %3501, 1
  store i32 %3503, ptr %7, align 4
  br label %3513

3504:                                             ; preds = %3492
  %3505 = landingpad { ptr, i32 }
          cleanup
  %3506 = extractvalue { ptr, i32 } %3505, 0
  store ptr %3506, ptr %6, align 8
  %3507 = extractvalue { ptr, i32 } %3505, 1
  store i32 %3507, ptr %7, align 4
  br label %3512

3508:                                             ; preds = %3494
  %3509 = landingpad { ptr, i32 }
          cleanup
  %3510 = extractvalue { ptr, i32 } %3509, 0
  store ptr %3510, ptr %6, align 8
  %3511 = extractvalue { ptr, i32 } %3509, 1
  store i32 %3511, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %422) #10
  br label %3512

3512:                                             ; preds = %3508, %3504
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #10
  br label %3513

3513:                                             ; preds = %3512, %3500
  call void @llvm.lifetime.end.p0(i64 32, ptr %423) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %422) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %421) #10
  br label %3514

3514:                                             ; preds = %3513, %3496
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #10
  br label %3526

3515:                                             ; preds = %3495, %3479
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %418) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %418) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %424) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %425) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %426) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %426, ptr noundef @.str.344)
          to label %3516 unwind label %3528

3516:                                             ; preds = %3515
  %3517 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %426)
          to label %3518 unwind label %3528

3518:                                             ; preds = %3516
  %3519 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3517)
          to label %3520 unwind label %3528

3520:                                             ; preds = %3518
  %3521 = zext i1 %3519 to i8
  store i8 %3521, ptr %425, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %424, ptr noundef nonnull align 1 dereferenceable(1) %425, ptr noundef null)
          to label %3522 unwind label %3528

3522:                                             ; preds = %3520
  call void @llvm.lifetime.end.p0(i64 28, ptr %426) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %425) #10
  %3523 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %424)
          to label %3524 unwind label %3532

3524:                                             ; preds = %3522
  br i1 %3523, label %3525, label %3536

3525:                                             ; preds = %3524
  br label %3561

3526:                                             ; preds = %3514, %3486
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %418) #10
  br label %3527

3527:                                             ; preds = %3526, %3482
  call void @llvm.lifetime.end.p0(i64 16, ptr %418) #10
  br label %5344

3528:                                             ; preds = %3520, %3518, %3516, %3515
  %3529 = landingpad { ptr, i32 }
          cleanup
  %3530 = extractvalue { ptr, i32 } %3529, 0
  store ptr %3530, ptr %6, align 8
  %3531 = extractvalue { ptr, i32 } %3529, 1
  store i32 %3531, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %426) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %425) #10
  br label %3574

3532:                                             ; preds = %3522
  %3533 = landingpad { ptr, i32 }
          cleanup
  %3534 = extractvalue { ptr, i32 } %3533, 0
  store ptr %3534, ptr %6, align 8
  %3535 = extractvalue { ptr, i32 } %3533, 1
  store i32 %3535, ptr %7, align 4
  br label %3573

3536:                                             ; preds = %3524
  call void @llvm.lifetime.start.p0(i64 8, ptr %427) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %427)
          to label %3537 unwind label %3542

3537:                                             ; preds = %3536
  call void @llvm.lifetime.start.p0(i64 8, ptr %428) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %429) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %429, ptr noundef nonnull align 8 dereferenceable(16) %424, ptr noundef @.str.346, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3538 unwind label %3546

3538:                                             ; preds = %3537
  %3539 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %429) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %428, i32 noundef 1, ptr noundef @.str.4, i32 noundef 352, ptr noundef %3539)
          to label %3540 unwind label %3550

3540:                                             ; preds = %3538
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %428, ptr noundef nonnull align 8 dereferenceable(8) %427)
          to label %3541 unwind label %3554

3541:                                             ; preds = %3540
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %428) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %429) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %429) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %428) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %427) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %427) #10
  br label %3561

3542:                                             ; preds = %3536
  %3543 = landingpad { ptr, i32 }
          cleanup
  %3544 = extractvalue { ptr, i32 } %3543, 0
  store ptr %3544, ptr %6, align 8
  %3545 = extractvalue { ptr, i32 } %3543, 1
  store i32 %3545, ptr %7, align 4
  br label %3560

3546:                                             ; preds = %3537
  %3547 = landingpad { ptr, i32 }
          cleanup
  %3548 = extractvalue { ptr, i32 } %3547, 0
  store ptr %3548, ptr %6, align 8
  %3549 = extractvalue { ptr, i32 } %3547, 1
  store i32 %3549, ptr %7, align 4
  br label %3559

3550:                                             ; preds = %3538
  %3551 = landingpad { ptr, i32 }
          cleanup
  %3552 = extractvalue { ptr, i32 } %3551, 0
  store ptr %3552, ptr %6, align 8
  %3553 = extractvalue { ptr, i32 } %3551, 1
  store i32 %3553, ptr %7, align 4
  br label %3558

3554:                                             ; preds = %3540
  %3555 = landingpad { ptr, i32 }
          cleanup
  %3556 = extractvalue { ptr, i32 } %3555, 0
  store ptr %3556, ptr %6, align 8
  %3557 = extractvalue { ptr, i32 } %3555, 1
  store i32 %3557, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %428) #10
  br label %3558

3558:                                             ; preds = %3554, %3550
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %429) #10
  br label %3559

3559:                                             ; preds = %3558, %3546
  call void @llvm.lifetime.end.p0(i64 32, ptr %429) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %428) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %427) #10
  br label %3560

3560:                                             ; preds = %3559, %3542
  call void @llvm.lifetime.end.p0(i64 8, ptr %427) #10
  br label %3573

3561:                                             ; preds = %3541, %3525
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %424) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %424) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %430) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %431) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %432) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %432, ptr noundef @.str.10)
          to label %3562 unwind label %3575

3562:                                             ; preds = %3561
  %3563 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %432)
          to label %3564 unwind label %3575

3564:                                             ; preds = %3562
  %3565 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3563)
          to label %3566 unwind label %3575

3566:                                             ; preds = %3564
  %3567 = xor i1 %3565, true
  %3568 = zext i1 %3567 to i8
  store i8 %3568, ptr %431, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %430, ptr noundef nonnull align 1 dereferenceable(1) %431, ptr noundef null)
          to label %3569 unwind label %3575

3569:                                             ; preds = %3566
  call void @llvm.lifetime.end.p0(i64 28, ptr %432) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %431) #10
  %3570 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %430)
          to label %3571 unwind label %3579

3571:                                             ; preds = %3569
  br i1 %3570, label %3572, label %3583

3572:                                             ; preds = %3571
  br label %3608

3573:                                             ; preds = %3560, %3532
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %424) #10
  br label %3574

3574:                                             ; preds = %3573, %3528
  call void @llvm.lifetime.end.p0(i64 16, ptr %424) #10
  br label %5344

3575:                                             ; preds = %3566, %3564, %3562, %3561
  %3576 = landingpad { ptr, i32 }
          cleanup
  %3577 = extractvalue { ptr, i32 } %3576, 0
  store ptr %3577, ptr %6, align 8
  %3578 = extractvalue { ptr, i32 } %3576, 1
  store i32 %3578, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %432) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %431) #10
  br label %3620

3579:                                             ; preds = %3569
  %3580 = landingpad { ptr, i32 }
          cleanup
  %3581 = extractvalue { ptr, i32 } %3580, 0
  store ptr %3581, ptr %6, align 8
  %3582 = extractvalue { ptr, i32 } %3580, 1
  store i32 %3582, ptr %7, align 4
  br label %3619

3583:                                             ; preds = %3571
  call void @llvm.lifetime.start.p0(i64 8, ptr %433) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %3584 unwind label %3589

3584:                                             ; preds = %3583
  call void @llvm.lifetime.start.p0(i64 8, ptr %434) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %435) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %435, ptr noundef nonnull align 8 dereferenceable(16) %430, ptr noundef @.str.347, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3585 unwind label %3593

3585:                                             ; preds = %3584
  %3586 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %435) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %434, i32 noundef 1, ptr noundef @.str.4, i32 noundef 353, ptr noundef %3586)
          to label %3587 unwind label %3597

3587:                                             ; preds = %3585
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %3588 unwind label %3601

3588:                                             ; preds = %3587
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %435) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %435) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %433) #10
  br label %3608

3589:                                             ; preds = %3583
  %3590 = landingpad { ptr, i32 }
          cleanup
  %3591 = extractvalue { ptr, i32 } %3590, 0
  store ptr %3591, ptr %6, align 8
  %3592 = extractvalue { ptr, i32 } %3590, 1
  store i32 %3592, ptr %7, align 4
  br label %3607

3593:                                             ; preds = %3584
  %3594 = landingpad { ptr, i32 }
          cleanup
  %3595 = extractvalue { ptr, i32 } %3594, 0
  store ptr %3595, ptr %6, align 8
  %3596 = extractvalue { ptr, i32 } %3594, 1
  store i32 %3596, ptr %7, align 4
  br label %3606

3597:                                             ; preds = %3585
  %3598 = landingpad { ptr, i32 }
          cleanup
  %3599 = extractvalue { ptr, i32 } %3598, 0
  store ptr %3599, ptr %6, align 8
  %3600 = extractvalue { ptr, i32 } %3598, 1
  store i32 %3600, ptr %7, align 4
  br label %3605

3601:                                             ; preds = %3587
  %3602 = landingpad { ptr, i32 }
          cleanup
  %3603 = extractvalue { ptr, i32 } %3602, 0
  store ptr %3603, ptr %6, align 8
  %3604 = extractvalue { ptr, i32 } %3602, 1
  store i32 %3604, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #10
  br label %3605

3605:                                             ; preds = %3601, %3597
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %435) #10
  br label %3606

3606:                                             ; preds = %3605, %3593
  call void @llvm.lifetime.end.p0(i64 32, ptr %435) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #10
  br label %3607

3607:                                             ; preds = %3606, %3589
  call void @llvm.lifetime.end.p0(i64 8, ptr %433) #10
  br label %3619

3608:                                             ; preds = %3588, %3572
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %430) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %436) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %437) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %438) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %438, ptr noundef @.str.348)
          to label %3609 unwind label %3621

3609:                                             ; preds = %3608
  %3610 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %438)
          to label %3611 unwind label %3621

3611:                                             ; preds = %3609
  %3612 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3610)
          to label %3613 unwind label %3621

3613:                                             ; preds = %3611
  %3614 = zext i1 %3612 to i8
  store i8 %3614, ptr %437, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %436, ptr noundef nonnull align 1 dereferenceable(1) %437, ptr noundef null)
          to label %3615 unwind label %3621

3615:                                             ; preds = %3613
  call void @llvm.lifetime.end.p0(i64 28, ptr %438) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %437) #10
  %3616 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %436)
          to label %3617 unwind label %3625

3617:                                             ; preds = %3615
  br i1 %3616, label %3618, label %3629

3618:                                             ; preds = %3617
  br label %3654

3619:                                             ; preds = %3607, %3579
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %430) #10
  br label %3620

3620:                                             ; preds = %3619, %3575
  call void @llvm.lifetime.end.p0(i64 16, ptr %430) #10
  br label %5344

3621:                                             ; preds = %3613, %3611, %3609, %3608
  %3622 = landingpad { ptr, i32 }
          cleanup
  %3623 = extractvalue { ptr, i32 } %3622, 0
  store ptr %3623, ptr %6, align 8
  %3624 = extractvalue { ptr, i32 } %3622, 1
  store i32 %3624, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %438) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %437) #10
  br label %3667

3625:                                             ; preds = %3615
  %3626 = landingpad { ptr, i32 }
          cleanup
  %3627 = extractvalue { ptr, i32 } %3626, 0
  store ptr %3627, ptr %6, align 8
  %3628 = extractvalue { ptr, i32 } %3626, 1
  store i32 %3628, ptr %7, align 4
  br label %3666

3629:                                             ; preds = %3617
  call void @llvm.lifetime.start.p0(i64 8, ptr %439) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %439)
          to label %3630 unwind label %3635

3630:                                             ; preds = %3629
  call void @llvm.lifetime.start.p0(i64 8, ptr %440) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %441) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %441, ptr noundef nonnull align 8 dereferenceable(16) %436, ptr noundef @.str.349, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3631 unwind label %3639

3631:                                             ; preds = %3630
  %3632 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %441) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %440, i32 noundef 1, ptr noundef @.str.4, i32 noundef 355, ptr noundef %3632)
          to label %3633 unwind label %3643

3633:                                             ; preds = %3631
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull align 8 dereferenceable(8) %439)
          to label %3634 unwind label %3647

3634:                                             ; preds = %3633
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %441) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #10
  br label %3654

3635:                                             ; preds = %3629
  %3636 = landingpad { ptr, i32 }
          cleanup
  %3637 = extractvalue { ptr, i32 } %3636, 0
  store ptr %3637, ptr %6, align 8
  %3638 = extractvalue { ptr, i32 } %3636, 1
  store i32 %3638, ptr %7, align 4
  br label %3653

3639:                                             ; preds = %3630
  %3640 = landingpad { ptr, i32 }
          cleanup
  %3641 = extractvalue { ptr, i32 } %3640, 0
  store ptr %3641, ptr %6, align 8
  %3642 = extractvalue { ptr, i32 } %3640, 1
  store i32 %3642, ptr %7, align 4
  br label %3652

3643:                                             ; preds = %3631
  %3644 = landingpad { ptr, i32 }
          cleanup
  %3645 = extractvalue { ptr, i32 } %3644, 0
  store ptr %3645, ptr %6, align 8
  %3646 = extractvalue { ptr, i32 } %3644, 1
  store i32 %3646, ptr %7, align 4
  br label %3651

3647:                                             ; preds = %3633
  %3648 = landingpad { ptr, i32 }
          cleanup
  %3649 = extractvalue { ptr, i32 } %3648, 0
  store ptr %3649, ptr %6, align 8
  %3650 = extractvalue { ptr, i32 } %3648, 1
  store i32 %3650, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #10
  br label %3651

3651:                                             ; preds = %3647, %3643
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #10
  br label %3652

3652:                                             ; preds = %3651, %3639
  call void @llvm.lifetime.end.p0(i64 32, ptr %441) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #10
  br label %3653

3653:                                             ; preds = %3652, %3635
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #10
  br label %3666

3654:                                             ; preds = %3634, %3618
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %436) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %436) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %442) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %443) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %444) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %444, ptr noundef @.str.10)
          to label %3655 unwind label %3668

3655:                                             ; preds = %3654
  %3656 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %444)
          to label %3657 unwind label %3668

3657:                                             ; preds = %3655
  %3658 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %3656)
          to label %3659 unwind label %3668

3659:                                             ; preds = %3657
  %3660 = xor i1 %3658, true
  %3661 = zext i1 %3660 to i8
  store i8 %3661, ptr %443, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %442, ptr noundef nonnull align 1 dereferenceable(1) %443, ptr noundef null)
          to label %3662 unwind label %3668

3662:                                             ; preds = %3659
  call void @llvm.lifetime.end.p0(i64 28, ptr %444) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %443) #10
  %3663 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %442)
          to label %3664 unwind label %3672

3664:                                             ; preds = %3662
  br i1 %3663, label %3665, label %3676

3665:                                             ; preds = %3664
  br label %3701

3666:                                             ; preds = %3653, %3625
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %436) #10
  br label %3667

3667:                                             ; preds = %3666, %3621
  call void @llvm.lifetime.end.p0(i64 16, ptr %436) #10
  br label %5344

3668:                                             ; preds = %3659, %3657, %3655, %3654
  %3669 = landingpad { ptr, i32 }
          cleanup
  %3670 = extractvalue { ptr, i32 } %3669, 0
  store ptr %3670, ptr %6, align 8
  %3671 = extractvalue { ptr, i32 } %3669, 1
  store i32 %3671, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %444) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %443) #10
  br label %3713

3672:                                             ; preds = %3662
  %3673 = landingpad { ptr, i32 }
          cleanup
  %3674 = extractvalue { ptr, i32 } %3673, 0
  store ptr %3674, ptr %6, align 8
  %3675 = extractvalue { ptr, i32 } %3673, 1
  store i32 %3675, ptr %7, align 4
  br label %3712

3676:                                             ; preds = %3664
  call void @llvm.lifetime.start.p0(i64 8, ptr %445) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %445)
          to label %3677 unwind label %3682

3677:                                             ; preds = %3676
  call void @llvm.lifetime.start.p0(i64 8, ptr %446) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %447) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %447, ptr noundef nonnull align 8 dereferenceable(16) %442, ptr noundef @.str.350, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3678 unwind label %3686

3678:                                             ; preds = %3677
  %3679 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %447) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %446, i32 noundef 1, ptr noundef @.str.4, i32 noundef 356, ptr noundef %3679)
          to label %3680 unwind label %3690

3680:                                             ; preds = %3678
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %446, ptr noundef nonnull align 8 dereferenceable(8) %445)
          to label %3681 unwind label %3694

3681:                                             ; preds = %3680
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %446) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %447) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %446) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %445) #10
  br label %3701

3682:                                             ; preds = %3676
  %3683 = landingpad { ptr, i32 }
          cleanup
  %3684 = extractvalue { ptr, i32 } %3683, 0
  store ptr %3684, ptr %6, align 8
  %3685 = extractvalue { ptr, i32 } %3683, 1
  store i32 %3685, ptr %7, align 4
  br label %3700

3686:                                             ; preds = %3677
  %3687 = landingpad { ptr, i32 }
          cleanup
  %3688 = extractvalue { ptr, i32 } %3687, 0
  store ptr %3688, ptr %6, align 8
  %3689 = extractvalue { ptr, i32 } %3687, 1
  store i32 %3689, ptr %7, align 4
  br label %3699

3690:                                             ; preds = %3678
  %3691 = landingpad { ptr, i32 }
          cleanup
  %3692 = extractvalue { ptr, i32 } %3691, 0
  store ptr %3692, ptr %6, align 8
  %3693 = extractvalue { ptr, i32 } %3691, 1
  store i32 %3693, ptr %7, align 4
  br label %3698

3694:                                             ; preds = %3680
  %3695 = landingpad { ptr, i32 }
          cleanup
  %3696 = extractvalue { ptr, i32 } %3695, 0
  store ptr %3696, ptr %6, align 8
  %3697 = extractvalue { ptr, i32 } %3695, 1
  store i32 %3697, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %446) #10
  br label %3698

3698:                                             ; preds = %3694, %3690
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #10
  br label %3699

3699:                                             ; preds = %3698, %3686
  call void @llvm.lifetime.end.p0(i64 32, ptr %447) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %446) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #10
  br label %3700

3700:                                             ; preds = %3699, %3682
  call void @llvm.lifetime.end.p0(i64 8, ptr %445) #10
  br label %3712

3701:                                             ; preds = %3681, %3665
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %442) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %442) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %448) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %449) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %450) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %450, ptr noundef @.str.351)
          to label %3702 unwind label %3714

3702:                                             ; preds = %3701
  %3703 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %450)
          to label %3704 unwind label %3714

3704:                                             ; preds = %3702
  %3705 = invoke noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24) %3703)
          to label %3706 unwind label %3714

3706:                                             ; preds = %3704
  %3707 = zext i1 %3705 to i8
  store i8 %3707, ptr %449, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull align 1 dereferenceable(1) %449, ptr noundef null)
          to label %3708 unwind label %3714

3708:                                             ; preds = %3706
  call void @llvm.lifetime.end.p0(i64 28, ptr %450) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %449) #10
  %3709 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %448)
          to label %3710 unwind label %3718

3710:                                             ; preds = %3708
  br i1 %3709, label %3711, label %3722

3711:                                             ; preds = %3710
  br label %3747

3712:                                             ; preds = %3700, %3672
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %442) #10
  br label %3713

3713:                                             ; preds = %3712, %3668
  call void @llvm.lifetime.end.p0(i64 16, ptr %442) #10
  br label %5344

3714:                                             ; preds = %3706, %3704, %3702, %3701
  %3715 = landingpad { ptr, i32 }
          cleanup
  %3716 = extractvalue { ptr, i32 } %3715, 0
  store ptr %3716, ptr %6, align 8
  %3717 = extractvalue { ptr, i32 } %3715, 1
  store i32 %3717, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %450) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %449) #10
  br label %3760

3718:                                             ; preds = %3708
  %3719 = landingpad { ptr, i32 }
          cleanup
  %3720 = extractvalue { ptr, i32 } %3719, 0
  store ptr %3720, ptr %6, align 8
  %3721 = extractvalue { ptr, i32 } %3719, 1
  store i32 %3721, ptr %7, align 4
  br label %3759

3722:                                             ; preds = %3710
  call void @llvm.lifetime.start.p0(i64 8, ptr %451) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %451)
          to label %3723 unwind label %3728

3723:                                             ; preds = %3722
  call void @llvm.lifetime.start.p0(i64 8, ptr %452) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %453) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %453, ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef @.str.352, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3724 unwind label %3732

3724:                                             ; preds = %3723
  %3725 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %453) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %452, i32 noundef 1, ptr noundef @.str.4, i32 noundef 358, ptr noundef %3725)
          to label %3726 unwind label %3736

3726:                                             ; preds = %3724
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef nonnull align 8 dereferenceable(8) %451)
          to label %3727 unwind label %3740

3727:                                             ; preds = %3726
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %453) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %452) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %451) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %451) #10
  br label %3747

3728:                                             ; preds = %3722
  %3729 = landingpad { ptr, i32 }
          cleanup
  %3730 = extractvalue { ptr, i32 } %3729, 0
  store ptr %3730, ptr %6, align 8
  %3731 = extractvalue { ptr, i32 } %3729, 1
  store i32 %3731, ptr %7, align 4
  br label %3746

3732:                                             ; preds = %3723
  %3733 = landingpad { ptr, i32 }
          cleanup
  %3734 = extractvalue { ptr, i32 } %3733, 0
  store ptr %3734, ptr %6, align 8
  %3735 = extractvalue { ptr, i32 } %3733, 1
  store i32 %3735, ptr %7, align 4
  br label %3745

3736:                                             ; preds = %3724
  %3737 = landingpad { ptr, i32 }
          cleanup
  %3738 = extractvalue { ptr, i32 } %3737, 0
  store ptr %3738, ptr %6, align 8
  %3739 = extractvalue { ptr, i32 } %3737, 1
  store i32 %3739, ptr %7, align 4
  br label %3744

3740:                                             ; preds = %3726
  %3741 = landingpad { ptr, i32 }
          cleanup
  %3742 = extractvalue { ptr, i32 } %3741, 0
  store ptr %3742, ptr %6, align 8
  %3743 = extractvalue { ptr, i32 } %3741, 1
  store i32 %3743, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #10
  br label %3744

3744:                                             ; preds = %3740, %3736
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #10
  br label %3745

3745:                                             ; preds = %3744, %3732
  call void @llvm.lifetime.end.p0(i64 32, ptr %453) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %452) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %451) #10
  br label %3746

3746:                                             ; preds = %3745, %3728
  call void @llvm.lifetime.end.p0(i64 8, ptr %451) #10
  br label %3759

3747:                                             ; preds = %3727, %3711
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %448) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %448) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %454) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %455) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %456) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %456, ptr noundef @.str.353)
          to label %3748 unwind label %3761

3748:                                             ; preds = %3747
  %3749 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %456)
          to label %3750 unwind label %3761

3750:                                             ; preds = %3748
  %3751 = invoke noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24) %3749)
          to label %3752 unwind label %3761

3752:                                             ; preds = %3750
  %3753 = xor i1 %3751, true
  %3754 = zext i1 %3753 to i8
  store i8 %3754, ptr %455, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %454, ptr noundef nonnull align 1 dereferenceable(1) %455, ptr noundef null)
          to label %3755 unwind label %3761

3755:                                             ; preds = %3752
  call void @llvm.lifetime.end.p0(i64 28, ptr %456) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %455) #10
  %3756 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %454)
          to label %3757 unwind label %3765

3757:                                             ; preds = %3755
  br i1 %3756, label %3758, label %3769

3758:                                             ; preds = %3757
  br label %3794

3759:                                             ; preds = %3746, %3718
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %448) #10
  br label %3760

3760:                                             ; preds = %3759, %3714
  call void @llvm.lifetime.end.p0(i64 16, ptr %448) #10
  br label %5344

3761:                                             ; preds = %3752, %3750, %3748, %3747
  %3762 = landingpad { ptr, i32 }
          cleanup
  %3763 = extractvalue { ptr, i32 } %3762, 0
  store ptr %3763, ptr %6, align 8
  %3764 = extractvalue { ptr, i32 } %3762, 1
  store i32 %3764, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %456) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %455) #10
  br label %3806

3765:                                             ; preds = %3755
  %3766 = landingpad { ptr, i32 }
          cleanup
  %3767 = extractvalue { ptr, i32 } %3766, 0
  store ptr %3767, ptr %6, align 8
  %3768 = extractvalue { ptr, i32 } %3766, 1
  store i32 %3768, ptr %7, align 4
  br label %3805

3769:                                             ; preds = %3757
  call void @llvm.lifetime.start.p0(i64 8, ptr %457) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %3770 unwind label %3775

3770:                                             ; preds = %3769
  call void @llvm.lifetime.start.p0(i64 8, ptr %458) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %459) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %459, ptr noundef nonnull align 8 dereferenceable(16) %454, ptr noundef @.str.354, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3771 unwind label %3779

3771:                                             ; preds = %3770
  %3772 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %459) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %458, i32 noundef 1, ptr noundef @.str.4, i32 noundef 359, ptr noundef %3772)
          to label %3773 unwind label %3783

3773:                                             ; preds = %3771
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %3774 unwind label %3787

3774:                                             ; preds = %3773
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %459) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %458) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %457) #10
  br label %3794

3775:                                             ; preds = %3769
  %3776 = landingpad { ptr, i32 }
          cleanup
  %3777 = extractvalue { ptr, i32 } %3776, 0
  store ptr %3777, ptr %6, align 8
  %3778 = extractvalue { ptr, i32 } %3776, 1
  store i32 %3778, ptr %7, align 4
  br label %3793

3779:                                             ; preds = %3770
  %3780 = landingpad { ptr, i32 }
          cleanup
  %3781 = extractvalue { ptr, i32 } %3780, 0
  store ptr %3781, ptr %6, align 8
  %3782 = extractvalue { ptr, i32 } %3780, 1
  store i32 %3782, ptr %7, align 4
  br label %3792

3783:                                             ; preds = %3771
  %3784 = landingpad { ptr, i32 }
          cleanup
  %3785 = extractvalue { ptr, i32 } %3784, 0
  store ptr %3785, ptr %6, align 8
  %3786 = extractvalue { ptr, i32 } %3784, 1
  store i32 %3786, ptr %7, align 4
  br label %3791

3787:                                             ; preds = %3773
  %3788 = landingpad { ptr, i32 }
          cleanup
  %3789 = extractvalue { ptr, i32 } %3788, 0
  store ptr %3789, ptr %6, align 8
  %3790 = extractvalue { ptr, i32 } %3788, 1
  store i32 %3790, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #10
  br label %3791

3791:                                             ; preds = %3787, %3783
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #10
  br label %3792

3792:                                             ; preds = %3791, %3779
  call void @llvm.lifetime.end.p0(i64 32, ptr %459) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %458) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #10
  br label %3793

3793:                                             ; preds = %3792, %3775
  call void @llvm.lifetime.end.p0(i64 8, ptr %457) #10
  br label %3805

3794:                                             ; preds = %3774, %3758
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %454) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %454) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %460) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %461) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %462) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %462, ptr noundef @.str.355)
          to label %3795 unwind label %3807

3795:                                             ; preds = %3794
  %3796 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %462)
          to label %3797 unwind label %3807

3797:                                             ; preds = %3795
  %3798 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %3796)
          to label %3799 unwind label %3807

3799:                                             ; preds = %3797
  %3800 = zext i1 %3798 to i8
  store i8 %3800, ptr %461, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %460, ptr noundef nonnull align 1 dereferenceable(1) %461, ptr noundef null)
          to label %3801 unwind label %3807

3801:                                             ; preds = %3799
  call void @llvm.lifetime.end.p0(i64 28, ptr %462) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %461) #10
  %3802 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %460)
          to label %3803 unwind label %3811

3803:                                             ; preds = %3801
  br i1 %3802, label %3804, label %3815

3804:                                             ; preds = %3803
  br label %3840

3805:                                             ; preds = %3793, %3765
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %454) #10
  br label %3806

3806:                                             ; preds = %3805, %3761
  call void @llvm.lifetime.end.p0(i64 16, ptr %454) #10
  br label %5344

3807:                                             ; preds = %3799, %3797, %3795, %3794
  %3808 = landingpad { ptr, i32 }
          cleanup
  %3809 = extractvalue { ptr, i32 } %3808, 0
  store ptr %3809, ptr %6, align 8
  %3810 = extractvalue { ptr, i32 } %3808, 1
  store i32 %3810, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %462) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %461) #10
  br label %3853

3811:                                             ; preds = %3801
  %3812 = landingpad { ptr, i32 }
          cleanup
  %3813 = extractvalue { ptr, i32 } %3812, 0
  store ptr %3813, ptr %6, align 8
  %3814 = extractvalue { ptr, i32 } %3812, 1
  store i32 %3814, ptr %7, align 4
  br label %3852

3815:                                             ; preds = %3803
  call void @llvm.lifetime.start.p0(i64 8, ptr %463) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %463)
          to label %3816 unwind label %3821

3816:                                             ; preds = %3815
  call void @llvm.lifetime.start.p0(i64 8, ptr %464) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %465) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %465, ptr noundef nonnull align 8 dereferenceable(16) %460, ptr noundef @.str.356, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3817 unwind label %3825

3817:                                             ; preds = %3816
  %3818 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %465) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %464, i32 noundef 1, ptr noundef @.str.4, i32 noundef 361, ptr noundef %3818)
          to label %3819 unwind label %3829

3819:                                             ; preds = %3817
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef nonnull align 8 dereferenceable(8) %463)
          to label %3820 unwind label %3833

3820:                                             ; preds = %3819
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %465) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %465) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %463) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %463) #10
  br label %3840

3821:                                             ; preds = %3815
  %3822 = landingpad { ptr, i32 }
          cleanup
  %3823 = extractvalue { ptr, i32 } %3822, 0
  store ptr %3823, ptr %6, align 8
  %3824 = extractvalue { ptr, i32 } %3822, 1
  store i32 %3824, ptr %7, align 4
  br label %3839

3825:                                             ; preds = %3816
  %3826 = landingpad { ptr, i32 }
          cleanup
  %3827 = extractvalue { ptr, i32 } %3826, 0
  store ptr %3827, ptr %6, align 8
  %3828 = extractvalue { ptr, i32 } %3826, 1
  store i32 %3828, ptr %7, align 4
  br label %3838

3829:                                             ; preds = %3817
  %3830 = landingpad { ptr, i32 }
          cleanup
  %3831 = extractvalue { ptr, i32 } %3830, 0
  store ptr %3831, ptr %6, align 8
  %3832 = extractvalue { ptr, i32 } %3830, 1
  store i32 %3832, ptr %7, align 4
  br label %3837

3833:                                             ; preds = %3819
  %3834 = landingpad { ptr, i32 }
          cleanup
  %3835 = extractvalue { ptr, i32 } %3834, 0
  store ptr %3835, ptr %6, align 8
  %3836 = extractvalue { ptr, i32 } %3834, 1
  store i32 %3836, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #10
  br label %3837

3837:                                             ; preds = %3833, %3829
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %465) #10
  br label %3838

3838:                                             ; preds = %3837, %3825
  call void @llvm.lifetime.end.p0(i64 32, ptr %465) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %463) #10
  br label %3839

3839:                                             ; preds = %3838, %3821
  call void @llvm.lifetime.end.p0(i64 8, ptr %463) #10
  br label %3852

3840:                                             ; preds = %3820, %3804
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %460) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %466) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %467) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %468) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %468, ptr noundef @.str.351)
          to label %3841 unwind label %3854

3841:                                             ; preds = %3840
  %3842 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %468)
          to label %3843 unwind label %3854

3843:                                             ; preds = %3841
  %3844 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %3842)
          to label %3845 unwind label %3854

3845:                                             ; preds = %3843
  %3846 = xor i1 %3844, true
  %3847 = zext i1 %3846 to i8
  store i8 %3847, ptr %467, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef nonnull align 1 dereferenceable(1) %467, ptr noundef null)
          to label %3848 unwind label %3854

3848:                                             ; preds = %3845
  call void @llvm.lifetime.end.p0(i64 28, ptr %468) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %467) #10
  %3849 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %466)
          to label %3850 unwind label %3858

3850:                                             ; preds = %3848
  br i1 %3849, label %3851, label %3862

3851:                                             ; preds = %3850
  br label %3887

3852:                                             ; preds = %3839, %3811
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %460) #10
  br label %3853

3853:                                             ; preds = %3852, %3807
  call void @llvm.lifetime.end.p0(i64 16, ptr %460) #10
  br label %5344

3854:                                             ; preds = %3845, %3843, %3841, %3840
  %3855 = landingpad { ptr, i32 }
          cleanup
  %3856 = extractvalue { ptr, i32 } %3855, 0
  store ptr %3856, ptr %6, align 8
  %3857 = extractvalue { ptr, i32 } %3855, 1
  store i32 %3857, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %468) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %467) #10
  br label %3899

3858:                                             ; preds = %3848
  %3859 = landingpad { ptr, i32 }
          cleanup
  %3860 = extractvalue { ptr, i32 } %3859, 0
  store ptr %3860, ptr %6, align 8
  %3861 = extractvalue { ptr, i32 } %3859, 1
  store i32 %3861, ptr %7, align 4
  br label %3898

3862:                                             ; preds = %3850
  call void @llvm.lifetime.start.p0(i64 8, ptr %469) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %3863 unwind label %3868

3863:                                             ; preds = %3862
  call void @llvm.lifetime.start.p0(i64 8, ptr %470) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %471) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %471, ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef @.str.357, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3864 unwind label %3872

3864:                                             ; preds = %3863
  %3865 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %471) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %470, i32 noundef 1, ptr noundef @.str.4, i32 noundef 362, ptr noundef %3865)
          to label %3866 unwind label %3876

3866:                                             ; preds = %3864
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %3867 unwind label %3880

3867:                                             ; preds = %3866
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %470) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %469) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #10
  br label %3887

3868:                                             ; preds = %3862
  %3869 = landingpad { ptr, i32 }
          cleanup
  %3870 = extractvalue { ptr, i32 } %3869, 0
  store ptr %3870, ptr %6, align 8
  %3871 = extractvalue { ptr, i32 } %3869, 1
  store i32 %3871, ptr %7, align 4
  br label %3886

3872:                                             ; preds = %3863
  %3873 = landingpad { ptr, i32 }
          cleanup
  %3874 = extractvalue { ptr, i32 } %3873, 0
  store ptr %3874, ptr %6, align 8
  %3875 = extractvalue { ptr, i32 } %3873, 1
  store i32 %3875, ptr %7, align 4
  br label %3885

3876:                                             ; preds = %3864
  %3877 = landingpad { ptr, i32 }
          cleanup
  %3878 = extractvalue { ptr, i32 } %3877, 0
  store ptr %3878, ptr %6, align 8
  %3879 = extractvalue { ptr, i32 } %3877, 1
  store i32 %3879, ptr %7, align 4
  br label %3884

3880:                                             ; preds = %3866
  %3881 = landingpad { ptr, i32 }
          cleanup
  %3882 = extractvalue { ptr, i32 } %3881, 0
  store ptr %3882, ptr %6, align 8
  %3883 = extractvalue { ptr, i32 } %3881, 1
  store i32 %3883, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %470) #10
  br label %3884

3884:                                             ; preds = %3880, %3876
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %471) #10
  br label %3885

3885:                                             ; preds = %3884, %3872
  call void @llvm.lifetime.end.p0(i64 32, ptr %471) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %469) #10
  br label %3886

3886:                                             ; preds = %3885, %3868
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #10
  br label %3898

3887:                                             ; preds = %3867, %3851
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %466) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %466) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %472) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %473) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %474) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %474, ptr noundef @.str.355)
          to label %3888 unwind label %3900

3888:                                             ; preds = %3887
  %3889 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %474)
          to label %3890 unwind label %3900

3890:                                             ; preds = %3888
  %3891 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %3889)
          to label %3892 unwind label %3900

3892:                                             ; preds = %3890
  %3893 = zext i1 %3891 to i8
  store i8 %3893, ptr %473, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef nonnull align 1 dereferenceable(1) %473, ptr noundef null)
          to label %3894 unwind label %3900

3894:                                             ; preds = %3892
  call void @llvm.lifetime.end.p0(i64 28, ptr %474) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %473) #10
  %3895 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %472)
          to label %3896 unwind label %3904

3896:                                             ; preds = %3894
  br i1 %3895, label %3897, label %3908

3897:                                             ; preds = %3896
  br label %3933

3898:                                             ; preds = %3886, %3858
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %466) #10
  br label %3899

3899:                                             ; preds = %3898, %3854
  call void @llvm.lifetime.end.p0(i64 16, ptr %466) #10
  br label %5344

3900:                                             ; preds = %3892, %3890, %3888, %3887
  %3901 = landingpad { ptr, i32 }
          cleanup
  %3902 = extractvalue { ptr, i32 } %3901, 0
  store ptr %3902, ptr %6, align 8
  %3903 = extractvalue { ptr, i32 } %3901, 1
  store i32 %3903, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %474) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %473) #10
  br label %3946

3904:                                             ; preds = %3894
  %3905 = landingpad { ptr, i32 }
          cleanup
  %3906 = extractvalue { ptr, i32 } %3905, 0
  store ptr %3906, ptr %6, align 8
  %3907 = extractvalue { ptr, i32 } %3905, 1
  store i32 %3907, ptr %7, align 4
  br label %3945

3908:                                             ; preds = %3896
  call void @llvm.lifetime.start.p0(i64 8, ptr %475) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475)
          to label %3909 unwind label %3914

3909:                                             ; preds = %3908
  call void @llvm.lifetime.start.p0(i64 8, ptr %476) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %477) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %477, ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef @.str.356, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3910 unwind label %3918

3910:                                             ; preds = %3909
  %3911 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %477) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %476, i32 noundef 1, ptr noundef @.str.4, i32 noundef 364, ptr noundef %3911)
          to label %3912 unwind label %3922

3912:                                             ; preds = %3910
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef nonnull align 8 dereferenceable(8) %475)
          to label %3913 unwind label %3926

3913:                                             ; preds = %3912
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %476) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %477) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %477) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %476) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %475) #10
  br label %3933

3914:                                             ; preds = %3908
  %3915 = landingpad { ptr, i32 }
          cleanup
  %3916 = extractvalue { ptr, i32 } %3915, 0
  store ptr %3916, ptr %6, align 8
  %3917 = extractvalue { ptr, i32 } %3915, 1
  store i32 %3917, ptr %7, align 4
  br label %3932

3918:                                             ; preds = %3909
  %3919 = landingpad { ptr, i32 }
          cleanup
  %3920 = extractvalue { ptr, i32 } %3919, 0
  store ptr %3920, ptr %6, align 8
  %3921 = extractvalue { ptr, i32 } %3919, 1
  store i32 %3921, ptr %7, align 4
  br label %3931

3922:                                             ; preds = %3910
  %3923 = landingpad { ptr, i32 }
          cleanup
  %3924 = extractvalue { ptr, i32 } %3923, 0
  store ptr %3924, ptr %6, align 8
  %3925 = extractvalue { ptr, i32 } %3923, 1
  store i32 %3925, ptr %7, align 4
  br label %3930

3926:                                             ; preds = %3912
  %3927 = landingpad { ptr, i32 }
          cleanup
  %3928 = extractvalue { ptr, i32 } %3927, 0
  store ptr %3928, ptr %6, align 8
  %3929 = extractvalue { ptr, i32 } %3927, 1
  store i32 %3929, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %476) #10
  br label %3930

3930:                                             ; preds = %3926, %3922
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %477) #10
  br label %3931

3931:                                             ; preds = %3930, %3918
  call void @llvm.lifetime.end.p0(i64 32, ptr %477) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %476) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #10
  br label %3932

3932:                                             ; preds = %3931, %3914
  call void @llvm.lifetime.end.p0(i64 8, ptr %475) #10
  br label %3945

3933:                                             ; preds = %3913, %3897
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %472) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %472) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %478) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %479) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %480) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %480, ptr noundef @.str.351)
          to label %3934 unwind label %3947

3934:                                             ; preds = %3933
  %3935 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %480)
          to label %3936 unwind label %3947

3936:                                             ; preds = %3934
  %3937 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %3935)
          to label %3938 unwind label %3947

3938:                                             ; preds = %3936
  %3939 = xor i1 %3937, true
  %3940 = zext i1 %3939 to i8
  store i8 %3940, ptr %479, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %478, ptr noundef nonnull align 1 dereferenceable(1) %479, ptr noundef null)
          to label %3941 unwind label %3947

3941:                                             ; preds = %3938
  call void @llvm.lifetime.end.p0(i64 28, ptr %480) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %479) #10
  %3942 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %478)
          to label %3943 unwind label %3951

3943:                                             ; preds = %3941
  br i1 %3942, label %3944, label %3955

3944:                                             ; preds = %3943
  br label %3980

3945:                                             ; preds = %3932, %3904
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %472) #10
  br label %3946

3946:                                             ; preds = %3945, %3900
  call void @llvm.lifetime.end.p0(i64 16, ptr %472) #10
  br label %5344

3947:                                             ; preds = %3938, %3936, %3934, %3933
  %3948 = landingpad { ptr, i32 }
          cleanup
  %3949 = extractvalue { ptr, i32 } %3948, 0
  store ptr %3949, ptr %6, align 8
  %3950 = extractvalue { ptr, i32 } %3948, 1
  store i32 %3950, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %480) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %479) #10
  br label %3990

3951:                                             ; preds = %3941
  %3952 = landingpad { ptr, i32 }
          cleanup
  %3953 = extractvalue { ptr, i32 } %3952, 0
  store ptr %3953, ptr %6, align 8
  %3954 = extractvalue { ptr, i32 } %3952, 1
  store i32 %3954, ptr %7, align 4
  br label %3989

3955:                                             ; preds = %3943
  call void @llvm.lifetime.start.p0(i64 8, ptr %481) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %3956 unwind label %3961

3956:                                             ; preds = %3955
  call void @llvm.lifetime.start.p0(i64 8, ptr %482) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %483) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %483, ptr noundef nonnull align 8 dereferenceable(16) %478, ptr noundef @.str.357, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3957 unwind label %3965

3957:                                             ; preds = %3956
  %3958 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %483) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %482, i32 noundef 1, ptr noundef @.str.4, i32 noundef 365, ptr noundef %3958)
          to label %3959 unwind label %3969

3959:                                             ; preds = %3957
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %3960 unwind label %3973

3960:                                             ; preds = %3959
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %483) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %483) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %482) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %481) #10
  br label %3980

3961:                                             ; preds = %3955
  %3962 = landingpad { ptr, i32 }
          cleanup
  %3963 = extractvalue { ptr, i32 } %3962, 0
  store ptr %3963, ptr %6, align 8
  %3964 = extractvalue { ptr, i32 } %3962, 1
  store i32 %3964, ptr %7, align 4
  br label %3979

3965:                                             ; preds = %3956
  %3966 = landingpad { ptr, i32 }
          cleanup
  %3967 = extractvalue { ptr, i32 } %3966, 0
  store ptr %3967, ptr %6, align 8
  %3968 = extractvalue { ptr, i32 } %3966, 1
  store i32 %3968, ptr %7, align 4
  br label %3978

3969:                                             ; preds = %3957
  %3970 = landingpad { ptr, i32 }
          cleanup
  %3971 = extractvalue { ptr, i32 } %3970, 0
  store ptr %3971, ptr %6, align 8
  %3972 = extractvalue { ptr, i32 } %3970, 1
  store i32 %3972, ptr %7, align 4
  br label %3977

3973:                                             ; preds = %3959
  %3974 = landingpad { ptr, i32 }
          cleanup
  %3975 = extractvalue { ptr, i32 } %3974, 0
  store ptr %3975, ptr %6, align 8
  %3976 = extractvalue { ptr, i32 } %3974, 1
  store i32 %3976, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #10
  br label %3977

3977:                                             ; preds = %3973, %3969
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %483) #10
  br label %3978

3978:                                             ; preds = %3977, %3965
  call void @llvm.lifetime.end.p0(i64 32, ptr %483) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %482) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #10
  br label %3979

3979:                                             ; preds = %3978, %3961
  call void @llvm.lifetime.end.p0(i64 8, ptr %481) #10
  br label %3989

3980:                                             ; preds = %3960, %3944
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %478) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %478) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %484) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %485) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %486) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %486, ptr noundef @.str.358)
          to label %3981 unwind label %3991

3981:                                             ; preds = %3980
  %3982 = invoke noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %486)
          to label %3983 unwind label %3991

3983:                                             ; preds = %3981
  %3984 = zext i1 %3982 to i8
  store i8 %3984, ptr %485, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %484, ptr noundef nonnull align 1 dereferenceable(1) %485, ptr noundef null)
          to label %3985 unwind label %3991

3985:                                             ; preds = %3983
  call void @llvm.lifetime.end.p0(i64 28, ptr %486) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %485) #10
  %3986 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %484)
          to label %3987 unwind label %3995

3987:                                             ; preds = %3985
  br i1 %3986, label %3988, label %3999

3988:                                             ; preds = %3987
  br label %4024

3989:                                             ; preds = %3979, %3951
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %478) #10
  br label %3990

3990:                                             ; preds = %3989, %3947
  call void @llvm.lifetime.end.p0(i64 16, ptr %478) #10
  br label %5344

3991:                                             ; preds = %3983, %3981, %3980
  %3992 = landingpad { ptr, i32 }
          cleanup
  %3993 = extractvalue { ptr, i32 } %3992, 0
  store ptr %3993, ptr %6, align 8
  %3994 = extractvalue { ptr, i32 } %3992, 1
  store i32 %3994, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %486) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %485) #10
  br label %4035

3995:                                             ; preds = %3985
  %3996 = landingpad { ptr, i32 }
          cleanup
  %3997 = extractvalue { ptr, i32 } %3996, 0
  store ptr %3997, ptr %6, align 8
  %3998 = extractvalue { ptr, i32 } %3996, 1
  store i32 %3998, ptr %7, align 4
  br label %4034

3999:                                             ; preds = %3987
  call void @llvm.lifetime.start.p0(i64 8, ptr %487) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %4000 unwind label %4005

4000:                                             ; preds = %3999
  call void @llvm.lifetime.start.p0(i64 8, ptr %488) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %489) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %489, ptr noundef nonnull align 8 dereferenceable(16) %484, ptr noundef @.str.359, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4001 unwind label %4009

4001:                                             ; preds = %4000
  %4002 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %489) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %488, i32 noundef 1, ptr noundef @.str.4, i32 noundef 367, ptr noundef %4002)
          to label %4003 unwind label %4013

4003:                                             ; preds = %4001
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %488, ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %4004 unwind label %4017

4004:                                             ; preds = %4003
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %488) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %489) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %489) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %488) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %487) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %487) #10
  br label %4024

4005:                                             ; preds = %3999
  %4006 = landingpad { ptr, i32 }
          cleanup
  %4007 = extractvalue { ptr, i32 } %4006, 0
  store ptr %4007, ptr %6, align 8
  %4008 = extractvalue { ptr, i32 } %4006, 1
  store i32 %4008, ptr %7, align 4
  br label %4023

4009:                                             ; preds = %4000
  %4010 = landingpad { ptr, i32 }
          cleanup
  %4011 = extractvalue { ptr, i32 } %4010, 0
  store ptr %4011, ptr %6, align 8
  %4012 = extractvalue { ptr, i32 } %4010, 1
  store i32 %4012, ptr %7, align 4
  br label %4022

4013:                                             ; preds = %4001
  %4014 = landingpad { ptr, i32 }
          cleanup
  %4015 = extractvalue { ptr, i32 } %4014, 0
  store ptr %4015, ptr %6, align 8
  %4016 = extractvalue { ptr, i32 } %4014, 1
  store i32 %4016, ptr %7, align 4
  br label %4021

4017:                                             ; preds = %4003
  %4018 = landingpad { ptr, i32 }
          cleanup
  %4019 = extractvalue { ptr, i32 } %4018, 0
  store ptr %4019, ptr %6, align 8
  %4020 = extractvalue { ptr, i32 } %4018, 1
  store i32 %4020, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %488) #10
  br label %4021

4021:                                             ; preds = %4017, %4013
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %489) #10
  br label %4022

4022:                                             ; preds = %4021, %4009
  call void @llvm.lifetime.end.p0(i64 32, ptr %489) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %488) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %487) #10
  br label %4023

4023:                                             ; preds = %4022, %4005
  call void @llvm.lifetime.end.p0(i64 8, ptr %487) #10
  br label %4034

4024:                                             ; preds = %4004, %3988
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %484) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %484) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %490) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %491) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %492) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %492, ptr noundef @.str.353)
          to label %4025 unwind label %4036

4025:                                             ; preds = %4024
  %4026 = invoke noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %492)
          to label %4027 unwind label %4036

4027:                                             ; preds = %4025
  %4028 = xor i1 %4026, true
  %4029 = zext i1 %4028 to i8
  store i8 %4029, ptr %491, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %490, ptr noundef nonnull align 1 dereferenceable(1) %491, ptr noundef null)
          to label %4030 unwind label %4036

4030:                                             ; preds = %4027
  call void @llvm.lifetime.end.p0(i64 28, ptr %492) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %491) #10
  %4031 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %490)
          to label %4032 unwind label %4040

4032:                                             ; preds = %4030
  br i1 %4031, label %4033, label %4044

4033:                                             ; preds = %4032
  br label %4069

4034:                                             ; preds = %4023, %3995
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %484) #10
  br label %4035

4035:                                             ; preds = %4034, %3991
  call void @llvm.lifetime.end.p0(i64 16, ptr %484) #10
  br label %5344

4036:                                             ; preds = %4027, %4025, %4024
  %4037 = landingpad { ptr, i32 }
          cleanup
  %4038 = extractvalue { ptr, i32 } %4037, 0
  store ptr %4038, ptr %6, align 8
  %4039 = extractvalue { ptr, i32 } %4037, 1
  store i32 %4039, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %492) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %491) #10
  br label %4081

4040:                                             ; preds = %4030
  %4041 = landingpad { ptr, i32 }
          cleanup
  %4042 = extractvalue { ptr, i32 } %4041, 0
  store ptr %4042, ptr %6, align 8
  %4043 = extractvalue { ptr, i32 } %4041, 1
  store i32 %4043, ptr %7, align 4
  br label %4080

4044:                                             ; preds = %4032
  call void @llvm.lifetime.start.p0(i64 8, ptr %493) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %493)
          to label %4045 unwind label %4050

4045:                                             ; preds = %4044
  call void @llvm.lifetime.start.p0(i64 8, ptr %494) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %495) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %495, ptr noundef nonnull align 8 dereferenceable(16) %490, ptr noundef @.str.360, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %4046 unwind label %4054

4046:                                             ; preds = %4045
  %4047 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %495) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %494, i32 noundef 1, ptr noundef @.str.4, i32 noundef 368, ptr noundef %4047)
          to label %4048 unwind label %4058

4048:                                             ; preds = %4046
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %494, ptr noundef nonnull align 8 dereferenceable(8) %493)
          to label %4049 unwind label %4062

4049:                                             ; preds = %4048
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %495) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %493) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %493) #10
  br label %4069

4050:                                             ; preds = %4044
  %4051 = landingpad { ptr, i32 }
          cleanup
  %4052 = extractvalue { ptr, i32 } %4051, 0
  store ptr %4052, ptr %6, align 8
  %4053 = extractvalue { ptr, i32 } %4051, 1
  store i32 %4053, ptr %7, align 4
  br label %4068

4054:                                             ; preds = %4045
  %4055 = landingpad { ptr, i32 }
          cleanup
  %4056 = extractvalue { ptr, i32 } %4055, 0
  store ptr %4056, ptr %6, align 8
  %4057 = extractvalue { ptr, i32 } %4055, 1
  store i32 %4057, ptr %7, align 4
  br label %4067

4058:                                             ; preds = %4046
  %4059 = landingpad { ptr, i32 }
          cleanup
  %4060 = extractvalue { ptr, i32 } %4059, 0
  store ptr %4060, ptr %6, align 8
  %4061 = extractvalue { ptr, i32 } %4059, 1
  store i32 %4061, ptr %7, align 4
  br label %4066

4062:                                             ; preds = %4048
  %4063 = landingpad { ptr, i32 }
          cleanup
  %4064 = extractvalue { ptr, i32 } %4063, 0
  store ptr %4064, ptr %6, align 8
  %4065 = extractvalue { ptr, i32 } %4063, 1
  store i32 %4065, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #10
  br label %4066

4066:                                             ; preds = %4062, %4058
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #10
  br label %4067

4067:                                             ; preds = %4066, %4054
  call void @llvm.lifetime.end.p0(i64 32, ptr %495) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %493) #10
  br label %4068

4068:                                             ; preds = %4067, %4050
  call void @llvm.lifetime.end.p0(i64 8, ptr %493) #10
  br label %4080

4069:                                             ; preds = %4049, %4033
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %490) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %496) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %497) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %498) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %498, ptr noundef @.str.361)
          to label %4070 unwind label %4082

4070:                                             ; preds = %4069
  %4071 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %498)
          to label %4072 unwind label %4082

4072:                                             ; preds = %4070
  %4073 = invoke noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24) %4071)
          to label %4074 unwind label %4082

4074:                                             ; preds = %4072
  %4075 = zext i1 %4073 to i8
  store i8 %4075, ptr %497, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %496, ptr noundef nonnull align 1 dereferenceable(1) %497, ptr noundef null)
          to label %4076 unwind label %4082

4076:                                             ; preds = %4074
  call void @llvm.lifetime.end.p0(i64 28, ptr %498) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %497) #10
  %4077 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %496)
          to label %4078 unwind label %4086

4078:                                             ; preds = %4076
  br i1 %4077, label %4079, label %4090

4079:                                             ; preds = %4078
  br label %4115

4080:                                             ; preds = %4068, %4040
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %490) #10
  br label %4081

4081:                                             ; preds = %4080, %4036
  call void @llvm.lifetime.end.p0(i64 16, ptr %490) #10
  br label %5344

4082:                                             ; preds = %4074, %4072, %4070, %4069
  %4083 = landingpad { ptr, i32 }
          cleanup
  %4084 = extractvalue { ptr, i32 } %4083, 0
  store ptr %4084, ptr %6, align 8
  %4085 = extractvalue { ptr, i32 } %4083, 1
  store i32 %4085, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %498) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %497) #10
  br label %4128

4086:                                             ; preds = %4076
  %4087 = landingpad { ptr, i32 }
          cleanup
  %4088 = extractvalue { ptr, i32 } %4087, 0
  store ptr %4088, ptr %6, align 8
  %4089 = extractvalue { ptr, i32 } %4087, 1
  store i32 %4089, ptr %7, align 4
  br label %4127

4090:                                             ; preds = %4078
  call void @llvm.lifetime.start.p0(i64 8, ptr %499) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %4091 unwind label %4096

4091:                                             ; preds = %4090
  call void @llvm.lifetime.start.p0(i64 8, ptr %500) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %501) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %501, ptr noundef nonnull align 8 dereferenceable(16) %496, ptr noundef @.str.362, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4092 unwind label %4100

4092:                                             ; preds = %4091
  %4093 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %501) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %500, i32 noundef 1, ptr noundef @.str.4, i32 noundef 370, ptr noundef %4093)
          to label %4094 unwind label %4104

4094:                                             ; preds = %4092
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %500, ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %4095 unwind label %4108

4095:                                             ; preds = %4094
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %500) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %501) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %501) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %500) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %499) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %499) #10
  br label %4115

4096:                                             ; preds = %4090
  %4097 = landingpad { ptr, i32 }
          cleanup
  %4098 = extractvalue { ptr, i32 } %4097, 0
  store ptr %4098, ptr %6, align 8
  %4099 = extractvalue { ptr, i32 } %4097, 1
  store i32 %4099, ptr %7, align 4
  br label %4114

4100:                                             ; preds = %4091
  %4101 = landingpad { ptr, i32 }
          cleanup
  %4102 = extractvalue { ptr, i32 } %4101, 0
  store ptr %4102, ptr %6, align 8
  %4103 = extractvalue { ptr, i32 } %4101, 1
  store i32 %4103, ptr %7, align 4
  br label %4113

4104:                                             ; preds = %4092
  %4105 = landingpad { ptr, i32 }
          cleanup
  %4106 = extractvalue { ptr, i32 } %4105, 0
  store ptr %4106, ptr %6, align 8
  %4107 = extractvalue { ptr, i32 } %4105, 1
  store i32 %4107, ptr %7, align 4
  br label %4112

4108:                                             ; preds = %4094
  %4109 = landingpad { ptr, i32 }
          cleanup
  %4110 = extractvalue { ptr, i32 } %4109, 0
  store ptr %4110, ptr %6, align 8
  %4111 = extractvalue { ptr, i32 } %4109, 1
  store i32 %4111, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %500) #10
  br label %4112

4112:                                             ; preds = %4108, %4104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %501) #10
  br label %4113

4113:                                             ; preds = %4112, %4100
  call void @llvm.lifetime.end.p0(i64 32, ptr %501) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %500) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %499) #10
  br label %4114

4114:                                             ; preds = %4113, %4096
  call void @llvm.lifetime.end.p0(i64 8, ptr %499) #10
  br label %4127

4115:                                             ; preds = %4095, %4079
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %496) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %496) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %502) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %503) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %504) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %504, ptr noundef @.str.363)
          to label %4116 unwind label %4129

4116:                                             ; preds = %4115
  %4117 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %504)
          to label %4118 unwind label %4129

4118:                                             ; preds = %4116
  %4119 = invoke noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24) %4117)
          to label %4120 unwind label %4129

4120:                                             ; preds = %4118
  %4121 = xor i1 %4119, true
  %4122 = zext i1 %4121 to i8
  store i8 %4122, ptr %503, align 1, !tbaa !9
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %502, ptr noundef nonnull align 1 dereferenceable(1) %503, ptr noundef null)
          to label %4123 unwind label %4129

4123:                                             ; preds = %4120
  call void @llvm.lifetime.end.p0(i64 28, ptr %504) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %503) #10
  %4124 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %502)
          to label %4125 unwind label %4133

4125:                                             ; preds = %4123
  br i1 %4124, label %4126, label %4137

4126:                                             ; preds = %4125
  br label %4162

4127:                                             ; preds = %4114, %4086
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %496) #10
  br label %4128

4128:                                             ; preds = %4127, %4082
  call void @llvm.lifetime.end.p0(i64 16, ptr %496) #10
  br label %5344

4129:                                             ; preds = %4120, %4118, %4116, %4115
  %4130 = landingpad { ptr, i32 }
          cleanup
  %4131 = extractvalue { ptr, i32 } %4130, 0
  store ptr %4131, ptr %6, align 8
  %4132 = extractvalue { ptr, i32 } %4130, 1
  store i32 %4132, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %504) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %503) #10
  br label %4170

4133:                                             ; preds = %4123
  %4134 = landingpad { ptr, i32 }
          cleanup
  %4135 = extractvalue { ptr, i32 } %4134, 0
  store ptr %4135, ptr %6, align 8
  %4136 = extractvalue { ptr, i32 } %4134, 1
  store i32 %4136, ptr %7, align 4
  br label %4169

4137:                                             ; preds = %4125
  call void @llvm.lifetime.start.p0(i64 8, ptr %505) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505)
          to label %4138 unwind label %4143

4138:                                             ; preds = %4137
  call void @llvm.lifetime.start.p0(i64 8, ptr %506) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %507) #10
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %507, ptr noundef nonnull align 8 dereferenceable(16) %502, ptr noundef @.str.364, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %4139 unwind label %4147

4139:                                             ; preds = %4138
  %4140 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %507) #10
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %506, i32 noundef 1, ptr noundef @.str.4, i32 noundef 371, ptr noundef %4140)
          to label %4141 unwind label %4151

4141:                                             ; preds = %4139
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull align 8 dereferenceable(8) %505)
          to label %4142 unwind label %4155

4142:                                             ; preds = %4141
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %507) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %507) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %506) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #10
  br label %4162

4143:                                             ; preds = %4137
  %4144 = landingpad { ptr, i32 }
          cleanup
  %4145 = extractvalue { ptr, i32 } %4144, 0
  store ptr %4145, ptr %6, align 8
  %4146 = extractvalue { ptr, i32 } %4144, 1
  store i32 %4146, ptr %7, align 4
  br label %4161

4147:                                             ; preds = %4138
  %4148 = landingpad { ptr, i32 }
          cleanup
  %4149 = extractvalue { ptr, i32 } %4148, 0
  store ptr %4149, ptr %6, align 8
  %4150 = extractvalue { ptr, i32 } %4148, 1
  store i32 %4150, ptr %7, align 4
  br label %4160

4151:                                             ; preds = %4139
  %4152 = landingpad { ptr, i32 }
          cleanup
  %4153 = extractvalue { ptr, i32 } %4152, 0
  store ptr %4153, ptr %6, align 8
  %4154 = extractvalue { ptr, i32 } %4152, 1
  store i32 %4154, ptr %7, align 4
  br label %4159

4155:                                             ; preds = %4141
  %4156 = landingpad { ptr, i32 }
          cleanup
  %4157 = extractvalue { ptr, i32 } %4156, 0
  store ptr %4157, ptr %6, align 8
  %4158 = extractvalue { ptr, i32 } %4156, 1
  store i32 %4158, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #10
  br label %4159

4159:                                             ; preds = %4155, %4151
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %507) #10
  br label %4160

4160:                                             ; preds = %4159, %4147
  call void @llvm.lifetime.end.p0(i64 32, ptr %507) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %506) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #10
  br label %4161

4161:                                             ; preds = %4160, %4143
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #10
  br label %4169

4162:                                             ; preds = %4142, %4126
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %502) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %502) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %508) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %509) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %509, ptr noundef @.str.10)
          to label %4163 unwind label %4171

4163:                                             ; preds = %4162
  call void @llvm.lifetime.start.p0(i64 28, ptr %510) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %510, ptr noundef @.str.10)
          to label %4164 unwind label %4175

4164:                                             ; preds = %4163
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %508, ptr noundef @.str.225, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %509, ptr noundef nonnull align 4 dereferenceable(28) %510)
          to label %4165 unwind label %4175

4165:                                             ; preds = %4164
  call void @llvm.lifetime.end.p0(i64 28, ptr %510) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %509) #10
  %4166 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %508)
          to label %4167 unwind label %4180

4167:                                             ; preds = %4165
  br i1 %4166, label %4168, label %4184

4168:                                             ; preds = %4167
  br label %4204

4169:                                             ; preds = %4161, %4133
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %502) #10
  br label %4170

4170:                                             ; preds = %4169, %4129
  call void @llvm.lifetime.end.p0(i64 16, ptr %502) #10
  br label %5344

4171:                                             ; preds = %4162
  %4172 = landingpad { ptr, i32 }
          cleanup
  %4173 = extractvalue { ptr, i32 } %4172, 0
  store ptr %4173, ptr %6, align 8
  %4174 = extractvalue { ptr, i32 } %4172, 1
  store i32 %4174, ptr %7, align 4
  br label %4179

4175:                                             ; preds = %4164, %4163
  %4176 = landingpad { ptr, i32 }
          cleanup
  %4177 = extractvalue { ptr, i32 } %4176, 0
  store ptr %4177, ptr %6, align 8
  %4178 = extractvalue { ptr, i32 } %4176, 1
  store i32 %4178, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %510) #10
  br label %4179

4179:                                             ; preds = %4175, %4171
  call void @llvm.lifetime.end.p0(i64 28, ptr %509) #10
  br label %4212

4180:                                             ; preds = %4165
  %4181 = landingpad { ptr, i32 }
          cleanup
  %4182 = extractvalue { ptr, i32 } %4181, 0
  store ptr %4182, ptr %6, align 8
  %4183 = extractvalue { ptr, i32 } %4181, 1
  store i32 %4183, ptr %7, align 4
  br label %4211

4184:                                             ; preds = %4167
  call void @llvm.lifetime.start.p0(i64 8, ptr %511) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %511)
          to label %4185 unwind label %4190

4185:                                             ; preds = %4184
  call void @llvm.lifetime.start.p0(i64 8, ptr %512) #10
  %4186 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %508)
          to label %4187 unwind label %4194

4187:                                             ; preds = %4185
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %512, i32 noundef 1, ptr noundef @.str.4, i32 noundef 374, ptr noundef %4186)
          to label %4188 unwind label %4194

4188:                                             ; preds = %4187
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef nonnull align 8 dereferenceable(8) %511)
          to label %4189 unwind label %4198

4189:                                             ; preds = %4188
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %512) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %511) #10
  br label %4204

4190:                                             ; preds = %4184
  %4191 = landingpad { ptr, i32 }
          cleanup
  %4192 = extractvalue { ptr, i32 } %4191, 0
  store ptr %4192, ptr %6, align 8
  %4193 = extractvalue { ptr, i32 } %4191, 1
  store i32 %4193, ptr %7, align 4
  br label %4203

4194:                                             ; preds = %4187, %4185
  %4195 = landingpad { ptr, i32 }
          cleanup
  %4196 = extractvalue { ptr, i32 } %4195, 0
  store ptr %4196, ptr %6, align 8
  %4197 = extractvalue { ptr, i32 } %4195, 1
  store i32 %4197, ptr %7, align 4
  br label %4202

4198:                                             ; preds = %4188
  %4199 = landingpad { ptr, i32 }
          cleanup
  %4200 = extractvalue { ptr, i32 } %4199, 0
  store ptr %4200, ptr %6, align 8
  %4201 = extractvalue { ptr, i32 } %4199, 1
  store i32 %4201, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #10
  br label %4202

4202:                                             ; preds = %4198, %4194
  call void @llvm.lifetime.end.p0(i64 8, ptr %512) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #10
  br label %4203

4203:                                             ; preds = %4202, %4190
  call void @llvm.lifetime.end.p0(i64 8, ptr %511) #10
  br label %4211

4204:                                             ; preds = %4189, %4168
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %508) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %513) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %514) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %514, ptr noundef @.str.250)
          to label %4205 unwind label %4213

4205:                                             ; preds = %4204
  call void @llvm.lifetime.start.p0(i64 28, ptr %515) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %515, ptr noundef @.str.250)
          to label %4206 unwind label %4217

4206:                                             ; preds = %4205
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %513, ptr noundef @.str.248, ptr noundef @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %514, ptr noundef nonnull align 4 dereferenceable(28) %515)
          to label %4207 unwind label %4217

4207:                                             ; preds = %4206
  call void @llvm.lifetime.end.p0(i64 28, ptr %515) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %514) #10
  %4208 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
          to label %4209 unwind label %4222

4209:                                             ; preds = %4207
  br i1 %4208, label %4210, label %4226

4210:                                             ; preds = %4209
  br label %4246

4211:                                             ; preds = %4203, %4180
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #10
  br label %4212

4212:                                             ; preds = %4211, %4179
  call void @llvm.lifetime.end.p0(i64 16, ptr %508) #10
  br label %5344

4213:                                             ; preds = %4204
  %4214 = landingpad { ptr, i32 }
          cleanup
  %4215 = extractvalue { ptr, i32 } %4214, 0
  store ptr %4215, ptr %6, align 8
  %4216 = extractvalue { ptr, i32 } %4214, 1
  store i32 %4216, ptr %7, align 4
  br label %4221

4217:                                             ; preds = %4206, %4205
  %4218 = landingpad { ptr, i32 }
          cleanup
  %4219 = extractvalue { ptr, i32 } %4218, 0
  store ptr %4219, ptr %6, align 8
  %4220 = extractvalue { ptr, i32 } %4218, 1
  store i32 %4220, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %515) #10
  br label %4221

4221:                                             ; preds = %4217, %4213
  call void @llvm.lifetime.end.p0(i64 28, ptr %514) #10
  br label %4254

4222:                                             ; preds = %4207
  %4223 = landingpad { ptr, i32 }
          cleanup
  %4224 = extractvalue { ptr, i32 } %4223, 0
  store ptr %4224, ptr %6, align 8
  %4225 = extractvalue { ptr, i32 } %4223, 1
  store i32 %4225, ptr %7, align 4
  br label %4253

4226:                                             ; preds = %4209
  call void @llvm.lifetime.start.p0(i64 8, ptr %516) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %4227 unwind label %4232

4227:                                             ; preds = %4226
  call void @llvm.lifetime.start.p0(i64 8, ptr %517) #10
  %4228 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
          to label %4229 unwind label %4236

4229:                                             ; preds = %4227
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %517, i32 noundef 1, ptr noundef @.str.4, i32 noundef 375, ptr noundef %4228)
          to label %4230 unwind label %4236

4230:                                             ; preds = %4229
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %4231 unwind label %4240

4231:                                             ; preds = %4230
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %517) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %516) #10
  br label %4246

4232:                                             ; preds = %4226
  %4233 = landingpad { ptr, i32 }
          cleanup
  %4234 = extractvalue { ptr, i32 } %4233, 0
  store ptr %4234, ptr %6, align 8
  %4235 = extractvalue { ptr, i32 } %4233, 1
  store i32 %4235, ptr %7, align 4
  br label %4245

4236:                                             ; preds = %4229, %4227
  %4237 = landingpad { ptr, i32 }
          cleanup
  %4238 = extractvalue { ptr, i32 } %4237, 0
  store ptr %4238, ptr %6, align 8
  %4239 = extractvalue { ptr, i32 } %4237, 1
  store i32 %4239, ptr %7, align 4
  br label %4244

4240:                                             ; preds = %4230
  %4241 = landingpad { ptr, i32 }
          cleanup
  %4242 = extractvalue { ptr, i32 } %4241, 0
  store ptr %4242, ptr %6, align 8
  %4243 = extractvalue { ptr, i32 } %4241, 1
  store i32 %4243, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #10
  br label %4244

4244:                                             ; preds = %4240, %4236
  call void @llvm.lifetime.end.p0(i64 8, ptr %517) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #10
  br label %4245

4245:                                             ; preds = %4244, %4232
  call void @llvm.lifetime.end.p0(i64 8, ptr %516) #10
  br label %4253

4246:                                             ; preds = %4231, %4210
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %513) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %518) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %519) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %519, ptr noundef @.str.10)
          to label %4247 unwind label %4255

4247:                                             ; preds = %4246
  call void @llvm.lifetime.start.p0(i64 28, ptr %520) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %520, ptr noundef @.str.271)
          to label %4248 unwind label %4259

4248:                                             ; preds = %4247
  invoke void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %518, ptr noundef @.str.225, ptr noundef @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %519, ptr noundef nonnull align 4 dereferenceable(28) %520)
          to label %4249 unwind label %4259

4249:                                             ; preds = %4248
  call void @llvm.lifetime.end.p0(i64 28, ptr %520) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %519) #10
  %4250 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %518)
          to label %4251 unwind label %4264

4251:                                             ; preds = %4249
  br i1 %4250, label %4252, label %4268

4252:                                             ; preds = %4251
  br label %4288

4253:                                             ; preds = %4245, %4222
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #10
  br label %4254

4254:                                             ; preds = %4253, %4221
  call void @llvm.lifetime.end.p0(i64 16, ptr %513) #10
  br label %5344

4255:                                             ; preds = %4246
  %4256 = landingpad { ptr, i32 }
          cleanup
  %4257 = extractvalue { ptr, i32 } %4256, 0
  store ptr %4257, ptr %6, align 8
  %4258 = extractvalue { ptr, i32 } %4256, 1
  store i32 %4258, ptr %7, align 4
  br label %4263

4259:                                             ; preds = %4248, %4247
  %4260 = landingpad { ptr, i32 }
          cleanup
  %4261 = extractvalue { ptr, i32 } %4260, 0
  store ptr %4261, ptr %6, align 8
  %4262 = extractvalue { ptr, i32 } %4260, 1
  store i32 %4262, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %520) #10
  br label %4263

4263:                                             ; preds = %4259, %4255
  call void @llvm.lifetime.end.p0(i64 28, ptr %519) #10
  br label %4296

4264:                                             ; preds = %4249
  %4265 = landingpad { ptr, i32 }
          cleanup
  %4266 = extractvalue { ptr, i32 } %4265, 0
  store ptr %4266, ptr %6, align 8
  %4267 = extractvalue { ptr, i32 } %4265, 1
  store i32 %4267, ptr %7, align 4
  br label %4295

4268:                                             ; preds = %4251
  call void @llvm.lifetime.start.p0(i64 8, ptr %521) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %4269 unwind label %4274

4269:                                             ; preds = %4268
  call void @llvm.lifetime.start.p0(i64 8, ptr %522) #10
  %4270 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %518)
          to label %4271 unwind label %4278

4271:                                             ; preds = %4269
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %522, i32 noundef 1, ptr noundef @.str.4, i32 noundef 377, ptr noundef %4270)
          to label %4272 unwind label %4278

4272:                                             ; preds = %4271
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %4273 unwind label %4282

4273:                                             ; preds = %4272
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %522) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %521) #10
  br label %4288

4274:                                             ; preds = %4268
  %4275 = landingpad { ptr, i32 }
          cleanup
  %4276 = extractvalue { ptr, i32 } %4275, 0
  store ptr %4276, ptr %6, align 8
  %4277 = extractvalue { ptr, i32 } %4275, 1
  store i32 %4277, ptr %7, align 4
  br label %4287

4278:                                             ; preds = %4271, %4269
  %4279 = landingpad { ptr, i32 }
          cleanup
  %4280 = extractvalue { ptr, i32 } %4279, 0
  store ptr %4280, ptr %6, align 8
  %4281 = extractvalue { ptr, i32 } %4279, 1
  store i32 %4281, ptr %7, align 4
  br label %4286

4282:                                             ; preds = %4272
  %4283 = landingpad { ptr, i32 }
          cleanup
  %4284 = extractvalue { ptr, i32 } %4283, 0
  store ptr %4284, ptr %6, align 8
  %4285 = extractvalue { ptr, i32 } %4283, 1
  store i32 %4285, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #10
  br label %4286

4286:                                             ; preds = %4282, %4278
  call void @llvm.lifetime.end.p0(i64 8, ptr %522) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #10
  br label %4287

4287:                                             ; preds = %4286, %4274
  call void @llvm.lifetime.end.p0(i64 8, ptr %521) #10
  br label %4295

4288:                                             ; preds = %4273, %4252
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %518) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %523) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %524) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %524, ptr noundef @.str.250)
          to label %4289 unwind label %4297

4289:                                             ; preds = %4288
  call void @llvm.lifetime.start.p0(i64 28, ptr %525) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %525, ptr noundef @.str.10)
          to label %4290 unwind label %4301

4290:                                             ; preds = %4289
  invoke void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %523, ptr noundef @.str.248, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %524, ptr noundef nonnull align 4 dereferenceable(28) %525)
          to label %4291 unwind label %4301

4291:                                             ; preds = %4290
  call void @llvm.lifetime.end.p0(i64 28, ptr %525) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %524) #10
  %4292 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
          to label %4293 unwind label %4306

4293:                                             ; preds = %4291
  br i1 %4292, label %4294, label %4310

4294:                                             ; preds = %4293
  br label %4330

4295:                                             ; preds = %4287, %4264
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #10
  br label %4296

4296:                                             ; preds = %4295, %4263
  call void @llvm.lifetime.end.p0(i64 16, ptr %518) #10
  br label %5344

4297:                                             ; preds = %4288
  %4298 = landingpad { ptr, i32 }
          cleanup
  %4299 = extractvalue { ptr, i32 } %4298, 0
  store ptr %4299, ptr %6, align 8
  %4300 = extractvalue { ptr, i32 } %4298, 1
  store i32 %4300, ptr %7, align 4
  br label %4305

4301:                                             ; preds = %4290, %4289
  %4302 = landingpad { ptr, i32 }
          cleanup
  %4303 = extractvalue { ptr, i32 } %4302, 0
  store ptr %4303, ptr %6, align 8
  %4304 = extractvalue { ptr, i32 } %4302, 1
  store i32 %4304, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %525) #10
  br label %4305

4305:                                             ; preds = %4301, %4297
  call void @llvm.lifetime.end.p0(i64 28, ptr %524) #10
  br label %4338

4306:                                             ; preds = %4291
  %4307 = landingpad { ptr, i32 }
          cleanup
  %4308 = extractvalue { ptr, i32 } %4307, 0
  store ptr %4308, ptr %6, align 8
  %4309 = extractvalue { ptr, i32 } %4307, 1
  store i32 %4309, ptr %7, align 4
  br label %4337

4310:                                             ; preds = %4293
  call void @llvm.lifetime.start.p0(i64 8, ptr %526) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %526)
          to label %4311 unwind label %4316

4311:                                             ; preds = %4310
  call void @llvm.lifetime.start.p0(i64 8, ptr %527) #10
  %4312 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
          to label %4313 unwind label %4320

4313:                                             ; preds = %4311
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %527, i32 noundef 1, ptr noundef @.str.4, i32 noundef 378, ptr noundef %4312)
          to label %4314 unwind label %4320

4314:                                             ; preds = %4313
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull align 8 dereferenceable(8) %526)
          to label %4315 unwind label %4324

4315:                                             ; preds = %4314
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %527) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %526) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %526) #10
  br label %4330

4316:                                             ; preds = %4310
  %4317 = landingpad { ptr, i32 }
          cleanup
  %4318 = extractvalue { ptr, i32 } %4317, 0
  store ptr %4318, ptr %6, align 8
  %4319 = extractvalue { ptr, i32 } %4317, 1
  store i32 %4319, ptr %7, align 4
  br label %4329

4320:                                             ; preds = %4313, %4311
  %4321 = landingpad { ptr, i32 }
          cleanup
  %4322 = extractvalue { ptr, i32 } %4321, 0
  store ptr %4322, ptr %6, align 8
  %4323 = extractvalue { ptr, i32 } %4321, 1
  store i32 %4323, ptr %7, align 4
  br label %4328

4324:                                             ; preds = %4314
  %4325 = landingpad { ptr, i32 }
          cleanup
  %4326 = extractvalue { ptr, i32 } %4325, 0
  store ptr %4326, ptr %6, align 8
  %4327 = extractvalue { ptr, i32 } %4325, 1
  store i32 %4327, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #10
  br label %4328

4328:                                             ; preds = %4324, %4320
  call void @llvm.lifetime.end.p0(i64 8, ptr %527) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %526) #10
  br label %4329

4329:                                             ; preds = %4328, %4316
  call void @llvm.lifetime.end.p0(i64 8, ptr %526) #10
  br label %4337

4330:                                             ; preds = %4315, %4294
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %523) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %528) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %529) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %529, ptr noundef @.str.271)
          to label %4331 unwind label %4339

4331:                                             ; preds = %4330
  call void @llvm.lifetime.start.p0(i64 28, ptr %530) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %530, ptr noundef @.str.10)
          to label %4332 unwind label %4343

4332:                                             ; preds = %4331
  invoke void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %528, ptr noundef @.str.365, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %529, ptr noundef nonnull align 4 dereferenceable(28) %530)
          to label %4333 unwind label %4343

4333:                                             ; preds = %4332
  call void @llvm.lifetime.end.p0(i64 28, ptr %530) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %529) #10
  %4334 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %528)
          to label %4335 unwind label %4348

4335:                                             ; preds = %4333
  br i1 %4334, label %4336, label %4352

4336:                                             ; preds = %4335
  br label %4372

4337:                                             ; preds = %4329, %4306
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #10
  br label %4338

4338:                                             ; preds = %4337, %4305
  call void @llvm.lifetime.end.p0(i64 16, ptr %523) #10
  br label %5344

4339:                                             ; preds = %4330
  %4340 = landingpad { ptr, i32 }
          cleanup
  %4341 = extractvalue { ptr, i32 } %4340, 0
  store ptr %4341, ptr %6, align 8
  %4342 = extractvalue { ptr, i32 } %4340, 1
  store i32 %4342, ptr %7, align 4
  br label %4347

4343:                                             ; preds = %4332, %4331
  %4344 = landingpad { ptr, i32 }
          cleanup
  %4345 = extractvalue { ptr, i32 } %4344, 0
  store ptr %4345, ptr %6, align 8
  %4346 = extractvalue { ptr, i32 } %4344, 1
  store i32 %4346, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %530) #10
  br label %4347

4347:                                             ; preds = %4343, %4339
  call void @llvm.lifetime.end.p0(i64 28, ptr %529) #10
  br label %4380

4348:                                             ; preds = %4333
  %4349 = landingpad { ptr, i32 }
          cleanup
  %4350 = extractvalue { ptr, i32 } %4349, 0
  store ptr %4350, ptr %6, align 8
  %4351 = extractvalue { ptr, i32 } %4349, 1
  store i32 %4351, ptr %7, align 4
  br label %4379

4352:                                             ; preds = %4335
  call void @llvm.lifetime.start.p0(i64 8, ptr %531) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %4353 unwind label %4358

4353:                                             ; preds = %4352
  call void @llvm.lifetime.start.p0(i64 8, ptr %532) #10
  %4354 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %528)
          to label %4355 unwind label %4362

4355:                                             ; preds = %4353
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %532, i32 noundef 1, ptr noundef @.str.4, i32 noundef 380, ptr noundef %4354)
          to label %4356 unwind label %4362

4356:                                             ; preds = %4355
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %4357 unwind label %4366

4357:                                             ; preds = %4356
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %532) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %532) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #10
  br label %4372

4358:                                             ; preds = %4352
  %4359 = landingpad { ptr, i32 }
          cleanup
  %4360 = extractvalue { ptr, i32 } %4359, 0
  store ptr %4360, ptr %6, align 8
  %4361 = extractvalue { ptr, i32 } %4359, 1
  store i32 %4361, ptr %7, align 4
  br label %4371

4362:                                             ; preds = %4355, %4353
  %4363 = landingpad { ptr, i32 }
          cleanup
  %4364 = extractvalue { ptr, i32 } %4363, 0
  store ptr %4364, ptr %6, align 8
  %4365 = extractvalue { ptr, i32 } %4363, 1
  store i32 %4365, ptr %7, align 4
  br label %4370

4366:                                             ; preds = %4356
  %4367 = landingpad { ptr, i32 }
          cleanup
  %4368 = extractvalue { ptr, i32 } %4367, 0
  store ptr %4368, ptr %6, align 8
  %4369 = extractvalue { ptr, i32 } %4367, 1
  store i32 %4369, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %532) #10
  br label %4370

4370:                                             ; preds = %4366, %4362
  call void @llvm.lifetime.end.p0(i64 8, ptr %532) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #10
  br label %4371

4371:                                             ; preds = %4370, %4358
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #10
  br label %4379

4372:                                             ; preds = %4357, %4336
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %528) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %528) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %533) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %534) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %534, ptr noundef @.str.250)
          to label %4373 unwind label %4381

4373:                                             ; preds = %4372
  call void @llvm.lifetime.start.p0(i64 28, ptr %535) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %535, ptr noundef @.str.10)
          to label %4374 unwind label %4385

4374:                                             ; preds = %4373
  invoke void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %533, ptr noundef @.str.248, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %534, ptr noundef nonnull align 4 dereferenceable(28) %535)
          to label %4375 unwind label %4385

4375:                                             ; preds = %4374
  call void @llvm.lifetime.end.p0(i64 28, ptr %535) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %534) #10
  %4376 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
          to label %4377 unwind label %4390

4377:                                             ; preds = %4375
  br i1 %4376, label %4378, label %4394

4378:                                             ; preds = %4377
  br label %4414

4379:                                             ; preds = %4371, %4348
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %528) #10
  br label %4380

4380:                                             ; preds = %4379, %4347
  call void @llvm.lifetime.end.p0(i64 16, ptr %528) #10
  br label %5344

4381:                                             ; preds = %4372
  %4382 = landingpad { ptr, i32 }
          cleanup
  %4383 = extractvalue { ptr, i32 } %4382, 0
  store ptr %4383, ptr %6, align 8
  %4384 = extractvalue { ptr, i32 } %4382, 1
  store i32 %4384, ptr %7, align 4
  br label %4389

4385:                                             ; preds = %4374, %4373
  %4386 = landingpad { ptr, i32 }
          cleanup
  %4387 = extractvalue { ptr, i32 } %4386, 0
  store ptr %4387, ptr %6, align 8
  %4388 = extractvalue { ptr, i32 } %4386, 1
  store i32 %4388, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %535) #10
  br label %4389

4389:                                             ; preds = %4385, %4381
  call void @llvm.lifetime.end.p0(i64 28, ptr %534) #10
  br label %4422

4390:                                             ; preds = %4375
  %4391 = landingpad { ptr, i32 }
          cleanup
  %4392 = extractvalue { ptr, i32 } %4391, 0
  store ptr %4392, ptr %6, align 8
  %4393 = extractvalue { ptr, i32 } %4391, 1
  store i32 %4393, ptr %7, align 4
  br label %4421

4394:                                             ; preds = %4377
  call void @llvm.lifetime.start.p0(i64 8, ptr %536) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %4395 unwind label %4400

4395:                                             ; preds = %4394
  call void @llvm.lifetime.start.p0(i64 8, ptr %537) #10
  %4396 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
          to label %4397 unwind label %4404

4397:                                             ; preds = %4395
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %537, i32 noundef 1, ptr noundef @.str.4, i32 noundef 381, ptr noundef %4396)
          to label %4398 unwind label %4404

4398:                                             ; preds = %4397
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %537, ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %4399 unwind label %4408

4399:                                             ; preds = %4398
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %536) #10
  br label %4414

4400:                                             ; preds = %4394
  %4401 = landingpad { ptr, i32 }
          cleanup
  %4402 = extractvalue { ptr, i32 } %4401, 0
  store ptr %4402, ptr %6, align 8
  %4403 = extractvalue { ptr, i32 } %4401, 1
  store i32 %4403, ptr %7, align 4
  br label %4413

4404:                                             ; preds = %4397, %4395
  %4405 = landingpad { ptr, i32 }
          cleanup
  %4406 = extractvalue { ptr, i32 } %4405, 0
  store ptr %4406, ptr %6, align 8
  %4407 = extractvalue { ptr, i32 } %4405, 1
  store i32 %4407, ptr %7, align 4
  br label %4412

4408:                                             ; preds = %4398
  %4409 = landingpad { ptr, i32 }
          cleanup
  %4410 = extractvalue { ptr, i32 } %4409, 0
  store ptr %4410, ptr %6, align 8
  %4411 = extractvalue { ptr, i32 } %4409, 1
  store i32 %4411, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #10
  br label %4412

4412:                                             ; preds = %4408, %4404
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #10
  br label %4413

4413:                                             ; preds = %4412, %4400
  call void @llvm.lifetime.end.p0(i64 8, ptr %536) #10
  br label %4421

4414:                                             ; preds = %4399, %4378
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %533) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %538) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %539) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %539, ptr noundef @.str.10)
          to label %4415 unwind label %4423

4415:                                             ; preds = %4414
  call void @llvm.lifetime.start.p0(i64 28, ptr %540) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %540, ptr noundef @.str.271)
          to label %4416 unwind label %4427

4416:                                             ; preds = %4415
  invoke void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %538, ptr noundef @.str.225, ptr noundef @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %539, ptr noundef nonnull align 4 dereferenceable(28) %540)
          to label %4417 unwind label %4427

4417:                                             ; preds = %4416
  call void @llvm.lifetime.end.p0(i64 28, ptr %540) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %539) #10
  %4418 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %538)
          to label %4419 unwind label %4432

4419:                                             ; preds = %4417
  br i1 %4418, label %4420, label %4436

4420:                                             ; preds = %4419
  br label %4456

4421:                                             ; preds = %4413, %4390
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #10
  br label %4422

4422:                                             ; preds = %4421, %4389
  call void @llvm.lifetime.end.p0(i64 16, ptr %533) #10
  br label %5344

4423:                                             ; preds = %4414
  %4424 = landingpad { ptr, i32 }
          cleanup
  %4425 = extractvalue { ptr, i32 } %4424, 0
  store ptr %4425, ptr %6, align 8
  %4426 = extractvalue { ptr, i32 } %4424, 1
  store i32 %4426, ptr %7, align 4
  br label %4431

4427:                                             ; preds = %4416, %4415
  %4428 = landingpad { ptr, i32 }
          cleanup
  %4429 = extractvalue { ptr, i32 } %4428, 0
  store ptr %4429, ptr %6, align 8
  %4430 = extractvalue { ptr, i32 } %4428, 1
  store i32 %4430, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %540) #10
  br label %4431

4431:                                             ; preds = %4427, %4423
  call void @llvm.lifetime.end.p0(i64 28, ptr %539) #10
  br label %4464

4432:                                             ; preds = %4417
  %4433 = landingpad { ptr, i32 }
          cleanup
  %4434 = extractvalue { ptr, i32 } %4433, 0
  store ptr %4434, ptr %6, align 8
  %4435 = extractvalue { ptr, i32 } %4433, 1
  store i32 %4435, ptr %7, align 4
  br label %4463

4436:                                             ; preds = %4419
  call void @llvm.lifetime.start.p0(i64 8, ptr %541) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %4437 unwind label %4442

4437:                                             ; preds = %4436
  call void @llvm.lifetime.start.p0(i64 8, ptr %542) #10
  %4438 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %538)
          to label %4439 unwind label %4446

4439:                                             ; preds = %4437
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %542, i32 noundef 1, ptr noundef @.str.4, i32 noundef 383, ptr noundef %4438)
          to label %4440 unwind label %4446

4440:                                             ; preds = %4439
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %4441 unwind label %4450

4441:                                             ; preds = %4440
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %542) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %541) #10
  br label %4456

4442:                                             ; preds = %4436
  %4443 = landingpad { ptr, i32 }
          cleanup
  %4444 = extractvalue { ptr, i32 } %4443, 0
  store ptr %4444, ptr %6, align 8
  %4445 = extractvalue { ptr, i32 } %4443, 1
  store i32 %4445, ptr %7, align 4
  br label %4455

4446:                                             ; preds = %4439, %4437
  %4447 = landingpad { ptr, i32 }
          cleanup
  %4448 = extractvalue { ptr, i32 } %4447, 0
  store ptr %4448, ptr %6, align 8
  %4449 = extractvalue { ptr, i32 } %4447, 1
  store i32 %4449, ptr %7, align 4
  br label %4454

4450:                                             ; preds = %4440
  %4451 = landingpad { ptr, i32 }
          cleanup
  %4452 = extractvalue { ptr, i32 } %4451, 0
  store ptr %4452, ptr %6, align 8
  %4453 = extractvalue { ptr, i32 } %4451, 1
  store i32 %4453, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #10
  br label %4454

4454:                                             ; preds = %4450, %4446
  call void @llvm.lifetime.end.p0(i64 8, ptr %542) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #10
  br label %4455

4455:                                             ; preds = %4454, %4442
  call void @llvm.lifetime.end.p0(i64 8, ptr %541) #10
  br label %4463

4456:                                             ; preds = %4441, %4420
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %538) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %538) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %543) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %544) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %544, ptr noundef @.str.10)
          to label %4457 unwind label %4465

4457:                                             ; preds = %4456
  call void @llvm.lifetime.start.p0(i64 28, ptr %545) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %545, ptr noundef @.str.250)
          to label %4458 unwind label %4469

4458:                                             ; preds = %4457
  invoke void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %543, ptr noundef @.str.225, ptr noundef @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %544, ptr noundef nonnull align 4 dereferenceable(28) %545)
          to label %4459 unwind label %4469

4459:                                             ; preds = %4458
  call void @llvm.lifetime.end.p0(i64 28, ptr %545) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %544) #10
  %4460 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %543)
          to label %4461 unwind label %4474

4461:                                             ; preds = %4459
  br i1 %4460, label %4462, label %4478

4462:                                             ; preds = %4461
  br label %4498

4463:                                             ; preds = %4455, %4432
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %538) #10
  br label %4464

4464:                                             ; preds = %4463, %4431
  call void @llvm.lifetime.end.p0(i64 16, ptr %538) #10
  br label %5344

4465:                                             ; preds = %4456
  %4466 = landingpad { ptr, i32 }
          cleanup
  %4467 = extractvalue { ptr, i32 } %4466, 0
  store ptr %4467, ptr %6, align 8
  %4468 = extractvalue { ptr, i32 } %4466, 1
  store i32 %4468, ptr %7, align 4
  br label %4473

4469:                                             ; preds = %4458, %4457
  %4470 = landingpad { ptr, i32 }
          cleanup
  %4471 = extractvalue { ptr, i32 } %4470, 0
  store ptr %4471, ptr %6, align 8
  %4472 = extractvalue { ptr, i32 } %4470, 1
  store i32 %4472, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %545) #10
  br label %4473

4473:                                             ; preds = %4469, %4465
  call void @llvm.lifetime.end.p0(i64 28, ptr %544) #10
  br label %4506

4474:                                             ; preds = %4459
  %4475 = landingpad { ptr, i32 }
          cleanup
  %4476 = extractvalue { ptr, i32 } %4475, 0
  store ptr %4476, ptr %6, align 8
  %4477 = extractvalue { ptr, i32 } %4475, 1
  store i32 %4477, ptr %7, align 4
  br label %4505

4478:                                             ; preds = %4461
  call void @llvm.lifetime.start.p0(i64 8, ptr %546) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %4479 unwind label %4484

4479:                                             ; preds = %4478
  call void @llvm.lifetime.start.p0(i64 8, ptr %547) #10
  %4480 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %543)
          to label %4481 unwind label %4488

4481:                                             ; preds = %4479
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %547, i32 noundef 1, ptr noundef @.str.4, i32 noundef 384, ptr noundef %4480)
          to label %4482 unwind label %4488

4482:                                             ; preds = %4481
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %4483 unwind label %4492

4483:                                             ; preds = %4482
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %547) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %546) #10
  br label %4498

4484:                                             ; preds = %4478
  %4485 = landingpad { ptr, i32 }
          cleanup
  %4486 = extractvalue { ptr, i32 } %4485, 0
  store ptr %4486, ptr %6, align 8
  %4487 = extractvalue { ptr, i32 } %4485, 1
  store i32 %4487, ptr %7, align 4
  br label %4497

4488:                                             ; preds = %4481, %4479
  %4489 = landingpad { ptr, i32 }
          cleanup
  %4490 = extractvalue { ptr, i32 } %4489, 0
  store ptr %4490, ptr %6, align 8
  %4491 = extractvalue { ptr, i32 } %4489, 1
  store i32 %4491, ptr %7, align 4
  br label %4496

4492:                                             ; preds = %4482
  %4493 = landingpad { ptr, i32 }
          cleanup
  %4494 = extractvalue { ptr, i32 } %4493, 0
  store ptr %4494, ptr %6, align 8
  %4495 = extractvalue { ptr, i32 } %4493, 1
  store i32 %4495, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #10
  br label %4496

4496:                                             ; preds = %4492, %4488
  call void @llvm.lifetime.end.p0(i64 8, ptr %547) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #10
  br label %4497

4497:                                             ; preds = %4496, %4484
  call void @llvm.lifetime.end.p0(i64 8, ptr %546) #10
  br label %4505

4498:                                             ; preds = %4483, %4462
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %543) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %548) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %549) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %549, ptr noundef @.str.271)
          to label %4499 unwind label %4507

4499:                                             ; preds = %4498
  call void @llvm.lifetime.start.p0(i64 28, ptr %550) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %550, ptr noundef @.str.10)
          to label %4500 unwind label %4511

4500:                                             ; preds = %4499
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %548, ptr noundef @.str.365, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %549, ptr noundef nonnull align 4 dereferenceable(28) %550)
          to label %4501 unwind label %4511

4501:                                             ; preds = %4500
  call void @llvm.lifetime.end.p0(i64 28, ptr %550) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %549) #10
  %4502 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %548)
          to label %4503 unwind label %4516

4503:                                             ; preds = %4501
  br i1 %4502, label %4504, label %4520

4504:                                             ; preds = %4503
  br label %4540

4505:                                             ; preds = %4497, %4474
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #10
  br label %4506

4506:                                             ; preds = %4505, %4473
  call void @llvm.lifetime.end.p0(i64 16, ptr %543) #10
  br label %5344

4507:                                             ; preds = %4498
  %4508 = landingpad { ptr, i32 }
          cleanup
  %4509 = extractvalue { ptr, i32 } %4508, 0
  store ptr %4509, ptr %6, align 8
  %4510 = extractvalue { ptr, i32 } %4508, 1
  store i32 %4510, ptr %7, align 4
  br label %4515

4511:                                             ; preds = %4500, %4499
  %4512 = landingpad { ptr, i32 }
          cleanup
  %4513 = extractvalue { ptr, i32 } %4512, 0
  store ptr %4513, ptr %6, align 8
  %4514 = extractvalue { ptr, i32 } %4512, 1
  store i32 %4514, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %550) #10
  br label %4515

4515:                                             ; preds = %4511, %4507
  call void @llvm.lifetime.end.p0(i64 28, ptr %549) #10
  br label %4548

4516:                                             ; preds = %4501
  %4517 = landingpad { ptr, i32 }
          cleanup
  %4518 = extractvalue { ptr, i32 } %4517, 0
  store ptr %4518, ptr %6, align 8
  %4519 = extractvalue { ptr, i32 } %4517, 1
  store i32 %4519, ptr %7, align 4
  br label %4547

4520:                                             ; preds = %4503
  call void @llvm.lifetime.start.p0(i64 8, ptr %551) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %4521 unwind label %4526

4521:                                             ; preds = %4520
  call void @llvm.lifetime.start.p0(i64 8, ptr %552) #10
  %4522 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %548)
          to label %4523 unwind label %4530

4523:                                             ; preds = %4521
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %552, i32 noundef 1, ptr noundef @.str.4, i32 noundef 386, ptr noundef %4522)
          to label %4524 unwind label %4530

4524:                                             ; preds = %4523
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %4525 unwind label %4534

4525:                                             ; preds = %4524
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %552) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %551) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %551) #10
  br label %4540

4526:                                             ; preds = %4520
  %4527 = landingpad { ptr, i32 }
          cleanup
  %4528 = extractvalue { ptr, i32 } %4527, 0
  store ptr %4528, ptr %6, align 8
  %4529 = extractvalue { ptr, i32 } %4527, 1
  store i32 %4529, ptr %7, align 4
  br label %4539

4530:                                             ; preds = %4523, %4521
  %4531 = landingpad { ptr, i32 }
          cleanup
  %4532 = extractvalue { ptr, i32 } %4531, 0
  store ptr %4532, ptr %6, align 8
  %4533 = extractvalue { ptr, i32 } %4531, 1
  store i32 %4533, ptr %7, align 4
  br label %4538

4534:                                             ; preds = %4524
  %4535 = landingpad { ptr, i32 }
          cleanup
  %4536 = extractvalue { ptr, i32 } %4535, 0
  store ptr %4536, ptr %6, align 8
  %4537 = extractvalue { ptr, i32 } %4535, 1
  store i32 %4537, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #10
  br label %4538

4538:                                             ; preds = %4534, %4530
  call void @llvm.lifetime.end.p0(i64 8, ptr %552) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %551) #10
  br label %4539

4539:                                             ; preds = %4538, %4526
  call void @llvm.lifetime.end.p0(i64 8, ptr %551) #10
  br label %4547

4540:                                             ; preds = %4525, %4504
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %548) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %548) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %553) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %554) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %554, ptr noundef @.str.10)
          to label %4541 unwind label %4549

4541:                                             ; preds = %4540
  call void @llvm.lifetime.start.p0(i64 28, ptr %555) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %555, ptr noundef @.str.10)
          to label %4542 unwind label %4553

4542:                                             ; preds = %4541
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %553, ptr noundef @.str.225, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %554, ptr noundef nonnull align 4 dereferenceable(28) %555)
          to label %4543 unwind label %4553

4543:                                             ; preds = %4542
  call void @llvm.lifetime.end.p0(i64 28, ptr %555) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %554) #10
  %4544 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %553)
          to label %4545 unwind label %4558

4545:                                             ; preds = %4543
  br i1 %4544, label %4546, label %4562

4546:                                             ; preds = %4545
  br label %4582

4547:                                             ; preds = %4539, %4516
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %548) #10
  br label %4548

4548:                                             ; preds = %4547, %4515
  call void @llvm.lifetime.end.p0(i64 16, ptr %548) #10
  br label %5344

4549:                                             ; preds = %4540
  %4550 = landingpad { ptr, i32 }
          cleanup
  %4551 = extractvalue { ptr, i32 } %4550, 0
  store ptr %4551, ptr %6, align 8
  %4552 = extractvalue { ptr, i32 } %4550, 1
  store i32 %4552, ptr %7, align 4
  br label %4557

4553:                                             ; preds = %4542, %4541
  %4554 = landingpad { ptr, i32 }
          cleanup
  %4555 = extractvalue { ptr, i32 } %4554, 0
  store ptr %4555, ptr %6, align 8
  %4556 = extractvalue { ptr, i32 } %4554, 1
  store i32 %4556, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %555) #10
  br label %4557

4557:                                             ; preds = %4553, %4549
  call void @llvm.lifetime.end.p0(i64 28, ptr %554) #10
  br label %4590

4558:                                             ; preds = %4543
  %4559 = landingpad { ptr, i32 }
          cleanup
  %4560 = extractvalue { ptr, i32 } %4559, 0
  store ptr %4560, ptr %6, align 8
  %4561 = extractvalue { ptr, i32 } %4559, 1
  store i32 %4561, ptr %7, align 4
  br label %4589

4562:                                             ; preds = %4545
  call void @llvm.lifetime.start.p0(i64 8, ptr %556) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %4563 unwind label %4568

4563:                                             ; preds = %4562
  call void @llvm.lifetime.start.p0(i64 8, ptr %557) #10
  %4564 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %553)
          to label %4565 unwind label %4572

4565:                                             ; preds = %4563
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %557, i32 noundef 1, ptr noundef @.str.4, i32 noundef 387, ptr noundef %4564)
          to label %4566 unwind label %4572

4566:                                             ; preds = %4565
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %557, ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %4567 unwind label %4576

4567:                                             ; preds = %4566
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %557) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %557) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %556) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %556) #10
  br label %4582

4568:                                             ; preds = %4562
  %4569 = landingpad { ptr, i32 }
          cleanup
  %4570 = extractvalue { ptr, i32 } %4569, 0
  store ptr %4570, ptr %6, align 8
  %4571 = extractvalue { ptr, i32 } %4569, 1
  store i32 %4571, ptr %7, align 4
  br label %4581

4572:                                             ; preds = %4565, %4563
  %4573 = landingpad { ptr, i32 }
          cleanup
  %4574 = extractvalue { ptr, i32 } %4573, 0
  store ptr %4574, ptr %6, align 8
  %4575 = extractvalue { ptr, i32 } %4573, 1
  store i32 %4575, ptr %7, align 4
  br label %4580

4576:                                             ; preds = %4566
  %4577 = landingpad { ptr, i32 }
          cleanup
  %4578 = extractvalue { ptr, i32 } %4577, 0
  store ptr %4578, ptr %6, align 8
  %4579 = extractvalue { ptr, i32 } %4577, 1
  store i32 %4579, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %557) #10
  br label %4580

4580:                                             ; preds = %4576, %4572
  call void @llvm.lifetime.end.p0(i64 8, ptr %557) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %556) #10
  br label %4581

4581:                                             ; preds = %4580, %4568
  call void @llvm.lifetime.end.p0(i64 8, ptr %556) #10
  br label %4589

4582:                                             ; preds = %4567, %4546
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %553) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %558) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %559) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %559, ptr noundef @.str.250)
          to label %4583 unwind label %4591

4583:                                             ; preds = %4582
  call void @llvm.lifetime.start.p0(i64 28, ptr %560) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %560, ptr noundef @.str.10)
          to label %4584 unwind label %4595

4584:                                             ; preds = %4583
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %558, ptr noundef @.str.248, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %559, ptr noundef nonnull align 4 dereferenceable(28) %560)
          to label %4585 unwind label %4595

4585:                                             ; preds = %4584
  call void @llvm.lifetime.end.p0(i64 28, ptr %560) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %559) #10
  %4586 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %558)
          to label %4587 unwind label %4600

4587:                                             ; preds = %4585
  br i1 %4586, label %4588, label %4604

4588:                                             ; preds = %4587
  br label %4624

4589:                                             ; preds = %4581, %4558
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #10
  br label %4590

4590:                                             ; preds = %4589, %4557
  call void @llvm.lifetime.end.p0(i64 16, ptr %553) #10
  br label %5344

4591:                                             ; preds = %4582
  %4592 = landingpad { ptr, i32 }
          cleanup
  %4593 = extractvalue { ptr, i32 } %4592, 0
  store ptr %4593, ptr %6, align 8
  %4594 = extractvalue { ptr, i32 } %4592, 1
  store i32 %4594, ptr %7, align 4
  br label %4599

4595:                                             ; preds = %4584, %4583
  %4596 = landingpad { ptr, i32 }
          cleanup
  %4597 = extractvalue { ptr, i32 } %4596, 0
  store ptr %4597, ptr %6, align 8
  %4598 = extractvalue { ptr, i32 } %4596, 1
  store i32 %4598, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %560) #10
  br label %4599

4599:                                             ; preds = %4595, %4591
  call void @llvm.lifetime.end.p0(i64 28, ptr %559) #10
  br label %4632

4600:                                             ; preds = %4585
  %4601 = landingpad { ptr, i32 }
          cleanup
  %4602 = extractvalue { ptr, i32 } %4601, 0
  store ptr %4602, ptr %6, align 8
  %4603 = extractvalue { ptr, i32 } %4601, 1
  store i32 %4603, ptr %7, align 4
  br label %4631

4604:                                             ; preds = %4587
  call void @llvm.lifetime.start.p0(i64 8, ptr %561) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %4605 unwind label %4610

4605:                                             ; preds = %4604
  call void @llvm.lifetime.start.p0(i64 8, ptr %562) #10
  %4606 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %558)
          to label %4607 unwind label %4614

4607:                                             ; preds = %4605
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %562, i32 noundef 1, ptr noundef @.str.4, i32 noundef 388, ptr noundef %4606)
          to label %4608 unwind label %4614

4608:                                             ; preds = %4607
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %4609 unwind label %4618

4609:                                             ; preds = %4608
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %562) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %561) #10
  br label %4624

4610:                                             ; preds = %4604
  %4611 = landingpad { ptr, i32 }
          cleanup
  %4612 = extractvalue { ptr, i32 } %4611, 0
  store ptr %4612, ptr %6, align 8
  %4613 = extractvalue { ptr, i32 } %4611, 1
  store i32 %4613, ptr %7, align 4
  br label %4623

4614:                                             ; preds = %4607, %4605
  %4615 = landingpad { ptr, i32 }
          cleanup
  %4616 = extractvalue { ptr, i32 } %4615, 0
  store ptr %4616, ptr %6, align 8
  %4617 = extractvalue { ptr, i32 } %4615, 1
  store i32 %4617, ptr %7, align 4
  br label %4622

4618:                                             ; preds = %4608
  %4619 = landingpad { ptr, i32 }
          cleanup
  %4620 = extractvalue { ptr, i32 } %4619, 0
  store ptr %4620, ptr %6, align 8
  %4621 = extractvalue { ptr, i32 } %4619, 1
  store i32 %4621, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #10
  br label %4622

4622:                                             ; preds = %4618, %4614
  call void @llvm.lifetime.end.p0(i64 8, ptr %562) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #10
  br label %4623

4623:                                             ; preds = %4622, %4610
  call void @llvm.lifetime.end.p0(i64 8, ptr %561) #10
  br label %4631

4624:                                             ; preds = %4609, %4588
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %558) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %558) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %563) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %564) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %564, ptr noundef @.str.10)
          to label %4625 unwind label %4633

4625:                                             ; preds = %4624
  call void @llvm.lifetime.start.p0(i64 28, ptr %565) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %565, ptr noundef @.str.271)
          to label %4626 unwind label %4637

4626:                                             ; preds = %4625
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %563, ptr noundef @.str.225, ptr noundef @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %564, ptr noundef nonnull align 4 dereferenceable(28) %565)
          to label %4627 unwind label %4637

4627:                                             ; preds = %4626
  call void @llvm.lifetime.end.p0(i64 28, ptr %565) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %564) #10
  %4628 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %563)
          to label %4629 unwind label %4642

4629:                                             ; preds = %4627
  br i1 %4628, label %4630, label %4646

4630:                                             ; preds = %4629
  br label %4666

4631:                                             ; preds = %4623, %4600
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %558) #10
  br label %4632

4632:                                             ; preds = %4631, %4599
  call void @llvm.lifetime.end.p0(i64 16, ptr %558) #10
  br label %5344

4633:                                             ; preds = %4624
  %4634 = landingpad { ptr, i32 }
          cleanup
  %4635 = extractvalue { ptr, i32 } %4634, 0
  store ptr %4635, ptr %6, align 8
  %4636 = extractvalue { ptr, i32 } %4634, 1
  store i32 %4636, ptr %7, align 4
  br label %4641

4637:                                             ; preds = %4626, %4625
  %4638 = landingpad { ptr, i32 }
          cleanup
  %4639 = extractvalue { ptr, i32 } %4638, 0
  store ptr %4639, ptr %6, align 8
  %4640 = extractvalue { ptr, i32 } %4638, 1
  store i32 %4640, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %565) #10
  br label %4641

4641:                                             ; preds = %4637, %4633
  call void @llvm.lifetime.end.p0(i64 28, ptr %564) #10
  br label %4674

4642:                                             ; preds = %4627
  %4643 = landingpad { ptr, i32 }
          cleanup
  %4644 = extractvalue { ptr, i32 } %4643, 0
  store ptr %4644, ptr %6, align 8
  %4645 = extractvalue { ptr, i32 } %4643, 1
  store i32 %4645, ptr %7, align 4
  br label %4673

4646:                                             ; preds = %4629
  call void @llvm.lifetime.start.p0(i64 8, ptr %566) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %4647 unwind label %4652

4647:                                             ; preds = %4646
  call void @llvm.lifetime.start.p0(i64 8, ptr %567) #10
  %4648 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %563)
          to label %4649 unwind label %4656

4649:                                             ; preds = %4647
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %567, i32 noundef 1, ptr noundef @.str.4, i32 noundef 390, ptr noundef %4648)
          to label %4650 unwind label %4656

4650:                                             ; preds = %4649
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %4651 unwind label %4660

4651:                                             ; preds = %4650
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %567) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %566) #10
  br label %4666

4652:                                             ; preds = %4646
  %4653 = landingpad { ptr, i32 }
          cleanup
  %4654 = extractvalue { ptr, i32 } %4653, 0
  store ptr %4654, ptr %6, align 8
  %4655 = extractvalue { ptr, i32 } %4653, 1
  store i32 %4655, ptr %7, align 4
  br label %4665

4656:                                             ; preds = %4649, %4647
  %4657 = landingpad { ptr, i32 }
          cleanup
  %4658 = extractvalue { ptr, i32 } %4657, 0
  store ptr %4658, ptr %6, align 8
  %4659 = extractvalue { ptr, i32 } %4657, 1
  store i32 %4659, ptr %7, align 4
  br label %4664

4660:                                             ; preds = %4650
  %4661 = landingpad { ptr, i32 }
          cleanup
  %4662 = extractvalue { ptr, i32 } %4661, 0
  store ptr %4662, ptr %6, align 8
  %4663 = extractvalue { ptr, i32 } %4661, 1
  store i32 %4663, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #10
  br label %4664

4664:                                             ; preds = %4660, %4656
  call void @llvm.lifetime.end.p0(i64 8, ptr %567) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #10
  br label %4665

4665:                                             ; preds = %4664, %4652
  call void @llvm.lifetime.end.p0(i64 8, ptr %566) #10
  br label %4673

4666:                                             ; preds = %4651, %4630
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %563) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %568) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %569) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %569, ptr noundef @.str.10)
          to label %4667 unwind label %4675

4667:                                             ; preds = %4666
  call void @llvm.lifetime.start.p0(i64 28, ptr %570) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %570, ptr noundef @.str.10)
          to label %4668 unwind label %4679

4668:                                             ; preds = %4667
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %568, ptr noundef @.str.225, ptr noundef @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %569, ptr noundef nonnull align 4 dereferenceable(28) %570)
          to label %4669 unwind label %4679

4669:                                             ; preds = %4668
  call void @llvm.lifetime.end.p0(i64 28, ptr %570) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %569) #10
  %4670 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %568)
          to label %4671 unwind label %4684

4671:                                             ; preds = %4669
  br i1 %4670, label %4672, label %4688

4672:                                             ; preds = %4671
  br label %4708

4673:                                             ; preds = %4665, %4642
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #10
  br label %4674

4674:                                             ; preds = %4673, %4641
  call void @llvm.lifetime.end.p0(i64 16, ptr %563) #10
  br label %5344

4675:                                             ; preds = %4666
  %4676 = landingpad { ptr, i32 }
          cleanup
  %4677 = extractvalue { ptr, i32 } %4676, 0
  store ptr %4677, ptr %6, align 8
  %4678 = extractvalue { ptr, i32 } %4676, 1
  store i32 %4678, ptr %7, align 4
  br label %4683

4679:                                             ; preds = %4668, %4667
  %4680 = landingpad { ptr, i32 }
          cleanup
  %4681 = extractvalue { ptr, i32 } %4680, 0
  store ptr %4681, ptr %6, align 8
  %4682 = extractvalue { ptr, i32 } %4680, 1
  store i32 %4682, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %570) #10
  br label %4683

4683:                                             ; preds = %4679, %4675
  call void @llvm.lifetime.end.p0(i64 28, ptr %569) #10
  br label %4716

4684:                                             ; preds = %4669
  %4685 = landingpad { ptr, i32 }
          cleanup
  %4686 = extractvalue { ptr, i32 } %4685, 0
  store ptr %4686, ptr %6, align 8
  %4687 = extractvalue { ptr, i32 } %4685, 1
  store i32 %4687, ptr %7, align 4
  br label %4715

4688:                                             ; preds = %4671
  call void @llvm.lifetime.start.p0(i64 8, ptr %571) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %4689 unwind label %4694

4689:                                             ; preds = %4688
  call void @llvm.lifetime.start.p0(i64 8, ptr %572) #10
  %4690 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %568)
          to label %4691 unwind label %4698

4691:                                             ; preds = %4689
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %572, i32 noundef 1, ptr noundef @.str.4, i32 noundef 391, ptr noundef %4690)
          to label %4692 unwind label %4698

4692:                                             ; preds = %4691
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %4693 unwind label %4702

4693:                                             ; preds = %4692
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %572) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %571) #10
  br label %4708

4694:                                             ; preds = %4688
  %4695 = landingpad { ptr, i32 }
          cleanup
  %4696 = extractvalue { ptr, i32 } %4695, 0
  store ptr %4696, ptr %6, align 8
  %4697 = extractvalue { ptr, i32 } %4695, 1
  store i32 %4697, ptr %7, align 4
  br label %4707

4698:                                             ; preds = %4691, %4689
  %4699 = landingpad { ptr, i32 }
          cleanup
  %4700 = extractvalue { ptr, i32 } %4699, 0
  store ptr %4700, ptr %6, align 8
  %4701 = extractvalue { ptr, i32 } %4699, 1
  store i32 %4701, ptr %7, align 4
  br label %4706

4702:                                             ; preds = %4692
  %4703 = landingpad { ptr, i32 }
          cleanup
  %4704 = extractvalue { ptr, i32 } %4703, 0
  store ptr %4704, ptr %6, align 8
  %4705 = extractvalue { ptr, i32 } %4703, 1
  store i32 %4705, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #10
  br label %4706

4706:                                             ; preds = %4702, %4698
  call void @llvm.lifetime.end.p0(i64 8, ptr %572) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #10
  br label %4707

4707:                                             ; preds = %4706, %4694
  call void @llvm.lifetime.end.p0(i64 8, ptr %571) #10
  br label %4715

4708:                                             ; preds = %4693, %4672
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %568) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %568) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %573) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %574) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %574, ptr noundef @.str.10)
          to label %4709 unwind label %4717

4709:                                             ; preds = %4708
  call void @llvm.lifetime.start.p0(i64 28, ptr %575) #10
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %575, ptr noundef @.str.250)
          to label %4710 unwind label %4721

4710:                                             ; preds = %4709
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %573, ptr noundef @.str.225, ptr noundef @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %574, ptr noundef nonnull align 4 dereferenceable(28) %575)
          to label %4711 unwind label %4721

4711:                                             ; preds = %4710
  call void @llvm.lifetime.end.p0(i64 28, ptr %575) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %574) #10
  %4712 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
          to label %4713 unwind label %4726

4713:                                             ; preds = %4711
  br i1 %4712, label %4714, label %4730

4714:                                             ; preds = %4713
  br label %4750

4715:                                             ; preds = %4707, %4684
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %568) #10
  br label %4716

4716:                                             ; preds = %4715, %4683
  call void @llvm.lifetime.end.p0(i64 16, ptr %568) #10
  br label %5344

4717:                                             ; preds = %4708
  %4718 = landingpad { ptr, i32 }
          cleanup
  %4719 = extractvalue { ptr, i32 } %4718, 0
  store ptr %4719, ptr %6, align 8
  %4720 = extractvalue { ptr, i32 } %4718, 1
  store i32 %4720, ptr %7, align 4
  br label %4725

4721:                                             ; preds = %4710, %4709
  %4722 = landingpad { ptr, i32 }
          cleanup
  %4723 = extractvalue { ptr, i32 } %4722, 0
  store ptr %4723, ptr %6, align 8
  %4724 = extractvalue { ptr, i32 } %4722, 1
  store i32 %4724, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %575) #10
  br label %4725

4725:                                             ; preds = %4721, %4717
  call void @llvm.lifetime.end.p0(i64 28, ptr %574) #10
  br label %4758

4726:                                             ; preds = %4711
  %4727 = landingpad { ptr, i32 }
          cleanup
  %4728 = extractvalue { ptr, i32 } %4727, 0
  store ptr %4728, ptr %6, align 8
  %4729 = extractvalue { ptr, i32 } %4727, 1
  store i32 %4729, ptr %7, align 4
  br label %4757

4730:                                             ; preds = %4713
  call void @llvm.lifetime.start.p0(i64 8, ptr %576) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %4731 unwind label %4736

4731:                                             ; preds = %4730
  call void @llvm.lifetime.start.p0(i64 8, ptr %577) #10
  %4732 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
          to label %4733 unwind label %4740

4733:                                             ; preds = %4731
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %577, i32 noundef 1, ptr noundef @.str.4, i32 noundef 392, ptr noundef %4732)
          to label %4734 unwind label %4740

4734:                                             ; preds = %4733
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %4735 unwind label %4744

4735:                                             ; preds = %4734
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %577) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %576) #10
  br label %4750

4736:                                             ; preds = %4730
  %4737 = landingpad { ptr, i32 }
          cleanup
  %4738 = extractvalue { ptr, i32 } %4737, 0
  store ptr %4738, ptr %6, align 8
  %4739 = extractvalue { ptr, i32 } %4737, 1
  store i32 %4739, ptr %7, align 4
  br label %4749

4740:                                             ; preds = %4733, %4731
  %4741 = landingpad { ptr, i32 }
          cleanup
  %4742 = extractvalue { ptr, i32 } %4741, 0
  store ptr %4742, ptr %6, align 8
  %4743 = extractvalue { ptr, i32 } %4741, 1
  store i32 %4743, ptr %7, align 4
  br label %4748

4744:                                             ; preds = %4734
  %4745 = landingpad { ptr, i32 }
          cleanup
  %4746 = extractvalue { ptr, i32 } %4745, 0
  store ptr %4746, ptr %6, align 8
  %4747 = extractvalue { ptr, i32 } %4745, 1
  store i32 %4747, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #10
  br label %4748

4748:                                             ; preds = %4744, %4740
  call void @llvm.lifetime.end.p0(i64 8, ptr %577) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #10
  br label %4749

4749:                                             ; preds = %4748, %4736
  call void @llvm.lifetime.end.p0(i64 8, ptr %576) #10
  br label %4757

4750:                                             ; preds = %4735, %4714
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %573) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %578) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %579) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %580) #10
  invoke void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %580, i8 noundef zeroext 10)
          to label %4751 unwind label %4759

4751:                                             ; preds = %4750
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %579, ptr noundef nonnull align 4 dereferenceable(28) %580, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %4752 unwind label %4759

4752:                                             ; preds = %4751
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %578, ptr noundef @.str.267, ptr noundef @.str.366, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %579)
          to label %4753 unwind label %4763

4753:                                             ; preds = %4752
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %579) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %580) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %579) #10
  %4754 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %578)
          to label %4755 unwind label %4768

4755:                                             ; preds = %4753
  br i1 %4754, label %4756, label %4772

4756:                                             ; preds = %4755
  br label %4792

4757:                                             ; preds = %4749, %4726
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #10
  br label %4758

4758:                                             ; preds = %4757, %4725
  call void @llvm.lifetime.end.p0(i64 16, ptr %573) #10
  br label %5344

4759:                                             ; preds = %4751, %4750
  %4760 = landingpad { ptr, i32 }
          cleanup
  %4761 = extractvalue { ptr, i32 } %4760, 0
  store ptr %4761, ptr %6, align 8
  %4762 = extractvalue { ptr, i32 } %4760, 1
  store i32 %4762, ptr %7, align 4
  br label %4767

4763:                                             ; preds = %4752
  %4764 = landingpad { ptr, i32 }
          cleanup
  %4765 = extractvalue { ptr, i32 } %4764, 0
  store ptr %4765, ptr %6, align 8
  %4766 = extractvalue { ptr, i32 } %4764, 1
  store i32 %4766, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %579) #10
  br label %4767

4767:                                             ; preds = %4763, %4759
  call void @llvm.lifetime.end.p0(i64 28, ptr %580) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %579) #10
  br label %4800

4768:                                             ; preds = %4753
  %4769 = landingpad { ptr, i32 }
          cleanup
  %4770 = extractvalue { ptr, i32 } %4769, 0
  store ptr %4770, ptr %6, align 8
  %4771 = extractvalue { ptr, i32 } %4769, 1
  store i32 %4771, ptr %7, align 4
  br label %4799

4772:                                             ; preds = %4755
  call void @llvm.lifetime.start.p0(i64 8, ptr %581) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %4773 unwind label %4778

4773:                                             ; preds = %4772
  call void @llvm.lifetime.start.p0(i64 8, ptr %582) #10
  %4774 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %578)
          to label %4775 unwind label %4782

4775:                                             ; preds = %4773
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %582, i32 noundef 1, ptr noundef @.str.4, i32 noundef 395, ptr noundef %4774)
          to label %4776 unwind label %4782

4776:                                             ; preds = %4775
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %4777 unwind label %4786

4777:                                             ; preds = %4776
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %582) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %582) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %581) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %581) #10
  br label %4792

4778:                                             ; preds = %4772
  %4779 = landingpad { ptr, i32 }
          cleanup
  %4780 = extractvalue { ptr, i32 } %4779, 0
  store ptr %4780, ptr %6, align 8
  %4781 = extractvalue { ptr, i32 } %4779, 1
  store i32 %4781, ptr %7, align 4
  br label %4791

4782:                                             ; preds = %4775, %4773
  %4783 = landingpad { ptr, i32 }
          cleanup
  %4784 = extractvalue { ptr, i32 } %4783, 0
  store ptr %4784, ptr %6, align 8
  %4785 = extractvalue { ptr, i32 } %4783, 1
  store i32 %4785, ptr %7, align 4
  br label %4790

4786:                                             ; preds = %4776
  %4787 = landingpad { ptr, i32 }
          cleanup
  %4788 = extractvalue { ptr, i32 } %4787, 0
  store ptr %4788, ptr %6, align 8
  %4789 = extractvalue { ptr, i32 } %4787, 1
  store i32 %4789, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %582) #10
  br label %4790

4790:                                             ; preds = %4786, %4782
  call void @llvm.lifetime.end.p0(i64 8, ptr %582) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %581) #10
  br label %4791

4791:                                             ; preds = %4790, %4778
  call void @llvm.lifetime.end.p0(i64 8, ptr %581) #10
  br label %4799

4792:                                             ; preds = %4777, %4756
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %578) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %578) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %583) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %584) #10
  call void @llvm.lifetime.start.p0(i64 28, ptr %585) #10
  invoke void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %585, i8 noundef zeroext 10)
          to label %4793 unwind label %4801

4793:                                             ; preds = %4792
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %584, ptr noundef nonnull align 4 dereferenceable(28) %585, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %4794 unwind label %4801

4794:                                             ; preds = %4793
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %583, ptr noundef @.str.258, ptr noundef @.str.367, ptr noundef nonnull align 1 dereferenceable(4) @.str.218, ptr noundef nonnull align 8 dereferenceable(32) %584)
          to label %4795 unwind label %4805

4795:                                             ; preds = %4794
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %584) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %585) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %584) #10
  %4796 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %583)
          to label %4797 unwind label %4810

4797:                                             ; preds = %4795
  br i1 %4796, label %4798, label %4814

4798:                                             ; preds = %4797
  br label %4834

4799:                                             ; preds = %4791, %4768
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %578) #10
  br label %4800

4800:                                             ; preds = %4799, %4767
  call void @llvm.lifetime.end.p0(i64 16, ptr %578) #10
  br label %5344

4801:                                             ; preds = %4793, %4792
  %4802 = landingpad { ptr, i32 }
          cleanup
  %4803 = extractvalue { ptr, i32 } %4802, 0
  store ptr %4803, ptr %6, align 8
  %4804 = extractvalue { ptr, i32 } %4802, 1
  store i32 %4804, ptr %7, align 4
  br label %4809

4805:                                             ; preds = %4794
  %4806 = landingpad { ptr, i32 }
          cleanup
  %4807 = extractvalue { ptr, i32 } %4806, 0
  store ptr %4807, ptr %6, align 8
  %4808 = extractvalue { ptr, i32 } %4806, 1
  store i32 %4808, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %584) #10
  br label %4809

4809:                                             ; preds = %4805, %4801
  call void @llvm.lifetime.end.p0(i64 28, ptr %585) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %584) #10
  br label %4845

4810:                                             ; preds = %4795
  %4811 = landingpad { ptr, i32 }
          cleanup
  %4812 = extractvalue { ptr, i32 } %4811, 0
  store ptr %4812, ptr %6, align 8
  %4813 = extractvalue { ptr, i32 } %4811, 1
  store i32 %4813, ptr %7, align 4
  br label %4844

4814:                                             ; preds = %4797
  call void @llvm.lifetime.start.p0(i64 8, ptr %586) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %586)
          to label %4815 unwind label %4820

4815:                                             ; preds = %4814
  call void @llvm.lifetime.start.p0(i64 8, ptr %587) #10
  %4816 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %583)
          to label %4817 unwind label %4824

4817:                                             ; preds = %4815
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %587, i32 noundef 1, ptr noundef @.str.4, i32 noundef 396, ptr noundef %4816)
          to label %4818 unwind label %4824

4818:                                             ; preds = %4817
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %587, ptr noundef nonnull align 8 dereferenceable(8) %586)
          to label %4819 unwind label %4828

4819:                                             ; preds = %4818
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %587) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %587) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %586) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %586) #10
  br label %4834

4820:                                             ; preds = %4814
  %4821 = landingpad { ptr, i32 }
          cleanup
  %4822 = extractvalue { ptr, i32 } %4821, 0
  store ptr %4822, ptr %6, align 8
  %4823 = extractvalue { ptr, i32 } %4821, 1
  store i32 %4823, ptr %7, align 4
  br label %4833

4824:                                             ; preds = %4817, %4815
  %4825 = landingpad { ptr, i32 }
          cleanup
  %4826 = extractvalue { ptr, i32 } %4825, 0
  store ptr %4826, ptr %6, align 8
  %4827 = extractvalue { ptr, i32 } %4825, 1
  store i32 %4827, ptr %7, align 4
  br label %4832

4828:                                             ; preds = %4818
  %4829 = landingpad { ptr, i32 }
          cleanup
  %4830 = extractvalue { ptr, i32 } %4829, 0
  store ptr %4830, ptr %6, align 8
  %4831 = extractvalue { ptr, i32 } %4829, 1
  store i32 %4831, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %587) #10
  br label %4832

4832:                                             ; preds = %4828, %4824
  call void @llvm.lifetime.end.p0(i64 8, ptr %587) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %586) #10
  br label %4833

4833:                                             ; preds = %4832, %4820
  call void @llvm.lifetime.end.p0(i64 8, ptr %586) #10
  br label %4844

4834:                                             ; preds = %4819, %4798
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %583) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %583) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %588) #10
  store i8 0, ptr %588, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %589) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef @.str.27)
          to label %4835 unwind label %4846

4835:                                             ; preds = %4834
  %4836 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %589)
          to label %4837 unwind label %4846

4837:                                             ; preds = %4835
  br i1 %4836, label %4838, label %4895

4838:                                             ; preds = %4837
  call void @llvm.lifetime.start.p0(i64 1, ptr %590) #10
  store i8 0, ptr %590, align 1, !tbaa !9
  %4839 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4840 unwind label %4850

4840:                                             ; preds = %4838
  br i1 %4839, label %4841, label %4880

4841:                                             ; preds = %4840
  call void @llvm.lifetime.start.p0(i64 32, ptr %592) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %593) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %592, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %593)
          to label %4842 unwind label %4854

4842:                                             ; preds = %4841
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %591, ptr noundef nonnull align 8 dereferenceable(32) %592, i8 noundef zeroext -56)
          to label %4843 unwind label %4858

4843:                                             ; preds = %4842
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %593) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %592) #10
  br label %4880

4844:                                             ; preds = %4833, %4810
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %583) #10
  br label %4845

4845:                                             ; preds = %4844, %4809
  call void @llvm.lifetime.end.p0(i64 16, ptr %583) #10
  br label %5344

4846:                                             ; preds = %4835, %4834
  %4847 = landingpad { ptr, i32 }
          cleanup
  %4848 = extractvalue { ptr, i32 } %4847, 0
  store ptr %4848, ptr %6, align 8
  %4849 = extractvalue { ptr, i32 } %4847, 1
  store i32 %4849, ptr %7, align 4
  br label %4927

4850:                                             ; preds = %4838
  %4851 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4852 = extractvalue { ptr, i32 } %4851, 0
  store ptr %4852, ptr %6, align 8
  %4853 = extractvalue { ptr, i32 } %4851, 1
  store i32 %4853, ptr %7, align 4
  br label %4863

4854:                                             ; preds = %4841
  %4855 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4856 = extractvalue { ptr, i32 } %4855, 0
  store ptr %4856, ptr %6, align 8
  %4857 = extractvalue { ptr, i32 } %4855, 1
  store i32 %4857, ptr %7, align 4
  br label %4862

4858:                                             ; preds = %4842
  %4859 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4860 = extractvalue { ptr, i32 } %4859, 0
  store ptr %4860, ptr %6, align 8
  %4861 = extractvalue { ptr, i32 } %4859, 1
  store i32 %4861, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #10
  br label %4862

4862:                                             ; preds = %4858, %4854
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %593) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %593) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %592) #10
  br label %4863

4863:                                             ; preds = %4862, %4850
  %4864 = load i32, ptr %7, align 4
  %4865 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %4866 = icmp eq i32 %4864, %4865
  br i1 %4866, label %4867, label %4876

4867:                                             ; preds = %4863
  call void @llvm.lifetime.start.p0(i64 8, ptr %594) #10
  %4868 = load ptr, ptr %6, align 8
  %4869 = call ptr @__cxa_begin_catch(ptr %4868) #10
  store ptr %4869, ptr %594, align 8
  store i8 1, ptr %590, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %4870 unwind label %4886

4870:                                             ; preds = %4867
  call void @llvm.lifetime.end.p0(i64 8, ptr %594) #10
  br label %4871

4871:                                             ; preds = %4880, %4870
  %4872 = load i8, ptr %590, align 1, !tbaa !9, !range !11, !noundef !12
  %4873 = trunc i8 %4872 to i1
  br i1 %4873, label %4890, label %4874

4874:                                             ; preds = %4871
  %4875 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %589, i32 0, i32 0
  store ptr @.str.369, ptr %4875, align 8, !tbaa !13
  store i32 4, ptr %136, align 4
  br label %4891

4876:                                             ; preds = %4863
  %4877 = load ptr, ptr %6, align 8
  %4878 = call ptr @__cxa_begin_catch(ptr %4877) #10
  %4879 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %589, i32 0, i32 0
  store ptr @.str.368, ptr %4879, align 8, !tbaa !13
  store i32 4, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %4881 unwind label %4882

4880:                                             ; preds = %4843, %4840
  br label %4871

4881:                                             ; preds = %4876
  br label %4891

4882:                                             ; preds = %4876
  %4883 = landingpad { ptr, i32 }
          cleanup
  %4884 = extractvalue { ptr, i32 } %4883, 0
  store ptr %4884, ptr %6, align 8
  %4885 = extractvalue { ptr, i32 } %4883, 1
  store i32 %4885, ptr %7, align 4
  br label %4894

4886:                                             ; preds = %4867
  %4887 = landingpad { ptr, i32 }
          cleanup
  %4888 = extractvalue { ptr, i32 } %4887, 0
  store ptr %4888, ptr %6, align 8
  %4889 = extractvalue { ptr, i32 } %4887, 1
  store i32 %4889, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %594) #10
  br label %4894

4890:                                             ; preds = %4871
  store i32 0, ptr %136, align 4
  br label %4891

4891:                                             ; preds = %4890, %4881, %4874
  call void @llvm.lifetime.end.p0(i64 1, ptr %590) #10
  %4892 = load i32, ptr %136, align 4
  switch i32 %4892, label %5354 [
    i32 0, label %4893
    i32 4, label %4896
  ]

4893:                                             ; preds = %4891
  br label %4916

4894:                                             ; preds = %4886, %4882
  call void @llvm.lifetime.end.p0(i64 1, ptr %590) #10
  br label %4927

4895:                                             ; preds = %4837
  br label %4896

4896:                                             ; preds = %4895, %4891
  call void @llvm.lifetime.start.p0(i64 8, ptr %595) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %595)
          to label %4897 unwind label %4902

4897:                                             ; preds = %4896
  call void @llvm.lifetime.start.p0(i64 8, ptr %596) #10
  %4898 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %589, i32 0, i32 0
  %4899 = load ptr, ptr %4898, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %596, i32 noundef 1, ptr noundef @.str.4, i32 noundef 401, ptr noundef %4899)
          to label %4900 unwind label %4906

4900:                                             ; preds = %4897
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %596, ptr noundef nonnull align 8 dereferenceable(8) %595)
          to label %4901 unwind label %4910

4901:                                             ; preds = %4900
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %596) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %596) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #10
  br label %4916

4902:                                             ; preds = %4896
  %4903 = landingpad { ptr, i32 }
          cleanup
  %4904 = extractvalue { ptr, i32 } %4903, 0
  store ptr %4904, ptr %6, align 8
  %4905 = extractvalue { ptr, i32 } %4903, 1
  store i32 %4905, ptr %7, align 4
  br label %4915

4906:                                             ; preds = %4897
  %4907 = landingpad { ptr, i32 }
          cleanup
  %4908 = extractvalue { ptr, i32 } %4907, 0
  store ptr %4908, ptr %6, align 8
  %4909 = extractvalue { ptr, i32 } %4907, 1
  store i32 %4909, ptr %7, align 4
  br label %4914

4910:                                             ; preds = %4900
  %4911 = landingpad { ptr, i32 }
          cleanup
  %4912 = extractvalue { ptr, i32 } %4911, 0
  store ptr %4912, ptr %6, align 8
  %4913 = extractvalue { ptr, i32 } %4911, 1
  store i32 %4913, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %596) #10
  br label %4914

4914:                                             ; preds = %4910, %4906
  call void @llvm.lifetime.end.p0(i64 8, ptr %596) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #10
  br label %4915

4915:                                             ; preds = %4914, %4902
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #10
  br label %4927

4916:                                             ; preds = %4901, %4893
  call void @llvm.lifetime.end.p0(i64 8, ptr %589) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %597) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %597, ptr noundef @.str.27)
          to label %4917 unwind label %4928

4917:                                             ; preds = %4916
  %4918 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %597)
          to label %4919 unwind label %4928

4919:                                             ; preds = %4917
  br i1 %4918, label %4920, label %4972

4920:                                             ; preds = %4919
  call void @llvm.lifetime.start.p0(i64 1, ptr %598) #10
  store i8 0, ptr %598, align 1, !tbaa !9
  %4921 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4922 unwind label %4932

4922:                                             ; preds = %4920
  br i1 %4921, label %4923, label %4957

4923:                                             ; preds = %4922
  call void @llvm.lifetime.start.p0(i64 24, ptr %600) #10
  %4924 = getelementptr inbounds [16 x i8], ptr %112, i64 0, i64 0
  invoke void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %600, ptr noundef %4924, i8 noundef zeroext -56)
          to label %4925 unwind label %4936

4925:                                             ; preds = %4923
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %599, ptr noundef nonnull align 4 dereferenceable(24) %600)
          to label %4926 unwind label %4936

4926:                                             ; preds = %4925
  call void @llvm.lifetime.end.p0(i64 24, ptr %600) #10
  br label %4957

4927:                                             ; preds = %4915, %4894, %4846
  call void @llvm.lifetime.end.p0(i64 8, ptr %589) #10
  br label %5343

4928:                                             ; preds = %4917, %4916
  %4929 = landingpad { ptr, i32 }
          cleanup
  %4930 = extractvalue { ptr, i32 } %4929, 0
  store ptr %4930, ptr %6, align 8
  %4931 = extractvalue { ptr, i32 } %4929, 1
  store i32 %4931, ptr %7, align 4
  br label %5009

4932:                                             ; preds = %4920
  %4933 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4934 = extractvalue { ptr, i32 } %4933, 0
  store ptr %4934, ptr %6, align 8
  %4935 = extractvalue { ptr, i32 } %4933, 1
  store i32 %4935, ptr %7, align 4
  br label %4940

4936:                                             ; preds = %4925, %4923
  %4937 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4938 = extractvalue { ptr, i32 } %4937, 0
  store ptr %4938, ptr %6, align 8
  %4939 = extractvalue { ptr, i32 } %4937, 1
  store i32 %4939, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %600) #10
  br label %4940

4940:                                             ; preds = %4936, %4932
  %4941 = load i32, ptr %7, align 4
  %4942 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %4943 = icmp eq i32 %4941, %4942
  br i1 %4943, label %4944, label %4953

4944:                                             ; preds = %4940
  call void @llvm.lifetime.start.p0(i64 8, ptr %601) #10
  %4945 = load ptr, ptr %6, align 8
  %4946 = call ptr @__cxa_begin_catch(ptr %4945) #10
  store ptr %4946, ptr %601, align 8
  store i8 1, ptr %598, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %4947 unwind label %4963

4947:                                             ; preds = %4944
  call void @llvm.lifetime.end.p0(i64 8, ptr %601) #10
  br label %4948

4948:                                             ; preds = %4957, %4947
  %4949 = load i8, ptr %598, align 1, !tbaa !9, !range !11, !noundef !12
  %4950 = trunc i8 %4949 to i1
  br i1 %4950, label %4967, label %4951

4951:                                             ; preds = %4948
  %4952 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %597, i32 0, i32 0
  store ptr @.str.371, ptr %4952, align 8, !tbaa !13
  store i32 5, ptr %136, align 4
  br label %4968

4953:                                             ; preds = %4940
  %4954 = load ptr, ptr %6, align 8
  %4955 = call ptr @__cxa_begin_catch(ptr %4954) #10
  %4956 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %597, i32 0, i32 0
  store ptr @.str.370, ptr %4956, align 8, !tbaa !13
  store i32 5, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %4958 unwind label %4959

4957:                                             ; preds = %4926, %4922
  br label %4948

4958:                                             ; preds = %4953
  br label %4968

4959:                                             ; preds = %4953
  %4960 = landingpad { ptr, i32 }
          cleanup
  %4961 = extractvalue { ptr, i32 } %4960, 0
  store ptr %4961, ptr %6, align 8
  %4962 = extractvalue { ptr, i32 } %4960, 1
  store i32 %4962, ptr %7, align 4
  br label %4971

4963:                                             ; preds = %4944
  %4964 = landingpad { ptr, i32 }
          cleanup
  %4965 = extractvalue { ptr, i32 } %4964, 0
  store ptr %4965, ptr %6, align 8
  %4966 = extractvalue { ptr, i32 } %4964, 1
  store i32 %4966, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %601) #10
  br label %4971

4967:                                             ; preds = %4948
  store i32 0, ptr %136, align 4
  br label %4968

4968:                                             ; preds = %4967, %4958, %4951
  call void @llvm.lifetime.end.p0(i64 1, ptr %598) #10
  %4969 = load i32, ptr %136, align 4
  switch i32 %4969, label %5354 [
    i32 0, label %4970
    i32 5, label %4973
  ]

4970:                                             ; preds = %4968
  br label %4993

4971:                                             ; preds = %4963, %4959
  call void @llvm.lifetime.end.p0(i64 1, ptr %598) #10
  br label %5009

4972:                                             ; preds = %4919
  br label %4973

4973:                                             ; preds = %4972, %4968
  call void @llvm.lifetime.start.p0(i64 8, ptr %602) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %4974 unwind label %4979

4974:                                             ; preds = %4973
  call void @llvm.lifetime.start.p0(i64 8, ptr %603) #10
  %4975 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %597, i32 0, i32 0
  %4976 = load ptr, ptr %4975, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %603, i32 noundef 1, ptr noundef @.str.4, i32 noundef 402, ptr noundef %4976)
          to label %4977 unwind label %4983

4977:                                             ; preds = %4974
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %603, ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %4978 unwind label %4987

4978:                                             ; preds = %4977
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %603) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %602) #10
  br label %4993

4979:                                             ; preds = %4973
  %4980 = landingpad { ptr, i32 }
          cleanup
  %4981 = extractvalue { ptr, i32 } %4980, 0
  store ptr %4981, ptr %6, align 8
  %4982 = extractvalue { ptr, i32 } %4980, 1
  store i32 %4982, ptr %7, align 4
  br label %4992

4983:                                             ; preds = %4974
  %4984 = landingpad { ptr, i32 }
          cleanup
  %4985 = extractvalue { ptr, i32 } %4984, 0
  store ptr %4985, ptr %6, align 8
  %4986 = extractvalue { ptr, i32 } %4984, 1
  store i32 %4986, ptr %7, align 4
  br label %4991

4987:                                             ; preds = %4977
  %4988 = landingpad { ptr, i32 }
          cleanup
  %4989 = extractvalue { ptr, i32 } %4988, 0
  store ptr %4989, ptr %6, align 8
  %4990 = extractvalue { ptr, i32 } %4988, 1
  store i32 %4990, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #10
  br label %4991

4991:                                             ; preds = %4987, %4983
  call void @llvm.lifetime.end.p0(i64 8, ptr %603) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #10
  br label %4992

4992:                                             ; preds = %4991, %4979
  call void @llvm.lifetime.end.p0(i64 8, ptr %602) #10
  br label %5009

4993:                                             ; preds = %4978, %4970
  call void @llvm.lifetime.end.p0(i64 8, ptr %597) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %604) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef @.str.27)
          to label %4994 unwind label %5010

4994:                                             ; preds = %4993
  %4995 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %604)
          to label %4996 unwind label %5010

4996:                                             ; preds = %4994
  br i1 %4995, label %4997, label %5059

4997:                                             ; preds = %4996
  call void @llvm.lifetime.start.p0(i64 1, ptr %605) #10
  store i8 0, ptr %605, align 1, !tbaa !9
  %4998 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4999 unwind label %5014

4999:                                             ; preds = %4997
  br i1 %4998, label %5000, label %5044

5000:                                             ; preds = %4999
  call void @llvm.lifetime.start.p0(i64 32, ptr %606) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %607) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %606, ptr noundef @.str.372, ptr noundef nonnull align 1 dereferenceable(1) %607)
          to label %5001 unwind label %5018

5001:                                             ; preds = %5000
  %5002 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %606)
          to label %5003 unwind label %5022

5003:                                             ; preds = %5001
  %5004 = getelementptr inbounds %"struct.std::array", ptr %608, i32 0, i32 0
  %5005 = getelementptr inbounds { i64, i64 }, ptr %5004, i32 0, i32 0
  %5006 = extractvalue { i64, i64 } %5002, 0
  store i64 %5006, ptr %5005, align 1
  %5007 = getelementptr inbounds { i64, i64 }, ptr %5004, i32 0, i32 1
  %5008 = extractvalue { i64, i64 } %5002, 1
  store i64 %5008, ptr %5007, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %607) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %606) #10
  br label %5044

5009:                                             ; preds = %4992, %4971, %4928
  call void @llvm.lifetime.end.p0(i64 8, ptr %597) #10
  br label %5343

5010:                                             ; preds = %4994, %4993
  %5011 = landingpad { ptr, i32 }
          cleanup
  %5012 = extractvalue { ptr, i32 } %5011, 0
  store ptr %5012, ptr %6, align 8
  %5013 = extractvalue { ptr, i32 } %5011, 1
  store i32 %5013, ptr %7, align 4
  br label %5096

5014:                                             ; preds = %4997
  %5015 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5016 = extractvalue { ptr, i32 } %5015, 0
  store ptr %5016, ptr %6, align 8
  %5017 = extractvalue { ptr, i32 } %5015, 1
  store i32 %5017, ptr %7, align 4
  br label %5027

5018:                                             ; preds = %5000
  %5019 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5020 = extractvalue { ptr, i32 } %5019, 0
  store ptr %5020, ptr %6, align 8
  %5021 = extractvalue { ptr, i32 } %5019, 1
  store i32 %5021, ptr %7, align 4
  br label %5026

5022:                                             ; preds = %5001
  %5023 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5024 = extractvalue { ptr, i32 } %5023, 0
  store ptr %5024, ptr %6, align 8
  %5025 = extractvalue { ptr, i32 } %5023, 1
  store i32 %5025, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #10
  br label %5026

5026:                                             ; preds = %5022, %5018
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %607) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %606) #10
  br label %5027

5027:                                             ; preds = %5026, %5014
  %5028 = load i32, ptr %7, align 4
  %5029 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %5030 = icmp eq i32 %5028, %5029
  br i1 %5030, label %5031, label %5040

5031:                                             ; preds = %5027
  call void @llvm.lifetime.start.p0(i64 8, ptr %609) #10
  %5032 = load ptr, ptr %6, align 8
  %5033 = call ptr @__cxa_begin_catch(ptr %5032) #10
  store ptr %5033, ptr %609, align 8
  store i8 1, ptr %605, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %5034 unwind label %5050

5034:                                             ; preds = %5031
  call void @llvm.lifetime.end.p0(i64 8, ptr %609) #10
  br label %5035

5035:                                             ; preds = %5044, %5034
  %5036 = load i8, ptr %605, align 1, !tbaa !9, !range !11, !noundef !12
  %5037 = trunc i8 %5036 to i1
  br i1 %5037, label %5054, label %5038

5038:                                             ; preds = %5035
  %5039 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %604, i32 0, i32 0
  store ptr @.str.374, ptr %5039, align 8, !tbaa !13
  store i32 6, ptr %136, align 4
  br label %5055

5040:                                             ; preds = %5027
  %5041 = load ptr, ptr %6, align 8
  %5042 = call ptr @__cxa_begin_catch(ptr %5041) #10
  %5043 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %604, i32 0, i32 0
  store ptr @.str.373, ptr %5043, align 8, !tbaa !13
  store i32 6, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %5045 unwind label %5046

5044:                                             ; preds = %5003, %4999
  br label %5035

5045:                                             ; preds = %5040
  br label %5055

5046:                                             ; preds = %5040
  %5047 = landingpad { ptr, i32 }
          cleanup
  %5048 = extractvalue { ptr, i32 } %5047, 0
  store ptr %5048, ptr %6, align 8
  %5049 = extractvalue { ptr, i32 } %5047, 1
  store i32 %5049, ptr %7, align 4
  br label %5058

5050:                                             ; preds = %5031
  %5051 = landingpad { ptr, i32 }
          cleanup
  %5052 = extractvalue { ptr, i32 } %5051, 0
  store ptr %5052, ptr %6, align 8
  %5053 = extractvalue { ptr, i32 } %5051, 1
  store i32 %5053, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %609) #10
  br label %5058

5054:                                             ; preds = %5035
  store i32 0, ptr %136, align 4
  br label %5055

5055:                                             ; preds = %5054, %5045, %5038
  call void @llvm.lifetime.end.p0(i64 1, ptr %605) #10
  %5056 = load i32, ptr %136, align 4
  switch i32 %5056, label %5354 [
    i32 0, label %5057
    i32 6, label %5060
  ]

5057:                                             ; preds = %5055
  br label %5080

5058:                                             ; preds = %5050, %5046
  call void @llvm.lifetime.end.p0(i64 1, ptr %605) #10
  br label %5096

5059:                                             ; preds = %4996
  br label %5060

5060:                                             ; preds = %5059, %5055
  call void @llvm.lifetime.start.p0(i64 8, ptr %610) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %5061 unwind label %5066

5061:                                             ; preds = %5060
  call void @llvm.lifetime.start.p0(i64 8, ptr %611) #10
  %5062 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %604, i32 0, i32 0
  %5063 = load ptr, ptr %5062, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %611, i32 noundef 1, ptr noundef @.str.4, i32 noundef 403, ptr noundef %5063)
          to label %5064 unwind label %5070

5064:                                             ; preds = %5061
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %5065 unwind label %5074

5065:                                             ; preds = %5064
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #10
  br label %5080

5066:                                             ; preds = %5060
  %5067 = landingpad { ptr, i32 }
          cleanup
  %5068 = extractvalue { ptr, i32 } %5067, 0
  store ptr %5068, ptr %6, align 8
  %5069 = extractvalue { ptr, i32 } %5067, 1
  store i32 %5069, ptr %7, align 4
  br label %5079

5070:                                             ; preds = %5061
  %5071 = landingpad { ptr, i32 }
          cleanup
  %5072 = extractvalue { ptr, i32 } %5071, 0
  store ptr %5072, ptr %6, align 8
  %5073 = extractvalue { ptr, i32 } %5071, 1
  store i32 %5073, ptr %7, align 4
  br label %5078

5074:                                             ; preds = %5064
  %5075 = landingpad { ptr, i32 }
          cleanup
  %5076 = extractvalue { ptr, i32 } %5075, 0
  store ptr %5076, ptr %6, align 8
  %5077 = extractvalue { ptr, i32 } %5075, 1
  store i32 %5077, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #10
  br label %5078

5078:                                             ; preds = %5074, %5070
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #10
  br label %5079

5079:                                             ; preds = %5078, %5066
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #10
  br label %5096

5080:                                             ; preds = %5065, %5057
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %612) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef @.str.27)
          to label %5081 unwind label %5097

5081:                                             ; preds = %5080
  %5082 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %612)
          to label %5083 unwind label %5097

5083:                                             ; preds = %5081
  br i1 %5082, label %5084, label %5146

5084:                                             ; preds = %5083
  call void @llvm.lifetime.start.p0(i64 1, ptr %613) #10
  store i8 0, ptr %613, align 1, !tbaa !9
  %5085 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %5086 unwind label %5101

5086:                                             ; preds = %5084
  br i1 %5085, label %5087, label %5131

5087:                                             ; preds = %5086
  call void @llvm.lifetime.start.p0(i64 32, ptr %614) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %615) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %615) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %614, ptr noundef @.str.375, ptr noundef nonnull align 1 dereferenceable(1) %615)
          to label %5088 unwind label %5105

5088:                                             ; preds = %5087
  %5089 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %614)
          to label %5090 unwind label %5109

5090:                                             ; preds = %5088
  %5091 = getelementptr inbounds %"struct.std::array", ptr %616, i32 0, i32 0
  %5092 = getelementptr inbounds { i64, i64 }, ptr %5091, i32 0, i32 0
  %5093 = extractvalue { i64, i64 } %5089, 0
  store i64 %5093, ptr %5092, align 1
  %5094 = getelementptr inbounds { i64, i64 }, ptr %5091, i32 0, i32 1
  %5095 = extractvalue { i64, i64 } %5089, 1
  store i64 %5095, ptr %5094, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %614) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %615) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %615) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %614) #10
  br label %5131

5096:                                             ; preds = %5079, %5058, %5010
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #10
  br label %5343

5097:                                             ; preds = %5081, %5080
  %5098 = landingpad { ptr, i32 }
          cleanup
  %5099 = extractvalue { ptr, i32 } %5098, 0
  store ptr %5099, ptr %6, align 8
  %5100 = extractvalue { ptr, i32 } %5098, 1
  store i32 %5100, ptr %7, align 4
  br label %5183

5101:                                             ; preds = %5084
  %5102 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5103 = extractvalue { ptr, i32 } %5102, 0
  store ptr %5103, ptr %6, align 8
  %5104 = extractvalue { ptr, i32 } %5102, 1
  store i32 %5104, ptr %7, align 4
  br label %5114

5105:                                             ; preds = %5087
  %5106 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5107 = extractvalue { ptr, i32 } %5106, 0
  store ptr %5107, ptr %6, align 8
  %5108 = extractvalue { ptr, i32 } %5106, 1
  store i32 %5108, ptr %7, align 4
  br label %5113

5109:                                             ; preds = %5088
  %5110 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5111 = extractvalue { ptr, i32 } %5110, 0
  store ptr %5111, ptr %6, align 8
  %5112 = extractvalue { ptr, i32 } %5110, 1
  store i32 %5112, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %614) #10
  br label %5113

5113:                                             ; preds = %5109, %5105
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %615) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %615) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %614) #10
  br label %5114

5114:                                             ; preds = %5113, %5101
  %5115 = load i32, ptr %7, align 4
  %5116 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %5117 = icmp eq i32 %5115, %5116
  br i1 %5117, label %5118, label %5127

5118:                                             ; preds = %5114
  call void @llvm.lifetime.start.p0(i64 8, ptr %617) #10
  %5119 = load ptr, ptr %6, align 8
  %5120 = call ptr @__cxa_begin_catch(ptr %5119) #10
  store ptr %5120, ptr %617, align 8
  store i8 1, ptr %613, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %5121 unwind label %5137

5121:                                             ; preds = %5118
  call void @llvm.lifetime.end.p0(i64 8, ptr %617) #10
  br label %5122

5122:                                             ; preds = %5131, %5121
  %5123 = load i8, ptr %613, align 1, !tbaa !9, !range !11, !noundef !12
  %5124 = trunc i8 %5123 to i1
  br i1 %5124, label %5141, label %5125

5125:                                             ; preds = %5122
  %5126 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %612, i32 0, i32 0
  store ptr @.str.377, ptr %5126, align 8, !tbaa !13
  store i32 7, ptr %136, align 4
  br label %5142

5127:                                             ; preds = %5114
  %5128 = load ptr, ptr %6, align 8
  %5129 = call ptr @__cxa_begin_catch(ptr %5128) #10
  %5130 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %612, i32 0, i32 0
  store ptr @.str.376, ptr %5130, align 8, !tbaa !13
  store i32 7, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %5132 unwind label %5133

5131:                                             ; preds = %5090, %5086
  br label %5122

5132:                                             ; preds = %5127
  br label %5142

5133:                                             ; preds = %5127
  %5134 = landingpad { ptr, i32 }
          cleanup
  %5135 = extractvalue { ptr, i32 } %5134, 0
  store ptr %5135, ptr %6, align 8
  %5136 = extractvalue { ptr, i32 } %5134, 1
  store i32 %5136, ptr %7, align 4
  br label %5145

5137:                                             ; preds = %5118
  %5138 = landingpad { ptr, i32 }
          cleanup
  %5139 = extractvalue { ptr, i32 } %5138, 0
  store ptr %5139, ptr %6, align 8
  %5140 = extractvalue { ptr, i32 } %5138, 1
  store i32 %5140, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %617) #10
  br label %5145

5141:                                             ; preds = %5122
  store i32 0, ptr %136, align 4
  br label %5142

5142:                                             ; preds = %5141, %5132, %5125
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #10
  %5143 = load i32, ptr %136, align 4
  switch i32 %5143, label %5354 [
    i32 0, label %5144
    i32 7, label %5147
  ]

5144:                                             ; preds = %5142
  br label %5167

5145:                                             ; preds = %5137, %5133
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #10
  br label %5183

5146:                                             ; preds = %5083
  br label %5147

5147:                                             ; preds = %5146, %5142
  call void @llvm.lifetime.start.p0(i64 8, ptr %618) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %5148 unwind label %5153

5148:                                             ; preds = %5147
  call void @llvm.lifetime.start.p0(i64 8, ptr %619) #10
  %5149 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %612, i32 0, i32 0
  %5150 = load ptr, ptr %5149, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %619, i32 noundef 1, ptr noundef @.str.4, i32 noundef 404, ptr noundef %5150)
          to label %5151 unwind label %5157

5151:                                             ; preds = %5148
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %5152 unwind label %5161

5152:                                             ; preds = %5151
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %619) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %619) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %618) #10
  br label %5167

5153:                                             ; preds = %5147
  %5154 = landingpad { ptr, i32 }
          cleanup
  %5155 = extractvalue { ptr, i32 } %5154, 0
  store ptr %5155, ptr %6, align 8
  %5156 = extractvalue { ptr, i32 } %5154, 1
  store i32 %5156, ptr %7, align 4
  br label %5166

5157:                                             ; preds = %5148
  %5158 = landingpad { ptr, i32 }
          cleanup
  %5159 = extractvalue { ptr, i32 } %5158, 0
  store ptr %5159, ptr %6, align 8
  %5160 = extractvalue { ptr, i32 } %5158, 1
  store i32 %5160, ptr %7, align 4
  br label %5165

5161:                                             ; preds = %5151
  %5162 = landingpad { ptr, i32 }
          cleanup
  %5163 = extractvalue { ptr, i32 } %5162, 0
  store ptr %5163, ptr %6, align 8
  %5164 = extractvalue { ptr, i32 } %5162, 1
  store i32 %5164, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %619) #10
  br label %5165

5165:                                             ; preds = %5161, %5157
  call void @llvm.lifetime.end.p0(i64 8, ptr %619) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #10
  br label %5166

5166:                                             ; preds = %5165, %5153
  call void @llvm.lifetime.end.p0(i64 8, ptr %618) #10
  br label %5183

5167:                                             ; preds = %5152, %5144
  call void @llvm.lifetime.end.p0(i64 8, ptr %612) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %620) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %620, ptr noundef @.str.27)
          to label %5168 unwind label %5184

5168:                                             ; preds = %5167
  %5169 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %620)
          to label %5170 unwind label %5184

5170:                                             ; preds = %5168
  br i1 %5169, label %5171, label %5233

5171:                                             ; preds = %5170
  call void @llvm.lifetime.start.p0(i64 1, ptr %621) #10
  store i8 0, ptr %621, align 1, !tbaa !9
  %5172 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %5173 unwind label %5188

5173:                                             ; preds = %5171
  br i1 %5172, label %5174, label %5218

5174:                                             ; preds = %5173
  call void @llvm.lifetime.start.p0(i64 32, ptr %622) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %623) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %622, ptr noundef @.str.378, ptr noundef nonnull align 1 dereferenceable(1) %623)
          to label %5175 unwind label %5192

5175:                                             ; preds = %5174
  %5176 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %622)
          to label %5177 unwind label %5196

5177:                                             ; preds = %5175
  %5178 = getelementptr inbounds %"struct.std::array", ptr %624, i32 0, i32 0
  %5179 = getelementptr inbounds { i64, i64 }, ptr %5178, i32 0, i32 0
  %5180 = extractvalue { i64, i64 } %5176, 0
  store i64 %5180, ptr %5179, align 1
  %5181 = getelementptr inbounds { i64, i64 }, ptr %5178, i32 0, i32 1
  %5182 = extractvalue { i64, i64 } %5176, 1
  store i64 %5182, ptr %5181, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %623) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %622) #10
  br label %5218

5183:                                             ; preds = %5166, %5145, %5097
  call void @llvm.lifetime.end.p0(i64 8, ptr %612) #10
  br label %5343

5184:                                             ; preds = %5168, %5167
  %5185 = landingpad { ptr, i32 }
          cleanup
  %5186 = extractvalue { ptr, i32 } %5185, 0
  store ptr %5186, ptr %6, align 8
  %5187 = extractvalue { ptr, i32 } %5185, 1
  store i32 %5187, ptr %7, align 4
  br label %5270

5188:                                             ; preds = %5171
  %5189 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5190 = extractvalue { ptr, i32 } %5189, 0
  store ptr %5190, ptr %6, align 8
  %5191 = extractvalue { ptr, i32 } %5189, 1
  store i32 %5191, ptr %7, align 4
  br label %5201

5192:                                             ; preds = %5174
  %5193 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5194 = extractvalue { ptr, i32 } %5193, 0
  store ptr %5194, ptr %6, align 8
  %5195 = extractvalue { ptr, i32 } %5193, 1
  store i32 %5195, ptr %7, align 4
  br label %5200

5196:                                             ; preds = %5175
  %5197 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5198 = extractvalue { ptr, i32 } %5197, 0
  store ptr %5198, ptr %6, align 8
  %5199 = extractvalue { ptr, i32 } %5197, 1
  store i32 %5199, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %622) #10
  br label %5200

5200:                                             ; preds = %5196, %5192
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %623) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %623) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %622) #10
  br label %5201

5201:                                             ; preds = %5200, %5188
  %5202 = load i32, ptr %7, align 4
  %5203 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %5204 = icmp eq i32 %5202, %5203
  br i1 %5204, label %5205, label %5214

5205:                                             ; preds = %5201
  call void @llvm.lifetime.start.p0(i64 8, ptr %625) #10
  %5206 = load ptr, ptr %6, align 8
  %5207 = call ptr @__cxa_begin_catch(ptr %5206) #10
  store ptr %5207, ptr %625, align 8
  store i8 1, ptr %621, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %5208 unwind label %5224

5208:                                             ; preds = %5205
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #10
  br label %5209

5209:                                             ; preds = %5218, %5208
  %5210 = load i8, ptr %621, align 1, !tbaa !9, !range !11, !noundef !12
  %5211 = trunc i8 %5210 to i1
  br i1 %5211, label %5228, label %5212

5212:                                             ; preds = %5209
  %5213 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %620, i32 0, i32 0
  store ptr @.str.380, ptr %5213, align 8, !tbaa !13
  store i32 8, ptr %136, align 4
  br label %5229

5214:                                             ; preds = %5201
  %5215 = load ptr, ptr %6, align 8
  %5216 = call ptr @__cxa_begin_catch(ptr %5215) #10
  %5217 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %620, i32 0, i32 0
  store ptr @.str.379, ptr %5217, align 8, !tbaa !13
  store i32 8, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %5219 unwind label %5220

5218:                                             ; preds = %5177, %5173
  br label %5209

5219:                                             ; preds = %5214
  br label %5229

5220:                                             ; preds = %5214
  %5221 = landingpad { ptr, i32 }
          cleanup
  %5222 = extractvalue { ptr, i32 } %5221, 0
  store ptr %5222, ptr %6, align 8
  %5223 = extractvalue { ptr, i32 } %5221, 1
  store i32 %5223, ptr %7, align 4
  br label %5232

5224:                                             ; preds = %5205
  %5225 = landingpad { ptr, i32 }
          cleanup
  %5226 = extractvalue { ptr, i32 } %5225, 0
  store ptr %5226, ptr %6, align 8
  %5227 = extractvalue { ptr, i32 } %5225, 1
  store i32 %5227, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #10
  br label %5232

5228:                                             ; preds = %5209
  store i32 0, ptr %136, align 4
  br label %5229

5229:                                             ; preds = %5228, %5219, %5212
  call void @llvm.lifetime.end.p0(i64 1, ptr %621) #10
  %5230 = load i32, ptr %136, align 4
  switch i32 %5230, label %5354 [
    i32 0, label %5231
    i32 8, label %5234
  ]

5231:                                             ; preds = %5229
  br label %5254

5232:                                             ; preds = %5224, %5220
  call void @llvm.lifetime.end.p0(i64 1, ptr %621) #10
  br label %5270

5233:                                             ; preds = %5170
  br label %5234

5234:                                             ; preds = %5233, %5229
  call void @llvm.lifetime.start.p0(i64 8, ptr %626) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %626)
          to label %5235 unwind label %5240

5235:                                             ; preds = %5234
  call void @llvm.lifetime.start.p0(i64 8, ptr %627) #10
  %5236 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %620, i32 0, i32 0
  %5237 = load ptr, ptr %5236, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %627, i32 noundef 1, ptr noundef @.str.4, i32 noundef 405, ptr noundef %5237)
          to label %5238 unwind label %5244

5238:                                             ; preds = %5235
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(8) %626)
          to label %5239 unwind label %5248

5239:                                             ; preds = %5238
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %627) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %627) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %626) #10
  br label %5254

5240:                                             ; preds = %5234
  %5241 = landingpad { ptr, i32 }
          cleanup
  %5242 = extractvalue { ptr, i32 } %5241, 0
  store ptr %5242, ptr %6, align 8
  %5243 = extractvalue { ptr, i32 } %5241, 1
  store i32 %5243, ptr %7, align 4
  br label %5253

5244:                                             ; preds = %5235
  %5245 = landingpad { ptr, i32 }
          cleanup
  %5246 = extractvalue { ptr, i32 } %5245, 0
  store ptr %5246, ptr %6, align 8
  %5247 = extractvalue { ptr, i32 } %5245, 1
  store i32 %5247, ptr %7, align 4
  br label %5252

5248:                                             ; preds = %5238
  %5249 = landingpad { ptr, i32 }
          cleanup
  %5250 = extractvalue { ptr, i32 } %5249, 0
  store ptr %5250, ptr %6, align 8
  %5251 = extractvalue { ptr, i32 } %5249, 1
  store i32 %5251, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %627) #10
  br label %5252

5252:                                             ; preds = %5248, %5244
  call void @llvm.lifetime.end.p0(i64 8, ptr %627) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #10
  br label %5253

5253:                                             ; preds = %5252, %5240
  call void @llvm.lifetime.end.p0(i64 8, ptr %626) #10
  br label %5270

5254:                                             ; preds = %5239, %5231
  call void @llvm.lifetime.end.p0(i64 8, ptr %620) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %628) #10
  invoke void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef @.str.27)
          to label %5255 unwind label %5271

5255:                                             ; preds = %5254
  %5256 = invoke noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %628)
          to label %5257 unwind label %5271

5257:                                             ; preds = %5255
  br i1 %5256, label %5258, label %5320

5258:                                             ; preds = %5257
  call void @llvm.lifetime.start.p0(i64 1, ptr %629) #10
  store i8 0, ptr %629, align 1, !tbaa !9
  %5259 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %5260 unwind label %5275

5260:                                             ; preds = %5258
  br i1 %5259, label %5261, label %5305

5261:                                             ; preds = %5260
  call void @llvm.lifetime.start.p0(i64 32, ptr %630) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %631) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %631) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %630, ptr noundef @.str.381, ptr noundef nonnull align 1 dereferenceable(1) %631)
          to label %5262 unwind label %5279

5262:                                             ; preds = %5261
  %5263 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32) %630, ptr noundef %588)
          to label %5264 unwind label %5283

5264:                                             ; preds = %5262
  %5265 = getelementptr inbounds %"struct.std::array", ptr %632, i32 0, i32 0
  %5266 = getelementptr inbounds { i64, i64 }, ptr %5265, i32 0, i32 0
  %5267 = extractvalue { i64, i64 } %5263, 0
  store i64 %5267, ptr %5266, align 1
  %5268 = getelementptr inbounds { i64, i64 }, ptr %5265, i32 0, i32 1
  %5269 = extractvalue { i64, i64 } %5263, 1
  store i64 %5269, ptr %5268, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %630) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %631) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %631) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %630) #10
  br label %5305

5270:                                             ; preds = %5253, %5232, %5184
  call void @llvm.lifetime.end.p0(i64 8, ptr %620) #10
  br label %5343

5271:                                             ; preds = %5255, %5254
  %5272 = landingpad { ptr, i32 }
          cleanup
  %5273 = extractvalue { ptr, i32 } %5272, 0
  store ptr %5273, ptr %6, align 8
  %5274 = extractvalue { ptr, i32 } %5272, 1
  store i32 %5274, ptr %7, align 4
  br label %5342

5275:                                             ; preds = %5258
  %5276 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5277 = extractvalue { ptr, i32 } %5276, 0
  store ptr %5277, ptr %6, align 8
  %5278 = extractvalue { ptr, i32 } %5276, 1
  store i32 %5278, ptr %7, align 4
  br label %5288

5279:                                             ; preds = %5261
  %5280 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5281 = extractvalue { ptr, i32 } %5280, 0
  store ptr %5281, ptr %6, align 8
  %5282 = extractvalue { ptr, i32 } %5280, 1
  store i32 %5282, ptr %7, align 4
  br label %5287

5283:                                             ; preds = %5262
  %5284 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %5285 = extractvalue { ptr, i32 } %5284, 0
  store ptr %5285, ptr %6, align 8
  %5286 = extractvalue { ptr, i32 } %5284, 1
  store i32 %5286, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %630) #10
  br label %5287

5287:                                             ; preds = %5283, %5279
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %631) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %631) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %630) #10
  br label %5288

5288:                                             ; preds = %5287, %5275
  %5289 = load i32, ptr %7, align 4
  %5290 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %5291 = icmp eq i32 %5289, %5290
  br i1 %5291, label %5292, label %5301

5292:                                             ; preds = %5288
  call void @llvm.lifetime.start.p0(i64 8, ptr %633) #10
  %5293 = load ptr, ptr %6, align 8
  %5294 = call ptr @__cxa_begin_catch(ptr %5293) #10
  store ptr %5294, ptr %633, align 8
  store i8 1, ptr %629, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %5295 unwind label %5311

5295:                                             ; preds = %5292
  call void @llvm.lifetime.end.p0(i64 8, ptr %633) #10
  br label %5296

5296:                                             ; preds = %5305, %5295
  %5297 = load i8, ptr %629, align 1, !tbaa !9, !range !11, !noundef !12
  %5298 = trunc i8 %5297 to i1
  br i1 %5298, label %5315, label %5299

5299:                                             ; preds = %5296
  %5300 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %628, i32 0, i32 0
  store ptr @.str.383, ptr %5300, align 8, !tbaa !13
  store i32 9, ptr %136, align 4
  br label %5316

5301:                                             ; preds = %5288
  %5302 = load ptr, ptr %6, align 8
  %5303 = call ptr @__cxa_begin_catch(ptr %5302) #10
  %5304 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %628, i32 0, i32 0
  store ptr @.str.382, ptr %5304, align 8, !tbaa !13
  store i32 9, ptr %136, align 4
  invoke void @__cxa_end_catch()
          to label %5306 unwind label %5307

5305:                                             ; preds = %5264, %5260
  br label %5296

5306:                                             ; preds = %5301
  br label %5316

5307:                                             ; preds = %5301
  %5308 = landingpad { ptr, i32 }
          cleanup
  %5309 = extractvalue { ptr, i32 } %5308, 0
  store ptr %5309, ptr %6, align 8
  %5310 = extractvalue { ptr, i32 } %5308, 1
  store i32 %5310, ptr %7, align 4
  br label %5319

5311:                                             ; preds = %5292
  %5312 = landingpad { ptr, i32 }
          cleanup
  %5313 = extractvalue { ptr, i32 } %5312, 0
  store ptr %5313, ptr %6, align 8
  %5314 = extractvalue { ptr, i32 } %5312, 1
  store i32 %5314, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %633) #10
  br label %5319

5315:                                             ; preds = %5296
  store i32 0, ptr %136, align 4
  br label %5316

5316:                                             ; preds = %5315, %5306, %5299
  call void @llvm.lifetime.end.p0(i64 1, ptr %629) #10
  %5317 = load i32, ptr %136, align 4
  switch i32 %5317, label %5354 [
    i32 0, label %5318
    i32 9, label %5321
  ]

5318:                                             ; preds = %5316
  br label %5341

5319:                                             ; preds = %5311, %5307
  call void @llvm.lifetime.end.p0(i64 1, ptr %629) #10
  br label %5342

5320:                                             ; preds = %5257
  br label %5321

5321:                                             ; preds = %5320, %5316
  call void @llvm.lifetime.start.p0(i64 8, ptr %634) #10
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %5322 unwind label %5327

5322:                                             ; preds = %5321
  call void @llvm.lifetime.start.p0(i64 8, ptr %635) #10
  %5323 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %628, i32 0, i32 0
  %5324 = load ptr, ptr %5323, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %635, i32 noundef 1, ptr noundef @.str.4, i32 noundef 406, ptr noundef %5324)
          to label %5325 unwind label %5331

5325:                                             ; preds = %5322
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %5326 unwind label %5335

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

5327:                                             ; preds = %5321
  %5328 = landingpad { ptr, i32 }
          cleanup
  %5329 = extractvalue { ptr, i32 } %5328, 0
  store ptr %5329, ptr %6, align 8
  %5330 = extractvalue { ptr, i32 } %5328, 1
  store i32 %5330, ptr %7, align 4
  br label %5340

5331:                                             ; preds = %5322
  %5332 = landingpad { ptr, i32 }
          cleanup
  %5333 = extractvalue { ptr, i32 } %5332, 0
  store ptr %5333, ptr %6, align 8
  %5334 = extractvalue { ptr, i32 } %5332, 1
  store i32 %5334, ptr %7, align 4
  br label %5339

5335:                                             ; preds = %5325
  %5336 = landingpad { ptr, i32 }
          cleanup
  %5337 = extractvalue { ptr, i32 } %5336, 0
  store ptr %5337, ptr %6, align 8
  %5338 = extractvalue { ptr, i32 } %5336, 1
  store i32 %5338, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %635) #10
  br label %5339

5339:                                             ; preds = %5335, %5331
  call void @llvm.lifetime.end.p0(i64 8, ptr %635) #10
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %634) #10
  br label %5340

5340:                                             ; preds = %5339, %5327
  call void @llvm.lifetime.end.p0(i64 8, ptr %634) #10
  br label %5342

5341:                                             ; preds = %5326, %5318
  call void @llvm.lifetime.end.p0(i64 8, ptr %628) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %588) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %328) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %305) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %227) #10
  call void @llvm.lifetime.end.p0(i64 28, ptr %147) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #10
  ret void

5342:                                             ; preds = %5340, %5319, %5271
  call void @llvm.lifetime.end.p0(i64 8, ptr %628) #10
  br label %5343

5343:                                             ; preds = %5342, %5270, %5183, %5096, %5009, %4927
  call void @llvm.lifetime.end.p0(i64 1, ptr %588) #10
  br label %5344

5344:                                             ; preds = %5343, %4845, %4800, %4758, %4716, %4674, %4632, %4590, %4548, %4506, %4464, %4422, %4380, %4338, %4296, %4254, %4212, %4170, %4128, %4081, %4035, %3990, %3946, %3899, %3853, %3806, %3760, %3713, %3667, %3620, %3574, %3527, %3481, %3434, %3388, %3343, %3299, %3254, %3210, %3167, %3124, %3081, %3038, %2995, %2957, %2912, %2835
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %328) #10
  br label %5345

5345:                                             ; preds = %5344, %2790, %2745, %2707, %2669
  call void @llvm.lifetime.end.p0(i64 16, ptr %305) #10
  br label %5346

5346:                                             ; preds = %5345, %2631, %2584, %2542, %2500, %2452, %2404, %2356, %2308, %2260, %2212, %2164, %2121, %2068
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %227) #10
  br label %5347

5347:                                             ; preds = %5346, %2017, %1977, %1941, %1905, %1869, %1833, %1798, %1763, %1728, %1698, %1669, %1634, %1602, %1567, %1531, %1495
  call void @llvm.lifetime.end.p0(i64 28, ptr %147) #10
  br label %5348

5348:                                             ; preds = %5347, %1454, %1401, %1361, %1319, %1285
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #10
  br label %5349

5349:                                             ; preds = %5348, %1255, %1210, %1162, %1119, %1077, %1035, %993, %961, %932, %903, %874, %845, %816, %787, %743, %700, %668
  %5350 = load ptr, ptr %6, align 8
  %5351 = load i32, ptr %7, align 4
  %5352 = insertvalue { ptr, i32 } poison, ptr %5350, 0
  %5353 = insertvalue { ptr, i32 } %5352, i32 %5351, 1
  resume { ptr, i32 } %5353

5354:                                             ; preds = %5316, %5229, %5142, %5055, %4968, %4891, %1437, %1384
  unreachable
}

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef zeroext, i32 noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3

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

declare void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef, i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen11ip_version6C1EPKhRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address6isIPv6Ev(ptr noundef nonnull align 4 dereferenceable(28)) #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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_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(25), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(24)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_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(3), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_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(21), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA40_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(40), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28)) #3

declare void @_ZNK4chen11ip_version68expandedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA30_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(30), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare void @_ZNK4chen11ip_version610suppressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) #3

declare void @_ZNK4chen11ip_version610compressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA19_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(19), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare void @_ZNK4chen11ip_version65mixedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) #3

declare void @_ZN4chen12inet_adapter5scopeB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

declare void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #2 align 2

declare i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIhLm16EE4dataEv(ptr noundef nonnull align 1 dereferenceable(16)) #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16)) #2 align 2

declare noundef nonnull align 1 dereferenceable(16) ptr @_ZNK4chen11ip_version64addrEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_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(20), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA43_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(43), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

declare noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24)) #3

declare { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSN7testing8internal12ConstCharPtrE", !6, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{i64 0, i64 16, !19}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::array" = type { [16 x i8] }
%"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.chen::ip_address" = type { i8, %union.anon.2 }
%union.anon.2 = type { %"class.chen::ip_version6" }
%"class.chen::ip_version6" = type { %"class.chen::ip_version", %"struct.std::array", i32 }
%"class.chen::ip_version" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.0" }
%"class.testing::internal::scoped_ptr.0" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::allocator" = type { i8 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }
%"class.chen::ip_version4" = type { %"class.chen::ip_version", i32 }

@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.213 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [50 x i8], align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.bytes = external hidden unnamed_addr constant [16 x i8], align 16
@.str.247 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [130 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [49 x i8], align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.netmask = external hidden unnamed_addr constant { <{ i8, i8, i8, i8, i8, i8, [10 x i8] }> }, align 1
@__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.wildcard = external hidden unnamed_addr constant %"struct.std::array", align 1
@.str.321 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [140 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.371 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.372 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.373 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.374 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.375 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.376 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.377 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.378 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.379 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.380 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.381 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.382 = external hidden unnamed_addr constant [135 x i8], align 1
@.str.383 = external hidden unnamed_addr constant [126 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 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 @_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

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 @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(28), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #3

declare noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen10ip_address5scopeEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2 align 2

declare void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28), i8 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2

declare void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, i8 noundef zeroext) local_unnamed_addr #3

declare void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4, i8 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) 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) #6

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_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 nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_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 1 dereferenceable(1)) local_unnamed_addr #2 align 2

; 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 nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_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(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23IPAddressTest_IPv6_Test8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.testing::AssertionResult", align 8
  %3 = alloca %"class.chen::ip_address", align 4
  %4 = alloca %"class.chen::ip_address", align 4
  %5 = alloca %"class.testing::Message", align 8
  %6 = alloca %"class.testing::internal::AssertHelper", align 8
  %7 = alloca %"class.testing::AssertionResult", align 8
  %8 = alloca %"class.chen::ip_address", align 4
  %9 = alloca %"class.chen::ip_address", align 4
  %10 = alloca %"class.testing::Message", align 8
  %11 = alloca %"class.testing::internal::AssertHelper", align 8
  %12 = alloca %"class.testing::AssertionResult", align 8
  %13 = alloca %"class.chen::ip_address", align 4
  %14 = alloca %"class.chen::ip_address", align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.testing::Message", align 8
  %18 = alloca %"class.testing::internal::AssertHelper", align 8
  %19 = alloca %"class.testing::AssertionResult", align 8
  %20 = alloca %"class.chen::ip_address", align 4
  %21 = alloca %"class.chen::ip_address", align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.testing::Message", align 8
  %27 = alloca %"class.testing::internal::AssertHelper", align 8
  %28 = alloca %"class.testing::AssertionResult", align 8
  %29 = alloca %"class.chen::ip_address", align 4
  %30 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %35 = alloca %"class.chen::ip_address", align 4
  %36 = alloca %"class.testing::Message", align 8
  %37 = alloca %"class.testing::internal::AssertHelper", align 8
  %38 = alloca %"class.testing::AssertionResult", align 8
  %39 = alloca %"class.chen::ip_address", align 4
  %40 = alloca %"class.chen::ip_address", align 4
  %41 = alloca %"class.testing::Message", align 8
  %42 = alloca %"class.testing::internal::AssertHelper", align 8
  %43 = alloca %"class.testing::AssertionResult", align 8
  %44 = alloca %"class.chen::ip_address", align 4
  %45 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %50 = alloca %"class.chen::ip_address", 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 %"class.chen::ip_address", align 4
  %55 = alloca %"class.chen::ip_address", align 4
  %56 = alloca %"class.testing::Message", align 8
  %57 = alloca %"class.testing::internal::AssertHelper", align 8
  %58 = alloca %"class.testing::AssertionResult", align 8
  %59 = alloca %"class.chen::ip_address", align 4
  %60 = alloca %"class.chen::ip_address", align 4
  %61 = alloca %"class.testing::Message", align 8
  %62 = alloca %"class.testing::internal::AssertHelper", align 8
  %63 = alloca %"class.testing::AssertionResult", align 8
  %64 = alloca %"class.chen::ip_address", align 4
  %65 = alloca %"class.chen::ip_address", align 4
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator", align 1
  %68 = alloca %"class.testing::Message", align 8
  %69 = alloca %"class.testing::internal::AssertHelper", align 8
  %70 = alloca %"class.testing::AssertionResult", align 8
  %71 = alloca %"class.chen::ip_address", align 4
  %72 = alloca %"class.chen::ip_address", align 4
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator", align 1
  %75 = alloca %"class.testing::Message", align 8
  %76 = alloca %"class.testing::internal::AssertHelper", align 8
  %77 = alloca %"class.testing::AssertionResult", align 8
  %78 = alloca %"class.chen::ip_address", align 4
  %79 = alloca %"class.chen::ip_address", align 4
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator", align 1
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"class.testing::internal::AssertHelper", align 8
  %84 = alloca %"class.testing::AssertionResult", align 8
  %85 = alloca %"class.chen::ip_address", align 4
  %86 = alloca %"class.chen::ip_address", align 4
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator", align 1
  %89 = alloca %"class.testing::Message", align 8
  %90 = alloca %"class.testing::internal::AssertHelper", align 8
  %91 = alloca %"class.testing::AssertionResult", align 8
  %92 = alloca %"class.chen::ip_address", align 4
  %93 = alloca %"class.chen::ip_address", align 4
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator", align 1
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca %"class.testing::Message", align 8
  %99 = alloca %"class.testing::internal::AssertHelper", align 8
  %100 = alloca %"class.testing::AssertionResult", align 8
  %101 = alloca %"class.chen::ip_address", align 4
  %102 = alloca %"class.chen::ip_address", align 4
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::allocator", align 1
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::allocator", align 1
  %107 = alloca %"class.testing::Message", align 8
  %108 = alloca %"class.testing::internal::AssertHelper", align 8
  %109 = alloca [16 x i8], align 16
  %110 = alloca %"class.testing::AssertionResult", align 8
  %111 = alloca %"class.chen::ip_address", align 4
  %112 = alloca %"class.chen::ip_address", align 4
  %113 = alloca %"class.chen::ip_version6", align 4
  %114 = alloca %"class.testing::Message", align 8
  %115 = alloca %"class.testing::internal::AssertHelper", align 8
  %116 = alloca %"class.testing::AssertionResult", align 8
  %117 = alloca %"class.chen::ip_address", align 4
  %118 = alloca %"class.chen::ip_address", align 4
  %119 = alloca %"class.chen::ip_version6", align 4
  %120 = alloca %"class.testing::Message", align 8
  %121 = alloca %"class.testing::internal::AssertHelper", align 8
  %122 = alloca %"class.testing::AssertionResult", align 8
  %123 = alloca %"class.chen::ip_address", align 4
  %124 = alloca %"class.chen::ip_address", align 4
  %125 = alloca %"class.chen::ip_version6", align 4
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::allocator", align 1
  %128 = alloca %"class.testing::Message", align 8
  %129 = alloca %"class.testing::internal::AssertHelper", align 8
  %130 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %131 = alloca %"class.chen::ip_address", align 4
  %132 = alloca %"class.testing::Message", align 8
  %133 = alloca %"class.testing::internal::AssertHelper", align 8
  %134 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %135 = alloca %"class.chen::ip_address", align 4
  %136 = alloca %"class.chen::ip_version6", align 4
  %137 = alloca %"class.testing::Message", align 8
  %138 = alloca %"class.testing::internal::AssertHelper", align 8
  %139 = alloca %"class.chen::ip_address", align 4
  %140 = alloca %"class.testing::AssertionResult", align 8
  %141 = alloca i8, align 1
  %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 %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.testing::Message", align 8
  %148 = alloca %"class.testing::internal::AssertHelper", align 8
  %149 = alloca %"class.testing::AssertionResult", align 8
  %150 = alloca i32, align 4
  %151 = alloca i64, align 8
  %152 = alloca %"class.std::vector", align 8
  %153 = alloca %"class.testing::Message", align 8
  %154 = alloca %"class.testing::internal::AssertHelper", align 8
  %155 = alloca %"class.testing::AssertionResult", align 8
  %156 = alloca %"class.std::__cxx11::basic_string", align 8
  %157 = alloca %"class.testing::Message", align 8
  %158 = alloca %"class.testing::internal::AssertHelper", align 8
  %159 = alloca %"class.testing::AssertionResult", align 8
  %160 = alloca i32, align 4
  %161 = alloca i8, align 1
  %162 = alloca %"class.testing::Message", align 8
  %163 = alloca %"class.testing::internal::AssertHelper", align 8
  %164 = alloca %"class.chen::ip_version6", align 4
  %165 = alloca %"class.testing::AssertionResult", align 8
  %166 = alloca %"class.std::__cxx11::basic_string", align 8
  %167 = alloca %"class.testing::Message", align 8
  %168 = alloca %"class.testing::internal::AssertHelper", align 8
  %169 = alloca %"class.testing::AssertionResult", align 8
  %170 = alloca i32, align 4
  %171 = alloca i8, align 1
  %172 = alloca %"class.testing::Message", align 8
  %173 = alloca %"class.testing::internal::AssertHelper", align 8
  %174 = alloca %"class.testing::AssertionResult", align 8
  %175 = alloca %"class.chen::ip_address", align 4
  %176 = alloca %"class.chen::ip_address", align 4
  %177 = alloca %"class.testing::Message", align 8
  %178 = alloca %"class.testing::internal::AssertHelper", align 8
  %179 = alloca %"class.testing::AssertionResult", align 8
  %180 = alloca %"class.std::__cxx11::basic_string", align 8
  %181 = alloca %"class.chen::ip_address", align 4
  %182 = alloca %"class.testing::Message", align 8
  %183 = alloca %"class.testing::internal::AssertHelper", align 8
  %184 = alloca %"class.testing::AssertionResult", align 8
  %185 = alloca %"class.std::__cxx11::basic_string", align 8
  %186 = alloca %"class.chen::ip_address", align 4
  %187 = alloca %"class.testing::Message", align 8
  %188 = alloca %"class.testing::internal::AssertHelper", align 8
  %189 = alloca %"class.testing::AssertionResult", align 8
  %190 = alloca %"class.std::__cxx11::basic_string", align 8
  %191 = alloca %"class.chen::ip_address", align 4
  %192 = alloca %"class.testing::Message", align 8
  %193 = alloca %"class.testing::internal::AssertHelper", align 8
  %194 = alloca %"class.testing::AssertionResult", align 8
  %195 = alloca %"class.std::__cxx11::basic_string", align 8
  %196 = alloca %"class.chen::ip_address", align 4
  %197 = alloca %"class.testing::Message", align 8
  %198 = alloca %"class.testing::internal::AssertHelper", align 8
  %199 = alloca %"class.testing::AssertionResult", align 8
  %200 = alloca %"class.std::__cxx11::basic_string", align 8
  %201 = alloca %"class.chen::ip_address", align 4
  %202 = alloca %"class.testing::Message", align 8
  %203 = alloca %"class.testing::internal::AssertHelper", align 8
  %204 = alloca %"class.testing::AssertionResult", align 8
  %205 = alloca %"class.std::__cxx11::basic_string", align 8
  %206 = alloca %"class.chen::ip_address", align 4
  %207 = alloca %"class.testing::Message", align 8
  %208 = alloca %"class.testing::internal::AssertHelper", align 8
  %209 = alloca %"class.testing::AssertionResult", align 8
  %210 = alloca %"class.std::__cxx11::basic_string", align 8
  %211 = alloca %"class.chen::ip_address", align 4
  %212 = alloca %"class.testing::Message", align 8
  %213 = alloca %"class.testing::internal::AssertHelper", align 8
  %214 = alloca %"class.testing::AssertionResult", align 8
  %215 = alloca %"class.std::__cxx11::basic_string", align 8
  %216 = alloca %"class.chen::ip_address", align 4
  %217 = alloca %"class.testing::Message", align 8
  %218 = alloca %"class.testing::internal::AssertHelper", align 8
  %219 = alloca %"class.std::__cxx11::basic_string", align 8
  %220 = alloca %"class.testing::AssertionResult", align 8
  %221 = alloca %"class.std::__cxx11::basic_string", align 8
  %222 = alloca %"class.std::__cxx11::basic_string", align 8
  %223 = alloca %"class.chen::ip_address", align 4
  %224 = alloca %"class.testing::Message", align 8
  %225 = alloca %"class.testing::internal::AssertHelper", align 8
  %226 = alloca %"class.testing::AssertionResult", align 8
  %227 = alloca %"class.std::__cxx11::basic_string", align 8
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::__cxx11::basic_string", align 8
  %230 = alloca %"class.chen::ip_address", align 4
  %231 = alloca %"class.testing::Message", align 8
  %232 = alloca %"class.testing::internal::AssertHelper", align 8
  %233 = alloca %"class.testing::AssertionResult", align 8
  %234 = alloca i32, align 4
  %235 = alloca i32, align 4
  %236 = alloca %"class.chen::ip_address", align 4
  %237 = alloca %"class.testing::Message", align 8
  %238 = alloca %"class.testing::internal::AssertHelper", align 8
  %239 = alloca %"class.testing::AssertionResult", align 8
  %240 = alloca %"class.chen::ip_address", align 4
  %241 = alloca %"class.chen::ip_version4", align 8
  %242 = alloca %"class.chen::ip_address", align 4
  %243 = alloca %"class.testing::Message", align 8
  %244 = alloca %"class.testing::internal::AssertHelper", align 8
  %245 = alloca %"class.testing::AssertionResult", align 8
  %246 = alloca %"class.chen::ip_address", align 4
  %247 = alloca %"class.chen::ip_version4", align 8
  %248 = alloca %"class.chen::ip_address", align 4
  %249 = alloca %"class.testing::Message", align 8
  %250 = alloca %"class.testing::internal::AssertHelper", align 8
  %251 = alloca %"class.testing::AssertionResult", align 8
  %252 = alloca %"class.chen::ip_address", align 4
  %253 = alloca %"class.chen::ip_version4", align 8
  %254 = alloca %"class.chen::ip_address", align 4
  %255 = alloca %"class.testing::Message", align 8
  %256 = alloca %"class.testing::internal::AssertHelper", align 8
  %257 = alloca %"class.testing::AssertionResult", align 8
  %258 = alloca %"class.chen::ip_address", align 4
  %259 = alloca %"class.chen::ip_version4", align 8
  %260 = alloca %"class.chen::ip_address", align 4
  %261 = alloca %"class.testing::Message", align 8
  %262 = alloca %"class.testing::internal::AssertHelper", align 8
  %263 = alloca %"class.testing::AssertionResult", align 8
  %264 = alloca %"class.chen::ip_address", align 4
  %265 = alloca %"class.chen::ip_version4", align 8
  %266 = alloca %"class.chen::ip_address", align 4
  %267 = alloca %"class.testing::Message", align 8
  %268 = alloca %"class.testing::internal::AssertHelper", align 8
  %269 = alloca %"class.testing::AssertionResult", align 8
  %270 = alloca %"class.chen::ip_address", align 4
  %271 = alloca %"class.chen::ip_version4", align 8
  %272 = alloca %"class.chen::ip_address", align 4
  %273 = alloca %"class.testing::Message", align 8
  %274 = alloca %"class.testing::internal::AssertHelper", align 8
  %275 = alloca %"class.testing::AssertionResult", align 8
  %276 = alloca %"class.chen::ip_address", align 4
  %277 = alloca %"class.chen::ip_version4", align 8
  %278 = alloca %"class.chen::ip_address", align 4
  %279 = alloca %"class.testing::Message", align 8
  %280 = alloca %"class.testing::internal::AssertHelper", align 8
  %281 = alloca %"class.testing::AssertionResult", align 8
  %282 = alloca %"class.chen::ip_address", align 4
  %283 = alloca %"class.chen::ip_version4", align 8
  %284 = alloca %"class.chen::ip_address", align 4
  %285 = alloca %"class.testing::Message", align 8
  %286 = alloca %"class.testing::internal::AssertHelper", align 8
  %287 = alloca %"class.testing::AssertionResult", align 8
  %288 = alloca %"class.std::__cxx11::basic_string", align 8
  %289 = alloca %"class.chen::ip_address", align 4
  %290 = alloca %"class.testing::Message", align 8
  %291 = alloca %"class.testing::internal::AssertHelper", align 8
  %292 = alloca %"class.testing::AssertionResult", align 8
  %293 = alloca %"class.std::__cxx11::basic_string", align 8
  %294 = alloca %"class.chen::ip_address", align 4
  %295 = alloca %"class.testing::Message", align 8
  %296 = alloca %"class.testing::internal::AssertHelper", align 8
  %297 = alloca %"struct.std::array", align 1
  %298 = alloca %"class.testing::AssertionResult", align 8
  %299 = alloca %"class.chen::ip_address", align 4
  %300 = alloca %"class.testing::Message", align 8
  %301 = alloca %"class.testing::internal::AssertHelper", align 8
  %302 = alloca %"class.testing::AssertionResult", align 8
  %303 = alloca i32, align 4
  %304 = alloca i8, align 1
  %305 = alloca %"class.chen::ip_address", align 4
  %306 = alloca %"class.testing::Message", align 8
  %307 = alloca %"class.testing::internal::AssertHelper", align 8
  %308 = alloca %"class.testing::AssertionResult", align 8
  %309 = alloca i32, align 4
  %310 = alloca i8, align 1
  %311 = alloca %"class.chen::ip_address", align 4
  %312 = alloca %"class.testing::Message", align 8
  %313 = alloca %"class.testing::internal::AssertHelper", align 8
  %314 = alloca %"class.testing::AssertionResult", align 8
  %315 = alloca i32, align 4
  %316 = alloca i8, align 1
  %317 = alloca %"class.chen::ip_address", align 4
  %318 = alloca %"class.testing::Message", align 8
  %319 = alloca %"class.testing::internal::AssertHelper", align 8
  %320 = alloca %"struct.std::array", align 1
  %321 = alloca %"struct.std::array", align 1
  %322 = alloca %"class.testing::AssertionResult", align 8
  %323 = alloca %"struct.std::array", align 8
  %324 = alloca %"class.chen::ip_address", align 4
  %325 = alloca %"class.testing::Message", align 8
  %326 = alloca %"class.testing::internal::AssertHelper", align 8
  %327 = alloca %"class.testing::AssertionResult", align 8
  %328 = alloca %"struct.std::array", align 8
  %329 = alloca %"class.chen::ip_address", align 4
  %330 = alloca %"class.testing::Message", align 8
  %331 = alloca %"class.testing::internal::AssertHelper", align 8
  %332 = alloca %"class.testing::AssertionResult", align 8
  %333 = alloca %"struct.std::array", align 8
  %334 = alloca %"class.chen::ip_address", align 4
  %335 = alloca %"class.testing::Message", align 8
  %336 = alloca %"class.testing::internal::AssertHelper", align 8
  %337 = alloca %"class.testing::AssertionResult", align 8
  %338 = alloca %"struct.std::array", align 8
  %339 = alloca %"class.chen::ip_address", align 4
  %340 = alloca %"class.testing::Message", align 8
  %341 = alloca %"class.testing::internal::AssertHelper", align 8
  %342 = alloca %"class.testing::AssertionResult", align 8
  %343 = alloca %"class.std::__cxx11::basic_string", align 8
  %344 = alloca %"class.chen::ip_address", align 4
  %345 = alloca %"class.chen::ip_address", align 4
  %346 = alloca %"class.testing::Message", align 8
  %347 = alloca %"class.testing::internal::AssertHelper", align 8
  %348 = alloca %"class.testing::AssertionResult", align 8
  %349 = alloca %"class.std::__cxx11::basic_string", align 8
  %350 = alloca %"class.chen::ip_address", align 4
  %351 = alloca %"class.chen::ip_address", align 4
  %352 = alloca %"class.testing::Message", align 8
  %353 = alloca %"class.testing::internal::AssertHelper", align 8
  %354 = alloca %"class.testing::AssertionResult", align 8
  %355 = alloca %"class.std::__cxx11::basic_string", align 8
  %356 = alloca %"class.chen::ip_address", align 4
  %357 = alloca %"class.chen::ip_address", align 4
  %358 = alloca %"class.testing::Message", align 8
  %359 = alloca %"class.testing::internal::AssertHelper", align 8
  %360 = alloca %"class.testing::AssertionResult", align 8
  %361 = alloca %"class.std::__cxx11::basic_string", align 8
  %362 = alloca %"class.chen::ip_address", align 4
  %363 = alloca %"class.chen::ip_address", align 4
  %364 = alloca %"class.testing::Message", align 8
  %365 = alloca %"class.testing::internal::AssertHelper", align 8
  %366 = alloca %"class.testing::AssertionResult", align 8
  %367 = alloca %"class.std::__cxx11::basic_string", align 8
  %368 = alloca %"class.chen::ip_address", align 4
  %369 = alloca %"class.chen::ip_address", align 4
  %370 = alloca %"class.testing::Message", align 8
  %371 = alloca %"class.testing::internal::AssertHelper", align 8
  %372 = alloca %"class.testing::AssertionResult", align 8
  %373 = alloca %"class.std::__cxx11::basic_string", align 8
  %374 = alloca %"class.chen::ip_address", align 4
  %375 = alloca %"class.chen::ip_address", align 4
  %376 = alloca %"class.testing::Message", align 8
  %377 = alloca %"class.testing::internal::AssertHelper", align 8
  %378 = alloca %"class.testing::AssertionResult", align 8
  %379 = alloca i8, align 1
  %380 = alloca %"class.chen::ip_address", align 4
  %381 = alloca %"class.testing::Message", align 8
  %382 = alloca %"class.testing::internal::AssertHelper", align 8
  %383 = alloca %"class.std::__cxx11::basic_string", align 8
  %384 = alloca %"class.testing::AssertionResult", align 8
  %385 = alloca i8, align 1
  %386 = alloca %"class.chen::ip_address", align 4
  %387 = alloca %"class.testing::Message", align 8
  %388 = alloca %"class.testing::internal::AssertHelper", align 8
  %389 = alloca %"class.std::__cxx11::basic_string", align 8
  %390 = alloca %"class.testing::AssertionResult", align 8
  %391 = alloca i8, align 1
  %392 = alloca %"class.chen::ip_address", align 4
  %393 = alloca %"class.testing::Message", align 8
  %394 = alloca %"class.testing::internal::AssertHelper", align 8
  %395 = alloca %"class.std::__cxx11::basic_string", align 8
  %396 = alloca %"class.testing::AssertionResult", align 8
  %397 = alloca i8, align 1
  %398 = alloca %"class.chen::ip_address", align 4
  %399 = alloca %"class.testing::Message", align 8
  %400 = alloca %"class.testing::internal::AssertHelper", align 8
  %401 = alloca %"class.std::__cxx11::basic_string", align 8
  %402 = alloca %"class.testing::AssertionResult", align 8
  %403 = alloca i8, align 1
  %404 = alloca %"class.chen::ip_address", align 4
  %405 = alloca %"class.testing::Message", align 8
  %406 = alloca %"class.testing::internal::AssertHelper", align 8
  %407 = alloca %"class.std::__cxx11::basic_string", align 8
  %408 = alloca %"class.testing::AssertionResult", align 8
  %409 = alloca i8, align 1
  %410 = alloca %"class.chen::ip_address", align 4
  %411 = alloca %"class.testing::Message", align 8
  %412 = alloca %"class.testing::internal::AssertHelper", align 8
  %413 = alloca %"class.std::__cxx11::basic_string", align 8
  %414 = alloca %"class.testing::AssertionResult", align 8
  %415 = alloca i8, align 1
  %416 = alloca %"class.chen::ip_address", align 4
  %417 = alloca %"class.testing::Message", align 8
  %418 = alloca %"class.testing::internal::AssertHelper", align 8
  %419 = alloca %"class.std::__cxx11::basic_string", align 8
  %420 = alloca %"class.testing::AssertionResult", align 8
  %421 = alloca i8, align 1
  %422 = alloca %"class.chen::ip_address", align 4
  %423 = alloca %"class.testing::Message", align 8
  %424 = alloca %"class.testing::internal::AssertHelper", align 8
  %425 = alloca %"class.std::__cxx11::basic_string", align 8
  %426 = alloca %"class.testing::AssertionResult", align 8
  %427 = alloca i8, align 1
  %428 = alloca %"class.chen::ip_address", align 4
  %429 = alloca %"class.testing::Message", align 8
  %430 = alloca %"class.testing::internal::AssertHelper", align 8
  %431 = alloca %"class.std::__cxx11::basic_string", align 8
  %432 = alloca %"class.testing::AssertionResult", align 8
  %433 = alloca i8, align 1
  %434 = alloca %"class.chen::ip_address", align 4
  %435 = alloca %"class.testing::Message", align 8
  %436 = alloca %"class.testing::internal::AssertHelper", align 8
  %437 = alloca %"class.std::__cxx11::basic_string", align 8
  %438 = alloca %"class.testing::AssertionResult", align 8
  %439 = alloca i8, align 1
  %440 = alloca %"class.chen::ip_address", align 4
  %441 = alloca %"class.testing::Message", align 8
  %442 = alloca %"class.testing::internal::AssertHelper", align 8
  %443 = alloca %"class.std::__cxx11::basic_string", align 8
  %444 = alloca %"class.testing::AssertionResult", align 8
  %445 = alloca i8, align 1
  %446 = alloca %"class.chen::ip_address", align 4
  %447 = alloca %"class.testing::Message", align 8
  %448 = alloca %"class.testing::internal::AssertHelper", align 8
  %449 = alloca %"class.std::__cxx11::basic_string", align 8
  %450 = alloca %"class.testing::AssertionResult", align 8
  %451 = alloca i8, align 1
  %452 = alloca %"class.chen::ip_address", align 4
  %453 = alloca %"class.testing::Message", align 8
  %454 = alloca %"class.testing::internal::AssertHelper", align 8
  %455 = alloca %"class.std::__cxx11::basic_string", align 8
  %456 = alloca %"class.testing::AssertionResult", align 8
  %457 = alloca i8, align 1
  %458 = alloca %"class.chen::ip_address", align 4
  %459 = alloca %"class.testing::Message", align 8
  %460 = alloca %"class.testing::internal::AssertHelper", align 8
  %461 = alloca %"class.std::__cxx11::basic_string", align 8
  %462 = alloca %"class.testing::AssertionResult", align 8
  %463 = alloca i8, align 1
  %464 = alloca %"class.chen::ip_address", align 4
  %465 = alloca %"class.testing::Message", align 8
  %466 = alloca %"class.testing::internal::AssertHelper", align 8
  %467 = alloca %"class.std::__cxx11::basic_string", align 8
  %468 = alloca %"class.testing::AssertionResult", align 8
  %469 = alloca i8, align 1
  %470 = alloca %"class.chen::ip_address", align 4
  %471 = alloca %"class.testing::Message", align 8
  %472 = alloca %"class.testing::internal::AssertHelper", align 8
  %473 = alloca %"class.std::__cxx11::basic_string", align 8
  %474 = alloca %"class.testing::AssertionResult", align 8
  %475 = alloca i8, align 1
  %476 = alloca %"class.chen::ip_address", align 4
  %477 = alloca %"class.testing::Message", align 8
  %478 = alloca %"class.testing::internal::AssertHelper", align 8
  %479 = alloca %"class.std::__cxx11::basic_string", align 8
  %480 = alloca %"class.testing::AssertionResult", align 8
  %481 = alloca i8, align 1
  %482 = alloca %"class.chen::ip_address", align 4
  %483 = alloca %"class.testing::Message", align 8
  %484 = alloca %"class.testing::internal::AssertHelper", align 8
  %485 = alloca %"class.std::__cxx11::basic_string", align 8
  %486 = alloca %"class.testing::AssertionResult", align 8
  %487 = alloca i8, align 1
  %488 = alloca %"class.chen::ip_address", align 4
  %489 = alloca %"class.testing::Message", align 8
  %490 = alloca %"class.testing::internal::AssertHelper", align 8
  %491 = alloca %"class.std::__cxx11::basic_string", align 8
  %492 = alloca %"class.testing::AssertionResult", align 8
  %493 = alloca i8, align 1
  %494 = alloca %"class.chen::ip_address", align 4
  %495 = alloca %"class.testing::Message", align 8
  %496 = alloca %"class.testing::internal::AssertHelper", align 8
  %497 = alloca %"class.std::__cxx11::basic_string", align 8
  %498 = alloca %"class.testing::AssertionResult", align 8
  %499 = alloca %"class.chen::ip_address", align 4
  %500 = alloca %"class.chen::ip_address", align 4
  %501 = alloca %"class.testing::Message", align 8
  %502 = alloca %"class.testing::internal::AssertHelper", align 8
  %503 = alloca %"class.testing::AssertionResult", align 8
  %504 = alloca %"class.chen::ip_address", align 4
  %505 = alloca %"class.chen::ip_address", align 4
  %506 = alloca %"class.testing::Message", align 8
  %507 = alloca %"class.testing::internal::AssertHelper", align 8
  %508 = alloca %"class.testing::AssertionResult", align 8
  %509 = alloca %"class.chen::ip_address", align 4
  %510 = alloca %"class.chen::ip_address", align 4
  %511 = alloca %"class.testing::Message", align 8
  %512 = alloca %"class.testing::internal::AssertHelper", align 8
  %513 = alloca %"class.testing::AssertionResult", align 8
  %514 = alloca %"class.chen::ip_address", align 4
  %515 = alloca %"class.chen::ip_address", align 4
  %516 = alloca %"class.testing::Message", align 8
  %517 = alloca %"class.testing::internal::AssertHelper", align 8
  %518 = alloca %"class.testing::AssertionResult", align 8
  %519 = alloca %"class.chen::ip_address", align 4
  %520 = alloca %"class.chen::ip_address", align 4
  %521 = alloca %"class.testing::Message", align 8
  %522 = alloca %"class.testing::internal::AssertHelper", align 8
  %523 = alloca %"class.testing::AssertionResult", align 8
  %524 = alloca %"class.chen::ip_address", align 4
  %525 = alloca %"class.chen::ip_address", align 4
  %526 = alloca %"class.testing::Message", align 8
  %527 = alloca %"class.testing::internal::AssertHelper", align 8
  %528 = alloca %"class.testing::AssertionResult", align 8
  %529 = alloca %"class.chen::ip_address", align 4
  %530 = alloca %"class.chen::ip_address", align 4
  %531 = alloca %"class.testing::Message", align 8
  %532 = alloca %"class.testing::internal::AssertHelper", align 8
  %533 = alloca %"class.testing::AssertionResult", align 8
  %534 = alloca %"class.chen::ip_address", align 4
  %535 = alloca %"class.chen::ip_address", align 4
  %536 = alloca %"class.testing::Message", align 8
  %537 = alloca %"class.testing::internal::AssertHelper", align 8
  %538 = alloca %"class.testing::AssertionResult", align 8
  %539 = alloca %"class.chen::ip_address", align 4
  %540 = alloca %"class.chen::ip_address", align 4
  %541 = alloca %"class.testing::Message", align 8
  %542 = alloca %"class.testing::internal::AssertHelper", align 8
  %543 = alloca %"class.testing::AssertionResult", align 8
  %544 = alloca %"class.chen::ip_address", align 4
  %545 = alloca %"class.chen::ip_address", align 4
  %546 = alloca %"class.testing::Message", align 8
  %547 = alloca %"class.testing::internal::AssertHelper", align 8
  %548 = alloca %"class.testing::AssertionResult", align 8
  %549 = alloca %"class.chen::ip_address", align 4
  %550 = alloca %"class.chen::ip_address", align 4
  %551 = alloca %"class.testing::Message", align 8
  %552 = alloca %"class.testing::internal::AssertHelper", align 8
  %553 = alloca %"class.testing::AssertionResult", align 8
  %554 = alloca %"class.chen::ip_address", align 4
  %555 = alloca %"class.chen::ip_address", align 4
  %556 = alloca %"class.testing::Message", align 8
  %557 = alloca %"class.testing::internal::AssertHelper", align 8
  %558 = alloca %"class.testing::AssertionResult", align 8
  %559 = alloca %"class.chen::ip_address", align 4
  %560 = alloca %"class.chen::ip_address", align 4
  %561 = alloca %"class.testing::Message", align 8
  %562 = alloca %"class.testing::internal::AssertHelper", align 8
  %563 = alloca %"class.testing::AssertionResult", align 8
  %564 = alloca %"class.chen::ip_address", align 4
  %565 = alloca %"class.chen::ip_address", align 4
  %566 = alloca %"class.testing::Message", align 8
  %567 = alloca %"class.testing::internal::AssertHelper", align 8
  %568 = alloca %"class.testing::AssertionResult", align 8
  %569 = alloca %"class.std::__cxx11::basic_string", align 8
  %570 = alloca %"class.chen::ip_address", align 4
  %571 = alloca %"class.testing::Message", align 8
  %572 = alloca %"class.testing::internal::AssertHelper", align 8
  %573 = alloca %"class.testing::AssertionResult", align 8
  %574 = alloca %"class.std::__cxx11::basic_string", align 8
  %575 = alloca %"class.chen::ip_address", align 4
  %576 = alloca %"class.testing::Message", align 8
  %577 = alloca %"class.testing::internal::AssertHelper", align 8
  %578 = alloca i8, align 1
  %579 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %580 = alloca %"class.chen::ip_address", align 4
  %581 = alloca %"class.std::__cxx11::basic_string", align 8
  %582 = alloca %"class.std::allocator", align 1
  %583 = alloca %"class.testing::Message", align 8
  %584 = alloca %"class.testing::internal::AssertHelper", align 8
  %585 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %586 = alloca %"class.chen::ip_address", align 4
  %587 = alloca %"class.chen::ip_version6", align 4
  %588 = alloca %"class.testing::Message", align 8
  %589 = alloca %"class.testing::internal::AssertHelper", align 8
  %590 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %591 = alloca %"class.std::__cxx11::basic_string", align 8
  %592 = alloca %"class.std::allocator", align 1
  %593 = alloca %"class.testing::Message", align 8
  %594 = alloca %"class.testing::internal::AssertHelper", align 8
  %595 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %596 = alloca %"class.std::__cxx11::basic_string", align 8
  %597 = alloca %"class.std::allocator", align 1
  %598 = alloca %"class.testing::Message", align 8
  %599 = alloca %"class.testing::internal::AssertHelper", align 8
  %600 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %601 = alloca %"class.std::__cxx11::basic_string", align 8
  %602 = alloca %"class.std::allocator", align 1
  %603 = alloca %"class.testing::Message", align 8
  %604 = alloca %"class.testing::internal::AssertHelper", align 8
  %605 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %606 = alloca %"class.std::__cxx11::basic_string", align 8
  %607 = alloca %"class.std::allocator", align 1
  %608 = alloca %"class.testing::Message", align 8
  %609 = alloca %"class.testing::internal::AssertHelper", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %3) #11
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %3, i8 noundef zeroext 10)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %4) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %4, ptr noundef nonnull @.str.214)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %2, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.213, ptr noundef nonnull align 4 dereferenceable(28) %3, ptr noundef nonnull align 4 dereferenceable(28) %4)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %3) #11
  %610 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
  br i1 %610, label %625, label %611

611:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %612 unwind label %617

612:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %613 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %614 unwind label %619

614:                                              ; preds = %612
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 235, ptr noundef %613)
          to label %615 unwind label %619

615:                                              ; preds = %614
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %616 unwind label %621

616:                                              ; preds = %615
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br label %625

617:                                              ; preds = %611
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %624

619:                                              ; preds = %614, %612
  %620 = landingpad { ptr, i32 }
          cleanup
  br label %623

621:                                              ; preds = %615
  %622 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #11
  br label %623

623:                                              ; preds = %621, %619
  %.pn = phi { ptr, i32 } [ %622, %621 ], [ %620, %619 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #11
  br label %624

624:                                              ; preds = %623, %617
  %.pn.pn = phi { ptr, i32 } [ %.pn, %623 ], [ %618, %617 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  br label %3354

625:                                              ; preds = %1, %616
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %8) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %8, ptr noundef nonnull @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %9) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %9, ptr noundef nonnull @.str.216)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %7, ptr noundef nonnull @.str.215, ptr noundef nonnull @.str.215, ptr noundef nonnull align 4 dereferenceable(28) %8, ptr noundef nonnull align 4 dereferenceable(28) %9)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %8) #11
  %626 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  br i1 %626, label %641, label %627

627:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %628 unwind label %633

628:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %629 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %630 unwind label %635

630:                                              ; preds = %628
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 236, ptr noundef %629)
          to label %631 unwind label %635

631:                                              ; preds = %630
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %632 unwind label %637

632:                                              ; preds = %631
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %641

633:                                              ; preds = %627
  %634 = landingpad { ptr, i32 }
          cleanup
  br label %640

635:                                              ; preds = %630, %628
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %639

637:                                              ; preds = %631
  %638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  br label %639

639:                                              ; preds = %637, %635
  %.pn514 = phi { ptr, i32 } [ %638, %637 ], [ %636, %635 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  br label %640

640:                                              ; preds = %639, %633
  %.pn514.pn = phi { ptr, i32 } [ %.pn514, %639 ], [ %634, %633 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  br label %3354

641:                                              ; preds = %625, %632
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %13) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %13, ptr noundef nonnull @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.218, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %642 unwind label %646

642:                                              ; preds = %641
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 8 dereferenceable(32) %15, i8 noundef zeroext 64)
          to label %643 unwind label %648

643:                                              ; preds = %642
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %12, ptr noundef nonnull @.str.215, ptr noundef nonnull @.str.217, ptr noundef nonnull align 4 dereferenceable(28) %13, ptr noundef nonnull align 4 dereferenceable(28) %14)
          to label %644 unwind label %648

644:                                              ; preds = %643
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #11
  %645 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  br i1 %645, label %665, label %651

646:                                              ; preds = %641
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %650

648:                                              ; preds = %643, %642
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  br label %650

650:                                              ; preds = %648, %646
  %.pn517 = phi { ptr, i32 } [ %649, %648 ], [ %647, %646 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #11
  br label %671

651:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %652 unwind label %657

652:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %653 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %654 unwind label %659

654:                                              ; preds = %652
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 237, ptr noundef %653)
          to label %655 unwind label %659

655:                                              ; preds = %654
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %656 unwind label %661

656:                                              ; preds = %655
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %665

657:                                              ; preds = %651
  %658 = landingpad { ptr, i32 }
          cleanup
  br label %664

659:                                              ; preds = %654, %652
  %660 = landingpad { ptr, i32 }
          cleanup
  br label %663

661:                                              ; preds = %655
  %662 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  br label %663

663:                                              ; preds = %661, %659
  %.pn519 = phi { ptr, i32 } [ %662, %661 ], [ %660, %659 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  br label %664

664:                                              ; preds = %663, %657
  %.pn519.pn = phi { ptr, i32 } [ %.pn519, %663 ], [ %658, %657 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #11
  br label %671

665:                                              ; preds = %644, %656
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %20) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %20, ptr noundef nonnull @.str.216)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.218, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %666 unwind label %672

666:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %667 unwind label %674

667:                                              ; preds = %666
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28) %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %668 unwind label %676

668:                                              ; preds = %667
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %19, ptr noundef nonnull @.str.215, ptr noundef nonnull @.str.219, ptr noundef nonnull align 4 dereferenceable(28) %20, ptr noundef nonnull align 4 dereferenceable(28) %21)
          to label %669 unwind label %676

669:                                              ; preds = %668
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %20) #11
  %670 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
  br i1 %670, label %694, label %680

671:                                              ; preds = %664, %650
  %.pn519.pn.pn = phi { ptr, i32 } [ %.pn519.pn, %664 ], [ %.pn517, %650 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %3354

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, %667
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  br label %678

678:                                              ; preds = %676, %674
  %.pn523 = phi { ptr, i32 } [ %677, %676 ], [ %675, %674 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  br label %679

679:                                              ; preds = %678, %672
  %.pn523.pn = phi { ptr, i32 } [ %.pn523, %678 ], [ %673, %672 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %20) #11
  br label %696

680:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %681 unwind label %686

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  %682 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %683 unwind label %688

683:                                              ; preds = %681
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 238, ptr noundef %682)
          to label %684 unwind label %688

684:                                              ; preds = %683
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %685 unwind label %690

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

686:                                              ; preds = %680
  %687 = landingpad { ptr, i32 }
          cleanup
  br label %693

688:                                              ; preds = %683, %681
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %692

690:                                              ; preds = %684
  %691 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  br label %692

692:                                              ; preds = %690, %688
  %.pn526 = phi { ptr, i32 } [ %691, %690 ], [ %689, %688 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  br label %693

693:                                              ; preds = %692, %686
  %.pn526.pn = phi { ptr, i32 } [ %.pn526, %692 ], [ %687, %686 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #11
  br label %696

694:                                              ; preds = %669, %685
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %29) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %29, ptr noundef nonnull @.str.214)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %30) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %30, ptr noundef nonnull @.str.222)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %28, ptr noundef nonnull @.str.213, ptr noundef nonnull @.str.221, ptr noundef nonnull align 4 dereferenceable(28) %29, ptr noundef nonnull align 4 dereferenceable(28) %30)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %29) #11
  %695 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  br i1 %695, label %711, label %697

696:                                              ; preds = %693, %679
  %.pn526.pn.pn = phi { ptr, i32 } [ %.pn526.pn, %693 ], [ %.pn523.pn, %679 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #11
  br label %3354

697:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %698 unwind label %703

698:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #11
  %699 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %700 unwind label %705

700:                                              ; preds = %698
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 240, ptr noundef %699)
          to label %701 unwind label %705

701:                                              ; preds = %700
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %702 unwind label %707

702:                                              ; preds = %701
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #11
  br label %711

703:                                              ; preds = %697
  %704 = landingpad { ptr, i32 }
          cleanup
  br label %710

705:                                              ; preds = %700, %698
  %706 = landingpad { ptr, i32 }
          cleanup
  br label %709

707:                                              ; preds = %701
  %708 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #11
  br label %709

709:                                              ; preds = %707, %705
  %.pn530 = phi { ptr, i32 } [ %708, %707 ], [ %706, %705 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #11
  br label %710

710:                                              ; preds = %709, %703
  %.pn530.pn = phi { ptr, i32 } [ %.pn530, %709 ], [ %704, %703 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br label %3354

711:                                              ; preds = %694, %702
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %34) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %34, ptr noundef nonnull @.str.214)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %35) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %35, ptr noundef nonnull @.str.224)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %33, ptr noundef nonnull @.str.213, ptr noundef nonnull @.str.223, ptr noundef nonnull align 4 dereferenceable(28) %34, ptr noundef nonnull align 4 dereferenceable(28) %35)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %34) #11
  %712 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  br i1 %712, label %727, label %713

713:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %714 unwind label %719

714:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #11
  %715 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %716 unwind label %721

716:                                              ; preds = %714
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 241, ptr noundef %715)
          to label %717 unwind label %721

717:                                              ; preds = %716
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %718 unwind label %723

718:                                              ; preds = %717
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #11
  br label %727

719:                                              ; preds = %713
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %726

721:                                              ; preds = %716, %714
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %725

723:                                              ; preds = %717
  %724 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  br label %725

725:                                              ; preds = %723, %721
  %.pn533 = phi { ptr, i32 } [ %724, %723 ], [ %722, %721 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  br label %726

726:                                              ; preds = %725, %719
  %.pn533.pn = phi { ptr, i32 } [ %.pn533, %725 ], [ %720, %719 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #11
  br label %3354

727:                                              ; preds = %711, %718
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %39) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %39, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %40) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %40, ptr noundef nonnull @.str.227)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %38, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.226, ptr noundef nonnull align 4 dereferenceable(28) %39, ptr noundef nonnull align 4 dereferenceable(28) %40)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %39) #11
  %728 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
  br i1 %728, label %743, label %729

729:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %730 unwind label %735

730:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #11
  %731 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %732 unwind label %737

732:                                              ; preds = %730
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 243, ptr noundef %731)
          to label %733 unwind label %737

733:                                              ; preds = %732
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %734 unwind label %739

734:                                              ; preds = %733
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  br label %743

735:                                              ; preds = %729
  %736 = landingpad { ptr, i32 }
          cleanup
  br label %742

737:                                              ; preds = %732, %730
  %738 = landingpad { ptr, i32 }
          cleanup
  br label %741

739:                                              ; preds = %733
  %740 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #11
  br label %741

741:                                              ; preds = %739, %737
  %.pn536 = phi { ptr, i32 } [ %740, %739 ], [ %738, %737 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #11
  br label %742

742:                                              ; preds = %741, %735
  %.pn536.pn = phi { ptr, i32 } [ %.pn536, %741 ], [ %736, %735 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #11
  br label %3354

743:                                              ; preds = %727, %734
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %44) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %44, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %45) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %45, ptr noundef nonnull @.str.229)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %43, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.228, ptr noundef nonnull align 4 dereferenceable(28) %44, ptr noundef nonnull align 4 dereferenceable(28) %45)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %44) #11
  %744 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
  br i1 %744, label %759, label %745

745:                                              ; preds = %743
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %746 unwind label %751

746:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #11
  %747 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %748 unwind label %753

748:                                              ; preds = %746
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %47, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 244, ptr noundef %747)
          to label %749 unwind label %753

749:                                              ; preds = %748
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %750 unwind label %755

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

751:                                              ; preds = %745
  %752 = landingpad { ptr, i32 }
          cleanup
  br label %758

753:                                              ; preds = %748, %746
  %754 = landingpad { ptr, i32 }
          cleanup
  br label %757

755:                                              ; preds = %749
  %756 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #11
  br label %757

757:                                              ; preds = %755, %753
  %.pn539 = phi { ptr, i32 } [ %756, %755 ], [ %754, %753 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  br label %758

758:                                              ; preds = %757, %751
  %.pn539.pn = phi { ptr, i32 } [ %.pn539, %757 ], [ %752, %751 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #11
  br label %3354

759:                                              ; preds = %743, %750
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %49) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %49, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %50) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %50, ptr noundef nonnull @.str.231)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %48, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.230, ptr noundef nonnull align 4 dereferenceable(28) %49, ptr noundef nonnull align 4 dereferenceable(28) %50)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %50) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %49) #11
  %760 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
  br i1 %760, label %775, label %761

761:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %762 unwind label %767

762:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #11
  %763 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %764 unwind label %769

764:                                              ; preds = %762
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 245, ptr noundef %763)
          to label %765 unwind label %769

765:                                              ; preds = %764
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %766 unwind label %771

766:                                              ; preds = %765
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #11
  br label %775

767:                                              ; preds = %761
  %768 = landingpad { ptr, i32 }
          cleanup
  br label %774

769:                                              ; preds = %764, %762
  %770 = landingpad { ptr, i32 }
          cleanup
  br label %773

771:                                              ; preds = %765
  %772 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br label %773

773:                                              ; preds = %771, %769
  %.pn542 = phi { ptr, i32 } [ %772, %771 ], [ %770, %769 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  br label %774

774:                                              ; preds = %773, %767
  %.pn542.pn = phi { ptr, i32 } [ %.pn542, %773 ], [ %768, %767 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #11
  br label %3354

775:                                              ; preds = %759, %766
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %54) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull @.str.234)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %55) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %55, ptr noundef nonnull @.str.235)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %53, ptr noundef nonnull @.str.232, ptr noundef nonnull @.str.233, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(28) %55)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %54) #11
  %776 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
  br i1 %776, label %791, label %777

777:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %778 unwind label %783

778:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #11
  %779 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %780 unwind label %785

780:                                              ; preds = %778
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %57, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 247, ptr noundef %779)
          to label %781 unwind label %785

781:                                              ; preds = %780
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %782 unwind label %787

782:                                              ; preds = %781
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #11
  br label %791

783:                                              ; preds = %777
  %784 = landingpad { ptr, i32 }
          cleanup
  br label %790

785:                                              ; preds = %780, %778
  %786 = landingpad { ptr, i32 }
          cleanup
  br label %789

787:                                              ; preds = %781
  %788 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  br label %789

789:                                              ; preds = %787, %785
  %.pn545 = phi { ptr, i32 } [ %788, %787 ], [ %786, %785 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  br label %790

790:                                              ; preds = %789, %783
  %.pn545.pn = phi { ptr, i32 } [ %.pn545, %789 ], [ %784, %783 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #11
  br label %3354

791:                                              ; preds = %775, %782
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %59) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %59, ptr noundef nonnull @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %60) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %60, ptr noundef nonnull @.str.237)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %58, ptr noundef nonnull @.str.236, ptr noundef nonnull @.str.236, ptr noundef nonnull align 4 dereferenceable(28) %59, ptr noundef nonnull align 4 dereferenceable(28) %60)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %60) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %59) #11
  %792 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  br i1 %792, label %807, label %793

793:                                              ; preds = %791
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %794 unwind label %799

794:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #11
  %795 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %796 unwind label %801

796:                                              ; preds = %794
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %62, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 249, ptr noundef %795)
          to label %797 unwind label %801

797:                                              ; preds = %796
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %798 unwind label %803

798:                                              ; preds = %797
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #11
  br label %807

799:                                              ; preds = %793
  %800 = landingpad { ptr, i32 }
          cleanup
  br label %806

801:                                              ; preds = %796, %794
  %802 = landingpad { ptr, i32 }
          cleanup
  br label %805

803:                                              ; preds = %797
  %804 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #11
  br label %805

805:                                              ; preds = %803, %801
  %.pn548 = phi { ptr, i32 } [ %804, %803 ], [ %802, %801 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #11
  br label %806

806:                                              ; preds = %805, %799
  %.pn548.pn = phi { ptr, i32 } [ %.pn548, %805 ], [ %800, %799 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #11
  br label %3354

807:                                              ; preds = %791, %798
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %64) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %64, ptr noundef nonnull @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %65) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %808 unwind label %812

808:                                              ; preds = %807
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %65, ptr noundef nonnull align 8 dereferenceable(32) %66, i8 noundef zeroext -128)
          to label %809 unwind label %814

809:                                              ; preds = %808
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %63, ptr noundef nonnull @.str.236, ptr noundef nonnull @.str.238, ptr noundef nonnull align 4 dereferenceable(28) %64, ptr noundef nonnull align 4 dereferenceable(28) %65)
          to label %810 unwind label %814

810:                                              ; preds = %809
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %64) #11
  %811 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  br i1 %811, label %831, label %817

812:                                              ; preds = %807
  %813 = landingpad { ptr, i32 }
          cleanup
  br label %816

814:                                              ; preds = %809, %808
  %815 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  br label %816

816:                                              ; preds = %814, %812
  %.pn551 = phi { ptr, i32 } [ %815, %814 ], [ %813, %812 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %64) #11
  br label %836

817:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %818 unwind label %823

818:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #11
  %819 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %820 unwind label %825

820:                                              ; preds = %818
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %69, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 250, ptr noundef %819)
          to label %821 unwind label %825

821:                                              ; preds = %820
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %822 unwind label %827

822:                                              ; preds = %821
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #11
  br label %831

823:                                              ; preds = %817
  %824 = landingpad { ptr, i32 }
          cleanup
  br label %830

825:                                              ; preds = %820, %818
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %829

827:                                              ; preds = %821
  %828 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  br label %829

829:                                              ; preds = %827, %825
  %.pn553 = phi { ptr, i32 } [ %828, %827 ], [ %826, %825 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  br label %830

830:                                              ; preds = %829, %823
  %.pn553.pn = phi { ptr, i32 } [ %.pn553, %829 ], [ %824, %823 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #11
  br label %836

831:                                              ; preds = %810, %822
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %71) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %71, ptr noundef nonnull @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %72) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %832 unwind label %837

832:                                              ; preds = %831
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28) %72, ptr noundef nonnull align 8 dereferenceable(32) %73, i8 noundef zeroext -128, i32 noundef 1)
          to label %833 unwind label %839

833:                                              ; preds = %832
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %70, ptr noundef nonnull @.str.236, ptr noundef nonnull @.str.239, ptr noundef nonnull align 4 dereferenceable(28) %71, ptr noundef nonnull align 4 dereferenceable(28) %72)
          to label %834 unwind label %839

834:                                              ; preds = %833
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %71) #11
  %835 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
  br i1 %835, label %856, label %842

836:                                              ; preds = %830, %816
  %.pn553.pn.pn = phi { ptr, i32 } [ %.pn553.pn, %830 ], [ %.pn551, %816 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #11
  br label %3354

837:                                              ; preds = %831
  %838 = landingpad { ptr, i32 }
          cleanup
  br label %841

839:                                              ; preds = %833, %832
  %840 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #11
  br label %841

841:                                              ; preds = %839, %837
  %.pn557 = phi { ptr, i32 } [ %840, %839 ], [ %838, %837 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %71) #11
  br label %861

842:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %843 unwind label %848

843:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #11
  %844 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %845 unwind label %850

845:                                              ; preds = %843
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 251, ptr noundef %844)
          to label %846 unwind label %850

846:                                              ; preds = %845
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %847 unwind label %852

847:                                              ; preds = %846
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #11
  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) %76) #11
  br label %854

854:                                              ; preds = %852, %850
  %.pn559 = phi { ptr, i32 } [ %853, %852 ], [ %851, %850 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #11
  br label %855

855:                                              ; preds = %854, %848
  %.pn559.pn = phi { ptr, i32 } [ %.pn559, %854 ], [ %849, %848 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #11
  br label %861

856:                                              ; preds = %834, %847
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %78) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %78, ptr noundef nonnull @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %79) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %81) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %857 unwind label %862

857:                                              ; preds = %856
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %79, ptr noundef nonnull align 8 dereferenceable(32) %80, i8 noundef zeroext 64)
          to label %858 unwind label %864

858:                                              ; preds = %857
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %77, ptr noundef nonnull @.str.241, ptr noundef nonnull @.str.242, ptr noundef nonnull align 4 dereferenceable(28) %78, ptr noundef nonnull align 4 dereferenceable(28) %79)
          to label %859 unwind label %864

859:                                              ; preds = %858
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %79) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %78) #11
  %860 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  br i1 %860, label %881, label %867

861:                                              ; preds = %855, %841
  %.pn559.pn.pn = phi { ptr, i32 } [ %.pn559.pn, %855 ], [ %.pn557, %841 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #11
  br label %3354

862:                                              ; preds = %856
  %863 = landingpad { ptr, i32 }
          cleanup
  br label %866

864:                                              ; preds = %858, %857
  %865 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #11
  br label %866

866:                                              ; preds = %864, %862
  %.pn563 = phi { ptr, i32 } [ %865, %864 ], [ %863, %862 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %79) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %78) #11
  br label %886

867:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %868 unwind label %873

868:                                              ; preds = %867
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #11
  %869 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %870 unwind label %875

870:                                              ; preds = %868
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %83, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 253, ptr noundef %869)
          to label %871 unwind label %875

871:                                              ; preds = %870
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %872 unwind label %877

872:                                              ; preds = %871
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  br label %881

873:                                              ; preds = %867
  %874 = landingpad { ptr, i32 }
          cleanup
  br label %880

875:                                              ; preds = %870, %868
  %876 = landingpad { ptr, i32 }
          cleanup
  br label %879

877:                                              ; preds = %871
  %878 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #11
  br label %879

879:                                              ; preds = %877, %875
  %.pn565 = phi { ptr, i32 } [ %878, %877 ], [ %876, %875 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  br label %880

880:                                              ; preds = %879, %873
  %.pn565.pn = phi { ptr, i32 } [ %.pn565, %879 ], [ %874, %873 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #11
  br label %886

881:                                              ; preds = %859, %872
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %85) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %85, ptr noundef nonnull @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %86) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %882 unwind label %887

882:                                              ; preds = %881
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28) %86, ptr noundef nonnull align 8 dereferenceable(32) %87, i8 noundef zeroext 64, i32 noundef 1)
          to label %883 unwind label %889

883:                                              ; preds = %882
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %84, ptr noundef nonnull @.str.241, ptr noundef nonnull @.str.244, ptr noundef nonnull align 4 dereferenceable(28) %85, ptr noundef nonnull align 4 dereferenceable(28) %86)
          to label %884 unwind label %889

884:                                              ; preds = %883
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %86) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %85) #11
  %885 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
  br i1 %885, label %906, label %892

886:                                              ; preds = %880, %866
  %.pn565.pn.pn = phi { ptr, i32 } [ %.pn565.pn, %880 ], [ %.pn563, %866 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #11
  br label %3354

887:                                              ; preds = %881
  %888 = landingpad { ptr, i32 }
          cleanup
  br label %891

889:                                              ; preds = %883, %882
  %890 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #11
  br label %891

891:                                              ; preds = %889, %887
  %.pn569 = phi { ptr, i32 } [ %890, %889 ], [ %888, %887 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %86) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %85) #11
  br label %912

892:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %893 unwind label %898

893:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #11
  %894 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %895 unwind label %900

895:                                              ; preds = %893
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %90, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 254, ptr noundef %894)
          to label %896 unwind label %900

896:                                              ; preds = %895
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %897 unwind label %902

897:                                              ; preds = %896
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #11
  br label %906

898:                                              ; preds = %892
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %905

900:                                              ; preds = %895, %893
  %901 = landingpad { ptr, i32 }
          cleanup
  br label %904

902:                                              ; preds = %896
  %903 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  br label %904

904:                                              ; preds = %902, %900
  %.pn571 = phi { ptr, i32 } [ %903, %902 ], [ %901, %900 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  br label %905

905:                                              ; preds = %904, %898
  %.pn571.pn = phi { ptr, i32 } [ %.pn571, %904 ], [ %899, %898 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #11
  br label %912

906:                                              ; preds = %884, %897
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %92) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %92, ptr noundef nonnull @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %93) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %95) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull @.str.237, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %907 unwind label %913

907:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %908 unwind label %915

908:                                              ; preds = %907
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 4 dereferenceable(28) %93, ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %909 unwind label %917

909:                                              ; preds = %908
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %91, ptr noundef nonnull @.str.241, ptr noundef nonnull @.str.245, ptr noundef nonnull align 4 dereferenceable(28) %92, ptr noundef nonnull align 4 dereferenceable(28) %93)
          to label %910 unwind label %917

910:                                              ; preds = %909
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %92) #11
  %911 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %91)
  br i1 %911, label %935, label %921

912:                                              ; preds = %905, %891
  %.pn571.pn.pn = phi { ptr, i32 } [ %.pn571.pn, %905 ], [ %.pn569, %891 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #11
  br label %3354

913:                                              ; preds = %906
  %914 = landingpad { ptr, i32 }
          cleanup
  br label %920

915:                                              ; preds = %907
  %916 = landingpad { ptr, i32 }
          cleanup
  br label %919

917:                                              ; preds = %909, %908
  %918 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #11
  br label %919

919:                                              ; preds = %917, %915
  %.pn575 = phi { ptr, i32 } [ %918, %917 ], [ %916, %915 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #11
  br label %920

920:                                              ; preds = %919, %913
  %.pn575.pn = phi { ptr, i32 } [ %.pn575, %919 ], [ %914, %913 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %92) #11
  br label %941

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

922:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #11
  %923 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %924 unwind label %929

924:                                              ; preds = %922
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 255, ptr noundef %923)
          to label %925 unwind label %929

925:                                              ; preds = %924
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %926 unwind label %931

926:                                              ; preds = %925
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  br label %935

927:                                              ; preds = %921
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %934

929:                                              ; preds = %924, %922
  %930 = landingpad { ptr, i32 }
          cleanup
  br label %933

931:                                              ; preds = %925
  %932 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #11
  br label %933

933:                                              ; preds = %931, %929
  %.pn578 = phi { ptr, i32 } [ %932, %931 ], [ %930, %929 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #11
  br label %934

934:                                              ; preds = %933, %927
  %.pn578.pn = phi { ptr, i32 } [ %.pn578, %933 ], [ %928, %927 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #11
  br label %941

935:                                              ; preds = %910, %926
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %101) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %101, ptr noundef nonnull @.str.243)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %102) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %103) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %104) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull @.str.240, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %936 unwind label %942

936:                                              ; preds = %935
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %106) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %937 unwind label %944

937:                                              ; preds = %936
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(ptr noundef nonnull align 4 dereferenceable(28) %102, ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(32) %105, i32 noundef 1)
          to label %938 unwind label %946

938:                                              ; preds = %937
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %100, ptr noundef nonnull @.str.241, ptr noundef nonnull @.str.246, ptr noundef nonnull align 4 dereferenceable(28) %101, ptr noundef nonnull align 4 dereferenceable(28) %102)
          to label %939 unwind label %946

939:                                              ; preds = %938
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %102) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %101) #11
  %940 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
  br i1 %940, label %964, label %950

941:                                              ; preds = %934, %920
  %.pn578.pn.pn = phi { ptr, i32 } [ %.pn578.pn, %934 ], [ %.pn575.pn, %920 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #11
  br label %3354

942:                                              ; preds = %935
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %949

944:                                              ; preds = %936
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %948

946:                                              ; preds = %938, %937
  %947 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #11
  br label %948

948:                                              ; preds = %946, %944
  %.pn582 = phi { ptr, i32 } [ %947, %946 ], [ %945, %944 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #11
  br label %949

949:                                              ; preds = %948, %942
  %.pn582.pn = phi { ptr, i32 } [ %.pn582, %948 ], [ %943, %942 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %102) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %101) #11
  br label %966

950:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %951 unwind label %956

951:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #11
  %952 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
          to label %953 unwind label %958

953:                                              ; preds = %951
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %108, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 256, ptr noundef %952)
          to label %954 unwind label %958

954:                                              ; preds = %953
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %955 unwind label %960

955:                                              ; preds = %954
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #11
  br label %964

956:                                              ; preds = %950
  %957 = landingpad { ptr, i32 }
          cleanup
  br label %963

958:                                              ; preds = %953, %951
  %959 = landingpad { ptr, i32 }
          cleanup
  br label %962

960:                                              ; preds = %954
  %961 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #11
  br label %962

962:                                              ; preds = %960, %958
  %.pn585 = phi { ptr, i32 } [ %961, %960 ], [ %959, %958 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #11
  br label %963

963:                                              ; preds = %962, %956
  %.pn585.pn = phi { ptr, i32 } [ %.pn585, %962 ], [ %957, %956 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #11
  br label %966

964:                                              ; preds = %939, %955
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %109) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %109, ptr noundef nonnull align 16 dereferenceable(16) @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.bytes, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %110) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %111) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %111, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %112) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %113) #11
  call void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24) %113, ptr noundef nonnull %109)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %112, ptr noundef nonnull align 4 dereferenceable(24) %113)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %110, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.247, ptr noundef nonnull align 4 dereferenceable(28) %111, ptr noundef nonnull align 4 dereferenceable(28) %112)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %113) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %112) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %111) #11
  %965 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
  br i1 %965, label %981, label %967

966:                                              ; preds = %963, %949
  %.pn585.pn.pn = phi { ptr, i32 } [ %.pn585.pn, %963 ], [ %.pn582.pn, %949 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #11
  br label %3354

967:                                              ; preds = %964
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %968 unwind label %973

968:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %115) #11
  %969 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
          to label %970 unwind label %975

970:                                              ; preds = %968
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 260, ptr noundef %969)
          to label %971 unwind label %975

971:                                              ; preds = %970
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %972 unwind label %977

972:                                              ; preds = %971
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #11
  br label %981

973:                                              ; preds = %967
  %974 = landingpad { ptr, i32 }
          cleanup
  br label %980

975:                                              ; preds = %970, %968
  %976 = landingpad { ptr, i32 }
          cleanup
  br label %979

977:                                              ; preds = %971
  %978 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #11
  br label %979

979:                                              ; preds = %977, %975
  %.pn589 = phi { ptr, i32 } [ %978, %977 ], [ %976, %975 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #11
  br label %980

980:                                              ; preds = %979, %973
  %.pn589.pn = phi { ptr, i32 } [ %.pn589, %979 ], [ %974, %973 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #11
  br label %3353

981:                                              ; preds = %964, %972
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %116) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %117) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %117, ptr noundef nonnull @.str.250)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %118) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %119) #11
  call void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %119, ptr noundef nonnull %109, i8 noundef zeroext 64)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %118, ptr noundef nonnull align 4 dereferenceable(24) %119)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %116, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.249, ptr noundef nonnull align 4 dereferenceable(28) %117, ptr noundef nonnull align 4 dereferenceable(28) %118)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %118) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %117) #11
  %982 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  br i1 %982, label %997, label %983

983:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %984 unwind label %989

984:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #11
  %985 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %986 unwind label %991

986:                                              ; preds = %984
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %121, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 261, ptr noundef %985)
          to label %987 unwind label %991

987:                                              ; preds = %986
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %988 unwind label %993

988:                                              ; preds = %987
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #11
  br label %997

989:                                              ; preds = %983
  %990 = landingpad { ptr, i32 }
          cleanup
  br label %996

991:                                              ; preds = %986, %984
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %995

993:                                              ; preds = %987
  %994 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #11
  br label %995

995:                                              ; preds = %993, %991
  %.pn592 = phi { ptr, i32 } [ %994, %993 ], [ %992, %991 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #11
  br label %996

996:                                              ; preds = %995, %989
  %.pn592.pn = phi { ptr, i32 } [ %.pn592, %995 ], [ %990, %989 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #11
  br label %3353

997:                                              ; preds = %981, %988
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %122) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %123) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %123, ptr noundef nonnull @.str.250)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %124) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %125) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %126) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %127) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull @.str.220, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %998 unwind label %1003

998:                                              ; preds = %997
  invoke void @_ZN4chen11ip_version6C1EPKhRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(24) %125, ptr noundef nonnull %109, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %999 unwind label %1005

999:                                              ; preds = %998
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %124, ptr noundef nonnull align 4 dereferenceable(24) %125)
          to label %1000 unwind label %1005

1000:                                             ; preds = %999
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %122, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.251, ptr noundef nonnull align 4 dereferenceable(28) %123, ptr noundef nonnull align 4 dereferenceable(28) %124)
          to label %1001 unwind label %1005

1001:                                             ; preds = %1000
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %127) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %126) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %125) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %124) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %123) #11
  %1002 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %122)
  br i1 %1002, label %1022, label %1008

1003:                                             ; preds = %997
  %1004 = landingpad { ptr, i32 }
          cleanup
  br label %1007

1005:                                             ; preds = %1000, %999, %998
  %1006 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #11
  br label %1007

1007:                                             ; preds = %1005, %1003
  %.pn595 = phi { ptr, i32 } [ %1006, %1005 ], [ %1004, %1003 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %127) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %126) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %125) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %124) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %123) #11
  br label %1028

1008:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1009 unwind label %1014

1009:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #11
  %1010 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %122)
          to label %1011 unwind label %1016

1011:                                             ; preds = %1009
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %129, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 262, ptr noundef %1010)
          to label %1012 unwind label %1016

1012:                                             ; preds = %1011
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1013 unwind label %1018

1013:                                             ; preds = %1012
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #11
  br label %1022

1014:                                             ; preds = %1008
  %1015 = landingpad { ptr, i32 }
          cleanup
  br label %1021

1016:                                             ; preds = %1011, %1009
  %1017 = landingpad { ptr, i32 }
          cleanup
  br label %1020

1018:                                             ; preds = %1012
  %1019 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #11
  br label %1020

1020:                                             ; preds = %1018, %1016
  %.pn597 = phi { ptr, i32 } [ %1019, %1018 ], [ %1017, %1016 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #11
  br label %1021

1021:                                             ; preds = %1020, %1014
  %.pn597.pn = phi { ptr, i32 } [ %.pn597, %1020 ], [ %1015, %1014 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #11
  br label %1028

1022:                                             ; preds = %1001, %1013
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %130) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull @.str.27)
  %1023 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %130)
  br i1 %1023, label %1024, label %.thread

1024:                                             ; preds = %1022
  %1025 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1026 unwind label %1029

1026:                                             ; preds = %1024
  br i1 %1025, label %1027, label %.critedge

1027:                                             ; preds = %1026
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %131, ptr noundef nonnull @.str.252)
          to label %.critedge unwind label %1029

1028:                                             ; preds = %1021, %1007
  %.pn597.pn.pn = phi { ptr, i32 } [ %.pn597.pn, %1021 ], [ %.pn595, %1007 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #11
  br label %3353

1029:                                             ; preds = %1027, %1024
  %1030 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1031 = extractvalue { ptr, i32 } %1030, 0
  %1032 = extractvalue { ptr, i32 } %1030, 1
  %1033 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %1034 = icmp eq i32 %1032, %1033
  %1035 = call ptr @__cxa_begin_catch(ptr %1031) #11
  br i1 %1034, label %1037, label %1036

.critedge:                                        ; preds = %1026, %1027
  store ptr @.str.254, ptr %130, align 8, !tbaa !5
  br label %.thread

1036:                                             ; preds = %1029
  store ptr @.str.253, ptr %130, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread

1037:                                             ; preds = %1029
  call void @__cxa_end_catch()
  br label %1046

.thread:                                          ; preds = %1036, %.critedge, %1022
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #11
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #11
  %1038 = load ptr, ptr %130, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %133, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 264, ptr noundef %1038)
          to label %1039 unwind label %1041

1039:                                             ; preds = %.thread
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %1040 unwind label %1043

1040:                                             ; preds = %1039
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #11
  br label %1046

1041:                                             ; preds = %.thread
  %1042 = landingpad { ptr, i32 }
          cleanup
  br label %1045

1043:                                             ; preds = %1039
  %1044 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #11
  br label %1045

1045:                                             ; preds = %1043, %1041
  %.pn601 = phi { ptr, i32 } [ %1044, %1043 ], [ %1042, %1041 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #11
  br label %3353

1046:                                             ; preds = %1037, %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %134) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull @.str.27)
  %1047 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %134)
  br i1 %1047, label %1048, label %.thread1102

1048:                                             ; preds = %1046
  %1049 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1050 unwind label %1054

1050:                                             ; preds = %1048
  br i1 %1049, label %1051, label %.critedge1072

1051:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %136) #11
  invoke void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %136, ptr noundef nonnull %109, i8 noundef zeroext -127)
          to label %1052 unwind label %1056

1052:                                             ; preds = %1051
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %135, ptr noundef nonnull align 4 dereferenceable(24) %136)
          to label %1053 unwind label %1056

1053:                                             ; preds = %1052
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %136) #11
  br label %.critedge1072

1054:                                             ; preds = %1048
  %1055 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %1058

1056:                                             ; preds = %1052, %1051
  %1057 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %136) #11
  br label %1058

1058:                                             ; preds = %1056, %1054
  %.pn603 = phi { ptr, i32 } [ %1057, %1056 ], [ %1055, %1054 ]
  %.62 = extractvalue { ptr, i32 } %.pn603, 0
  %.62161 = extractvalue { ptr, i32 } %.pn603, 1
  %1059 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %1060 = icmp eq i32 %.62161, %1059
  %1061 = call ptr @__cxa_begin_catch(ptr %.62) #11
  br i1 %1060, label %1063, label %1062

.critedge1072:                                    ; preds = %1050, %1053
  store ptr @.str.256, ptr %134, align 8, !tbaa !5
  br label %.thread1102

1062:                                             ; preds = %1058
  store ptr @.str.255, ptr %134, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread1102

1063:                                             ; preds = %1058
  call void @__cxa_end_catch()
  br label %1072

.thread1102:                                      ; preds = %1062, %.critedge1072, %1046
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #11
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #11
  %1064 = load ptr, ptr %134, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %138, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 265, ptr noundef %1064)
          to label %1065 unwind label %1067

1065:                                             ; preds = %.thread1102
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1066 unwind label %1069

1066:                                             ; preds = %1065
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #11
  br label %1072

1067:                                             ; preds = %.thread1102
  %1068 = landingpad { ptr, i32 }
          cleanup
  br label %1071

1069:                                             ; preds = %1065
  %1070 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #11
  br label %1071

1071:                                             ; preds = %1069, %1067
  %.pn605 = phi { ptr, i32 } [ %1070, %1069 ], [ %1068, %1067 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #11
  br label %3353

1072:                                             ; preds = %1063, %1066
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %139) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %139, ptr noundef nonnull @.str.218)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %140) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %141) #11
  %1073 = call noundef zeroext i1 @_ZNK4chen10ip_address6isIPv6Ev(ptr noundef nonnull align 4 dereferenceable(28) %139)
  %1074 = zext i1 %1073 to i8
  store i8 %1074, ptr %141, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull align 1 dereferenceable(1) %141, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #11
  %1075 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %140)
  br i1 %1075, label %1093, label %1076

1076:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %1077 unwind label %1082

1077:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %144) #11
  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) %140, ptr noundef nonnull @.str.257, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1078 unwind label %1084

1078:                                             ; preds = %1077
  %1079 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %144) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %143, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 268, ptr noundef %1079)
          to label %1080 unwind label %1086

1080:                                             ; preds = %1078
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %1081 unwind label %1088

1081:                                             ; preds = %1080
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #11
  br label %1093

1082:                                             ; preds = %1076
  %1083 = landingpad { ptr, i32 }
          cleanup
  br label %1092

1084:                                             ; preds = %1077
  %1085 = landingpad { ptr, i32 }
          cleanup
  br label %1091

1086:                                             ; preds = %1078
  %1087 = landingpad { ptr, i32 }
          cleanup
  br label %1090

1088:                                             ; preds = %1080
  %1089 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #11
  br label %1090

1090:                                             ; preds = %1088, %1086
  %.pn607 = phi { ptr, i32 } [ %1089, %1088 ], [ %1087, %1086 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #11
  br label %1091

1091:                                             ; preds = %1090, %1084
  %.pn607.pn = phi { ptr, i32 } [ %.pn607, %1090 ], [ %1085, %1084 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #11
  br label %1092

1092:                                             ; preds = %1091, %1082
  %.pn607.pn.pn = phi { ptr, i32 } [ %.pn607.pn, %1091 ], [ %1083, %1082 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %140) #11
  br label %3352

1093:                                             ; preds = %1072, %1081
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %140) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %145) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %146) #11
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %146, ptr noundef nonnull align 4 dereferenceable(28) %139, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %145, ptr noundef nonnull @.str.258, ptr noundef nonnull @.str.259, ptr noundef nonnull align 1 dereferenceable(4) @.str.218, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1094 unwind label %1096

1094:                                             ; preds = %1093
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #11
  %1095 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %145)
  br i1 %1095, label %1112, label %1098

1096:                                             ; preds = %1093
  %1097 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #11
  br label %1116

1098:                                             ; preds = %1094
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %1099 unwind label %1104

1099:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #11
  %1100 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %145)
          to label %1101 unwind label %1106

1101:                                             ; preds = %1099
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 269, ptr noundef %1100)
          to label %1102 unwind label %1106

1102:                                             ; preds = %1101
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %1103 unwind label %1108

1103:                                             ; preds = %1102
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #11
  br label %1112

1104:                                             ; preds = %1098
  %1105 = landingpad { ptr, i32 }
          cleanup
  br label %1111

1106:                                             ; preds = %1101, %1099
  %1107 = landingpad { ptr, i32 }
          cleanup
  br label %1110

1108:                                             ; preds = %1102
  %1109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #11
  br label %1110

1110:                                             ; preds = %1108, %1106
  %.pn611 = phi { ptr, i32 } [ %1109, %1108 ], [ %1107, %1106 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #11
  br label %1111

1111:                                             ; preds = %1110, %1104
  %.pn611.pn = phi { ptr, i32 } [ %.pn611, %1110 ], [ %1105, %1104 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #11
  br label %1116

1112:                                             ; preds = %1094, %1103
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %149) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %150) #11
  store i32 16, ptr %150, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %151) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %152) #11
  call void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %152, ptr noundef nonnull align 4 dereferenceable(28) %139)
  %1113 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #11
  store i64 %1113, ptr %151, align 8, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %149, ptr noundef nonnull @.str.260, ptr noundef nonnull @.str.261, ptr noundef nonnull align 4 dereferenceable(4) %150, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %1114 unwind label %1117

1114:                                             ; preds = %1112
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %152) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %150) #11
  %1115 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
  br i1 %1115, label %1133, label %1119

1116:                                             ; preds = %1111, %1096
  %.pn611.pn.pn = phi { ptr, i32 } [ %.pn611.pn, %1111 ], [ %1097, %1096 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %145) #11
  br label %3352

1117:                                             ; preds = %1112
  %1118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %152) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %150) #11
  br label %1137

1119:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %1120 unwind label %1125

1120:                                             ; preds = %1119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #11
  %1121 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
          to label %1122 unwind label %1127

1122:                                             ; preds = %1120
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %154, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 270, ptr noundef %1121)
          to label %1123 unwind label %1127

1123:                                             ; preds = %1122
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %1124 unwind label %1129

1124:                                             ; preds = %1123
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #11
  br label %1133

1125:                                             ; preds = %1119
  %1126 = landingpad { ptr, i32 }
          cleanup
  br label %1132

1127:                                             ; preds = %1122, %1120
  %1128 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1129:                                             ; preds = %1123
  %1130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #11
  br label %1131

1131:                                             ; preds = %1129, %1127
  %.pn615 = phi { ptr, i32 } [ %1130, %1129 ], [ %1128, %1127 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #11
  br label %1132

1132:                                             ; preds = %1131, %1125
  %.pn615.pn = phi { ptr, i32 } [ %.pn615, %1131 ], [ %1126, %1125 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #11
  br label %1137

1133:                                             ; preds = %1114, %1124
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #11
  %1134 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28) %139, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %155) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %156) #11
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %156, ptr noundef nonnull align 4 dereferenceable(28) %139, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %155, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.259, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %156)
          to label %1135 unwind label %1138

1135:                                             ; preds = %1133
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #11
  %1136 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %155)
  br i1 %1136, label %1154, label %1140

1137:                                             ; preds = %1132, %1117
  %.pn615.pn.pn = phi { ptr, i32 } [ %.pn615.pn, %1132 ], [ %1118, %1117 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #11
  br label %3352

1138:                                             ; preds = %1133
  %1139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #11
  br label %1157

1140:                                             ; preds = %1135
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %1141 unwind label %1146

1141:                                             ; preds = %1140
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #11
  %1142 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %155)
          to label %1143 unwind label %1148

1143:                                             ; preds = %1141
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %158, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 273, ptr noundef %1142)
          to label %1144 unwind label %1148

1144:                                             ; preds = %1143
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %1145 unwind label %1150

1145:                                             ; preds = %1144
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #11
  br label %1154

1146:                                             ; preds = %1140
  %1147 = landingpad { ptr, i32 }
          cleanup
  br label %1153

1148:                                             ; preds = %1143, %1141
  %1149 = landingpad { ptr, i32 }
          cleanup
  br label %1152

1150:                                             ; preds = %1144
  %1151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #11
  br label %1152

1152:                                             ; preds = %1150, %1148
  %.pn619 = phi { ptr, i32 } [ %1151, %1150 ], [ %1149, %1148 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #11
  br label %1153

1153:                                             ; preds = %1152, %1146
  %.pn619.pn = phi { ptr, i32 } [ %.pn619, %1152 ], [ %1147, %1146 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #11
  br label %1157

1154:                                             ; preds = %1135, %1145
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %159) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %160) #11
  store i32 128, ptr %160, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %161) #11
  %1155 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %139)
  store i8 %1155, ptr %161, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %159, ptr noundef nonnull @.str.263, ptr noundef nonnull @.str.264, ptr noundef nonnull align 4 dereferenceable(4) %160, ptr noundef nonnull align 1 dereferenceable(1) %161)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %161) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %160) #11
  %1156 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %159)
  br i1 %1156, label %1172, label %1158

1157:                                             ; preds = %1153, %1138
  %.pn619.pn.pn = phi { ptr, i32 } [ %.pn619.pn, %1153 ], [ %1139, %1138 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #11
  br label %3352

1158:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %1159 unwind label %1164

1159:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %163) #11
  %1160 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %159)
          to label %1161 unwind label %1166

1161:                                             ; preds = %1159
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %163, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 274, ptr noundef %1160)
          to label %1162 unwind label %1166

1162:                                             ; preds = %1161
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %1163 unwind label %1168

1163:                                             ; preds = %1162
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #11
  br label %1172

1164:                                             ; preds = %1158
  %1165 = landingpad { ptr, i32 }
          cleanup
  br label %1171

1166:                                             ; preds = %1161, %1159
  %1167 = landingpad { ptr, i32 }
          cleanup
  br label %1170

1168:                                             ; preds = %1162
  %1169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #11
  br label %1170

1170:                                             ; preds = %1168, %1166
  %.pn623 = phi { ptr, i32 } [ %1169, %1168 ], [ %1167, %1166 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #11
  br label %1171

1171:                                             ; preds = %1170, %1164
  %.pn623.pn = phi { ptr, i32 } [ %.pn623, %1170 ], [ %1165, %1164 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #11
  br label %3352

1172:                                             ; preds = %1154, %1163
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %164) #11
  call void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24) %164, ptr noundef nonnull %109)
  %1173 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %139, ptr noundef nonnull align 4 dereferenceable(24) %164)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %164) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %165) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %166) #11
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %166, ptr noundef nonnull align 4 dereferenceable(28) %139, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %165, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.259, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %166)
          to label %1174 unwind label %1176

1174:                                             ; preds = %1172
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #11
  %1175 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
  br i1 %1175, label %1192, label %1178

1176:                                             ; preds = %1172
  %1177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %166) #11
  br label %1195

1178:                                             ; preds = %1174
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1179 unwind label %1184

1179:                                             ; preds = %1178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #11
  %1180 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %1181 unwind label %1186

1181:                                             ; preds = %1179
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %168, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 277, ptr noundef %1180)
          to label %1182 unwind label %1186

1182:                                             ; preds = %1181
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1183 unwind label %1188

1183:                                             ; preds = %1182
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #11
  br label %1192

1184:                                             ; preds = %1178
  %1185 = landingpad { ptr, i32 }
          cleanup
  br label %1191

1186:                                             ; preds = %1181, %1179
  %1187 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1188:                                             ; preds = %1182
  %1189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #11
  br label %1190

1190:                                             ; preds = %1188, %1186
  %.pn626 = phi { ptr, i32 } [ %1189, %1188 ], [ %1187, %1186 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #11
  br label %1191

1191:                                             ; preds = %1190, %1184
  %.pn626.pn = phi { ptr, i32 } [ %.pn626, %1190 ], [ %1185, %1184 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #11
  br label %1195

1192:                                             ; preds = %1174, %1183
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %169) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %170) #11
  store i32 128, ptr %170, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #11
  %1193 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %139)
  store i8 %1193, ptr %171, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %169, ptr noundef nonnull @.str.263, ptr noundef nonnull @.str.264, ptr noundef nonnull align 4 dereferenceable(4) %170, ptr noundef nonnull align 1 dereferenceable(1) %171)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %170) #11
  %1194 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  br i1 %1194, label %1210, label %1196

1195:                                             ; preds = %1191, %1176
  %.pn626.pn.pn = phi { ptr, i32 } [ %.pn626.pn, %1191 ], [ %1177, %1176 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %165) #11
  br label %3352

1196:                                             ; preds = %1192
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %1197 unwind label %1202

1197:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #11
  %1198 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
          to label %1199 unwind label %1204

1199:                                             ; preds = %1197
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %173, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 278, ptr noundef %1198)
          to label %1200 unwind label %1204

1200:                                             ; preds = %1199
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %1201 unwind label %1206

1201:                                             ; preds = %1200
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #11
  br label %1210

1202:                                             ; preds = %1196
  %1203 = landingpad { ptr, i32 }
          cleanup
  br label %1209

1204:                                             ; preds = %1199, %1197
  %1205 = landingpad { ptr, i32 }
          cleanup
  br label %1208

1206:                                             ; preds = %1200
  %1207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #11
  br label %1208

1208:                                             ; preds = %1206, %1204
  %.pn630 = phi { ptr, i32 } [ %1207, %1206 ], [ %1205, %1204 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #11
  br label %1209

1209:                                             ; preds = %1208, %1202
  %.pn630.pn = phi { ptr, i32 } [ %.pn630, %1208 ], [ %1203, %1202 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %169) #11
  br label %3352

1210:                                             ; preds = %1192, %1201
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %169) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %174) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %175) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %175, ptr noundef nonnull @.str.237)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %176) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %176, ptr noundef nonnull @.str.266)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %174, ptr noundef nonnull @.str.236, ptr noundef nonnull @.str.265, ptr noundef nonnull align 4 dereferenceable(28) %175, ptr noundef nonnull align 4 dereferenceable(28) %176)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %176) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %175) #11
  %1211 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %174)
  br i1 %1211, label %1226, label %1212

1212:                                             ; preds = %1210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %177) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %1213 unwind label %1218

1213:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %178) #11
  %1214 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %174)
          to label %1215 unwind label %1220

1215:                                             ; preds = %1213
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %178, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 281, ptr noundef %1214)
          to label %1216 unwind label %1220

1216:                                             ; preds = %1215
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %1217 unwind label %1222

1217:                                             ; preds = %1216
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #11
  br label %1226

1218:                                             ; preds = %1212
  %1219 = landingpad { ptr, i32 }
          cleanup
  br label %1225

1220:                                             ; preds = %1215, %1213
  %1221 = landingpad { ptr, i32 }
          cleanup
  br label %1224

1222:                                             ; preds = %1216
  %1223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #11
  br label %1224

1224:                                             ; preds = %1222, %1220
  %.pn633 = phi { ptr, i32 } [ %1223, %1222 ], [ %1221, %1220 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #11
  br label %1225

1225:                                             ; preds = %1224, %1218
  %.pn633.pn = phi { ptr, i32 } [ %.pn633, %1224 ], [ %1219, %1218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %174) #11
  br label %3352

1226:                                             ; preds = %1210, %1217
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %174) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %179) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %180) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %181) #11
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %181, i8 noundef zeroext 10)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %180, ptr noundef nonnull align 4 dereferenceable(28) %181, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %179, ptr noundef nonnull @.str.267, ptr noundef nonnull @.str.268, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %180)
          to label %1227 unwind label %1229

1227:                                             ; preds = %1226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %181) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #11
  %1228 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %179)
  br i1 %1228, label %1245, label %1231

1229:                                             ; preds = %1226
  %1230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %181) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %180) #11
  br label %1248

1231:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %182) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %1232 unwind label %1237

1232:                                             ; preds = %1231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %183) #11
  %1233 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %179)
          to label %1234 unwind label %1239

1234:                                             ; preds = %1232
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %183, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 284, ptr noundef %1233)
          to label %1235 unwind label %1239

1235:                                             ; preds = %1234
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %1236 unwind label %1241

1236:                                             ; preds = %1235
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %183) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %183) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #11
  br label %1245

1237:                                             ; preds = %1231
  %1238 = landingpad { ptr, i32 }
          cleanup
  br label %1244

1239:                                             ; preds = %1234, %1232
  %1240 = landingpad { ptr, i32 }
          cleanup
  br label %1243

1241:                                             ; preds = %1235
  %1242 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %183) #11
  br label %1243

1243:                                             ; preds = %1241, %1239
  %.pn636 = phi { ptr, i32 } [ %1242, %1241 ], [ %1240, %1239 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %183) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #11
  br label %1244

1244:                                             ; preds = %1243, %1237
  %.pn636.pn = phi { ptr, i32 } [ %.pn636, %1243 ], [ %1238, %1237 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %179) #11
  br label %1248

1245:                                             ; preds = %1227, %1236
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %179) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %179) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %184) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %185) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %186) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %186, ptr noundef nonnull @.str.272)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %185, ptr noundef nonnull align 4 dereferenceable(28) %186, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %184, ptr noundef nonnull @.str.269, ptr noundef nonnull @.str.270, ptr noundef nonnull align 1 dereferenceable(21) @.str.271, ptr noundef nonnull align 8 dereferenceable(32) %185)
          to label %1246 unwind label %1249

1246:                                             ; preds = %1245
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %186) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #11
  %1247 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %184)
  br i1 %1247, label %1265, label %1251

1248:                                             ; preds = %1244, %1229
  %.pn636.pn.pn = phi { ptr, i32 } [ %.pn636.pn, %1244 ], [ %1230, %1229 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %179) #11
  br label %3352

1249:                                             ; preds = %1245
  %1250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %186) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %185) #11
  br label %1268

1251:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %1252 unwind label %1257

1252:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %188) #11
  %1253 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %184)
          to label %1254 unwind label %1259

1254:                                             ; preds = %1252
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %188, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 285, ptr noundef %1253)
          to label %1255 unwind label %1259

1255:                                             ; preds = %1254
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %1256 unwind label %1261

1256:                                             ; preds = %1255
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #11
  br label %1265

1257:                                             ; preds = %1251
  %1258 = landingpad { ptr, i32 }
          cleanup
  br label %1264

1259:                                             ; preds = %1254, %1252
  %1260 = landingpad { ptr, i32 }
          cleanup
  br label %1263

1261:                                             ; preds = %1255
  %1262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #11
  br label %1263

1263:                                             ; preds = %1261, %1259
  %.pn640 = phi { ptr, i32 } [ %1262, %1261 ], [ %1260, %1259 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #11
  br label %1264

1264:                                             ; preds = %1263, %1257
  %.pn640.pn = phi { ptr, i32 } [ %.pn640, %1263 ], [ %1258, %1257 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #11
  br label %1268

1265:                                             ; preds = %1246, %1256
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %184) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %190) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %191) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %191, ptr noundef nonnull @.str.276)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %190, ptr noundef nonnull align 4 dereferenceable(28) %191, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %189, ptr noundef nonnull @.str.273, ptr noundef nonnull @.str.274, ptr noundef nonnull align 1 dereferenceable(21) @.str.275, ptr noundef nonnull align 8 dereferenceable(32) %190)
          to label %1266 unwind label %1269

1266:                                             ; preds = %1265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %191) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #11
  %1267 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
  br i1 %1267, label %1285, label %1271

1268:                                             ; preds = %1264, %1249
  %.pn640.pn.pn = phi { ptr, i32 } [ %.pn640.pn, %1264 ], [ %1250, %1249 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %184) #11
  br label %3352

1269:                                             ; preds = %1265
  %1270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %191) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %190) #11
  br label %1288

1271:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %192) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192)
          to label %1272 unwind label %1277

1272:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %193) #11
  %1273 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %1274 unwind label %1279

1274:                                             ; preds = %1272
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %193, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 286, ptr noundef %1273)
          to label %1275 unwind label %1279

1275:                                             ; preds = %1274
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull align 8 dereferenceable(8) %192)
          to label %1276 unwind label %1281

1276:                                             ; preds = %1275
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #11
  br label %1285

1277:                                             ; preds = %1271
  %1278 = landingpad { ptr, i32 }
          cleanup
  br label %1284

1279:                                             ; preds = %1274, %1272
  %1280 = landingpad { ptr, i32 }
          cleanup
  br label %1283

1281:                                             ; preds = %1275
  %1282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #11
  br label %1283

1283:                                             ; preds = %1281, %1279
  %.pn644 = phi { ptr, i32 } [ %1282, %1281 ], [ %1280, %1279 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #11
  br label %1284

1284:                                             ; preds = %1283, %1277
  %.pn644.pn = phi { ptr, i32 } [ %.pn644, %1283 ], [ %1278, %1277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #11
  br label %1288

1285:                                             ; preds = %1266, %1276
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %194) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %195) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %196) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %196, ptr noundef nonnull @.str.229)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %195, ptr noundef nonnull align 4 dereferenceable(28) %196, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %194, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.277, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %195)
          to label %1286 unwind label %1289

1286:                                             ; preds = %1285
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %195) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %196) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %195) #11
  %1287 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %194)
  br i1 %1287, label %1305, label %1291

1288:                                             ; preds = %1284, %1269
  %.pn644.pn.pn = phi { ptr, i32 } [ %.pn644.pn, %1284 ], [ %1270, %1269 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #11
  br label %3352

1289:                                             ; preds = %1285
  %1290 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %195) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %196) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %195) #11
  br label %1309

1291:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %197) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %197)
          to label %1292 unwind label %1297

1292:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %198) #11
  %1293 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %194)
          to label %1294 unwind label %1299

1294:                                             ; preds = %1292
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %198, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 287, ptr noundef %1293)
          to label %1295 unwind label %1299

1295:                                             ; preds = %1294
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(8) %197)
          to label %1296 unwind label %1301

1296:                                             ; preds = %1295
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %197) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %197) #11
  br label %1305

1297:                                             ; preds = %1291
  %1298 = landingpad { ptr, i32 }
          cleanup
  br label %1304

1299:                                             ; preds = %1294, %1292
  %1300 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1301:                                             ; preds = %1295
  %1302 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #11
  br label %1303

1303:                                             ; preds = %1301, %1299
  %.pn648 = phi { ptr, i32 } [ %1302, %1301 ], [ %1300, %1299 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %197) #11
  br label %1304

1304:                                             ; preds = %1303, %1297
  %.pn648.pn = phi { ptr, i32 } [ %.pn648, %1303 ], [ %1298, %1297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %197) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #11
  br label %1309

1305:                                             ; preds = %1286, %1296
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %199) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %200) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %201) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %201, ptr noundef nonnull @.str.229)
  %1306 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %201)
  call void @_ZNK4chen11ip_version68expandedB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %200, ptr noundef nonnull align 4 dereferenceable(24) %1306)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA40_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %199, ptr noundef nonnull @.str.278, ptr noundef nonnull @.str.279, ptr noundef nonnull align 1 dereferenceable(40) @.str.280, ptr noundef nonnull align 8 dereferenceable(32) %200)
          to label %1307 unwind label %1310

1307:                                             ; preds = %1305
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %200) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %201) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #11
  %1308 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %199)
  br i1 %1308, label %1326, label %1312

1309:                                             ; preds = %1304, %1289
  %.pn648.pn.pn = phi { ptr, i32 } [ %.pn648.pn, %1304 ], [ %1290, %1289 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #11
  br label %3352

1310:                                             ; preds = %1305
  %1311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %200) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %201) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #11
  br label %1330

1312:                                             ; preds = %1307
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %202) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %1313 unwind label %1318

1313:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %203) #11
  %1314 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %199)
          to label %1315 unwind label %1320

1315:                                             ; preds = %1313
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %203, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 288, ptr noundef %1314)
          to label %1316 unwind label %1320

1316:                                             ; preds = %1315
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %1317 unwind label %1322

1317:                                             ; preds = %1316
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %203) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #11
  br label %1326

1318:                                             ; preds = %1312
  %1319 = landingpad { ptr, i32 }
          cleanup
  br label %1325

1320:                                             ; preds = %1315, %1313
  %1321 = landingpad { ptr, i32 }
          cleanup
  br label %1324

1322:                                             ; preds = %1316
  %1323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %203) #11
  br label %1324

1324:                                             ; preds = %1322, %1320
  %.pn652 = phi { ptr, i32 } [ %1323, %1322 ], [ %1321, %1320 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #11
  br label %1325

1325:                                             ; preds = %1324, %1318
  %.pn652.pn = phi { ptr, i32 } [ %.pn652, %1324 ], [ %1319, %1318 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #11
  br label %1330

1326:                                             ; preds = %1307, %1317
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %204) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %205) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %206) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %206, ptr noundef nonnull @.str.229)
  %1327 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %206)
  call void @_ZNK4chen11ip_version610suppressedB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %205, ptr noundef nonnull align 4 dereferenceable(24) %1327)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA30_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %204, ptr noundef nonnull @.str.281, ptr noundef nonnull @.str.282, ptr noundef nonnull align 1 dereferenceable(30) @.str.227, ptr noundef nonnull align 8 dereferenceable(32) %205)
          to label %1328 unwind label %1331

1328:                                             ; preds = %1326
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %206) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %205) #11
  %1329 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
  br i1 %1329, label %1347, label %1333

1330:                                             ; preds = %1325, %1310
  %.pn652.pn.pn = phi { ptr, i32 } [ %.pn652.pn, %1325 ], [ %1311, %1310 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #11
  br label %3352

1331:                                             ; preds = %1326
  %1332 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %206) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %205) #11
  br label %1351

1333:                                             ; preds = %1328
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %207) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1334 unwind label %1339

1334:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %208) #11
  %1335 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
          to label %1336 unwind label %1341

1336:                                             ; preds = %1334
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %208, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 289, ptr noundef %1335)
          to label %1337 unwind label %1341

1337:                                             ; preds = %1336
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1338 unwind label %1343

1338:                                             ; preds = %1337
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #11
  br label %1347

1339:                                             ; preds = %1333
  %1340 = landingpad { ptr, i32 }
          cleanup
  br label %1346

1341:                                             ; preds = %1336, %1334
  %1342 = landingpad { ptr, i32 }
          cleanup
  br label %1345

1343:                                             ; preds = %1337
  %1344 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #11
  br label %1345

1345:                                             ; preds = %1343, %1341
  %.pn656 = phi { ptr, i32 } [ %1344, %1343 ], [ %1342, %1341 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #11
  br label %1346

1346:                                             ; preds = %1345, %1339
  %.pn656.pn = phi { ptr, i32 } [ %.pn656, %1345 ], [ %1340, %1339 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #11
  br label %1351

1347:                                             ; preds = %1328, %1338
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %204) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %204) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %209) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %210) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %211) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %211, ptr noundef nonnull @.str.229)
  %1348 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %211)
  call void @_ZNK4chen11ip_version610compressedB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %210, ptr noundef nonnull align 4 dereferenceable(24) %1348)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %209, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.283, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %1349 unwind label %1352

1349:                                             ; preds = %1347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %211) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %210) #11
  %1350 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
  br i1 %1350, label %1368, label %1354

1351:                                             ; preds = %1346, %1331
  %.pn656.pn.pn = phi { ptr, i32 } [ %.pn656.pn, %1346 ], [ %1332, %1331 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %204) #11
  br label %3352

1352:                                             ; preds = %1347
  %1353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %211) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %210) #11
  br label %1372

1354:                                             ; preds = %1349
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %212) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %1355 unwind label %1360

1355:                                             ; preds = %1354
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %213) #11
  %1356 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
          to label %1357 unwind label %1362

1357:                                             ; preds = %1355
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %213, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 290, ptr noundef %1356)
          to label %1358 unwind label %1362

1358:                                             ; preds = %1357
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %1359 unwind label %1364

1359:                                             ; preds = %1358
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #11
  br label %1368

1360:                                             ; preds = %1354
  %1361 = landingpad { ptr, i32 }
          cleanup
  br label %1367

1362:                                             ; preds = %1357, %1355
  %1363 = landingpad { ptr, i32 }
          cleanup
  br label %1366

1364:                                             ; preds = %1358
  %1365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #11
  br label %1366

1366:                                             ; preds = %1364, %1362
  %.pn660 = phi { ptr, i32 } [ %1365, %1364 ], [ %1363, %1362 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #11
  br label %1367

1367:                                             ; preds = %1366, %1360
  %.pn660.pn = phi { ptr, i32 } [ %.pn660, %1366 ], [ %1361, %1360 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #11
  br label %1372

1368:                                             ; preds = %1349, %1359
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %214) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %215) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %216) #11
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %216, ptr noundef nonnull @.str.287)
  %1369 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %216)
  call void @_ZNK4chen11ip_version65mixedB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %215, ptr noundef nonnull align 4 dereferenceable(24) %1369)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA19_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %214, ptr noundef nonnull @.str.284, ptr noundef nonnull @.str.285, ptr noundef nonnull align 1 dereferenceable(19) @.str.286, ptr noundef nonnull align 8 dereferenceable(32) %215)
          to label %1370 unwind label %1373

1370:                                             ; preds = %1368
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %216) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #11
  %1371 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %214)
  br i1 %1371, label %1389, label %1375

1372:                                             ; preds = %1367, %1352
  %.pn660.pn.pn = phi { ptr, i32 } [ %.pn660.pn, %1367 ], [ %1353, %1352 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %209) #11
  br label %3352

1373:                                             ; preds = %1368
  %1374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %216) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #11
  br label %1397

1375:                                             ; preds = %1370
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %217) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1376 unwind label %1381

1376:                                             ; preds = %1375
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #11
  %1377 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %214)
          to label %1378 unwind label %1383

1378:                                             ; preds = %1376
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %218, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 291, ptr noundef %1377)
          to label %1379 unwind label %1383

1379:                                             ; preds = %1378
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1380 unwind label %1385

1380:                                             ; preds = %1379
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #11
  br label %1389

1381:                                             ; preds = %1375
  %1382 = landingpad { ptr, i32 }
          cleanup
  br label %1388

1383:                                             ; preds = %1378, %1376
  %1384 = landingpad { ptr, i32 }
          cleanup
  br label %1387

1385:                                             ; preds = %1379
  %1386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #11
  br label %1387

1387:                                             ; preds = %1385, %1383
  %.pn664 = phi { ptr, i32 } [ %1386, %1385 ], [ %1384, %1383 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #11
  br label %1388

1388:                                             ; preds = %1387, %1381
  %.pn664.pn = phi { ptr, i32 } [ %.pn664, %1387 ], [ %1382, %1381 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %214) #11
  br label %1397

1389:                                             ; preds = %1370, %1380
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %214) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %214) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %219) #11
  call void @_ZN4chen12inet_adapter5scopeB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %219, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %220) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %221) #11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %221, ptr noundef nonnull @.str.290, ptr noundef nonnull align 8 dereferenceable(32) %219)
          to label %1390 unwind label %1398

1390:                                             ; preds = %1389
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %222) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %223) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %223, ptr noundef nonnull @.str.237)
          to label %1391 unwind label %1400

1391:                                             ; preds = %1390
  %1392 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %223)
          to label %1393 unwind label %1400

1393:                                             ; preds = %1391
  invoke void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %222, ptr noundef nonnull align 4 dereferenceable(24) %1392, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %1394 unwind label %1400

1394:                                             ; preds = %1393
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %220, ptr noundef nonnull @.str.288, ptr noundef nonnull @.str.289, ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef nonnull align 8 dereferenceable(32) %222)
          to label %1395 unwind label %1402

1395:                                             ; preds = %1394
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %223) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %222) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %221) #11
  %1396 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %220)
  br i1 %1396, label %1420, label %1406

1397:                                             ; preds = %1388, %1373
  %.pn664.pn.pn = phi { ptr, i32 } [ %.pn664.pn, %1388 ], [ %1374, %1373 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %214) #11
  br label %3352

1398:                                             ; preds = %1389
  %1399 = landingpad { ptr, i32 }
          cleanup
  br label %1405

1400:                                             ; preds = %1393, %1391, %1390
  %1401 = landingpad { ptr, i32 }
          cleanup
  br label %1404

1402:                                             ; preds = %1394
  %1403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #11
  br label %1404

1404:                                             ; preds = %1402, %1400
  %.pn668 = phi { ptr, i32 } [ %1403, %1402 ], [ %1401, %1400 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %223) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %222) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #11
  br label %1405

1405:                                             ; preds = %1404, %1398
  %.pn668.pn = phi { ptr, i32 } [ %.pn668, %1404 ], [ %1399, %1398 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %221) #11
  br label %1429

1406:                                             ; preds = %1395
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %224) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %1407 unwind label %1412

1407:                                             ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %225) #11
  %1408 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %220)
          to label %1409 unwind label %1414

1409:                                             ; preds = %1407
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %225, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 295, ptr noundef %1408)
          to label %1410 unwind label %1414

1410:                                             ; preds = %1409
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %1411 unwind label %1416

1411:                                             ; preds = %1410
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %224) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %224) #11
  br label %1420

1412:                                             ; preds = %1406
  %1413 = landingpad { ptr, i32 }
          cleanup
  br label %1419

1414:                                             ; preds = %1409, %1407
  %1415 = landingpad { ptr, i32 }
          cleanup
  br label %1418

1416:                                             ; preds = %1410
  %1417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #11
  br label %1418

1418:                                             ; preds = %1416, %1414
  %.pn671 = phi { ptr, i32 } [ %1417, %1416 ], [ %1415, %1414 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %224) #11
  br label %1419

1419:                                             ; preds = %1418, %1412
  %.pn671.pn = phi { ptr, i32 } [ %.pn671, %1418 ], [ %1413, %1412 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %224) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #11
  br label %1429

1420:                                             ; preds = %1395, %1411
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %220) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %220) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %226) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %227) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %228) #11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %228, ptr noundef nonnull @.str.290, ptr noundef nonnull align 8 dereferenceable(32) %219)
          to label %1421 unwind label %1430

1421:                                             ; preds = %1420
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %227, ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull @.str.293)
          to label %1422 unwind label %1432

1422:                                             ; preds = %1421
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %229) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %230) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %230, ptr noundef nonnull @.str.237)
          to label %1423 unwind label %1434

1423:                                             ; preds = %1422
  %1424 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %230)
          to label %1425 unwind label %1434

1425:                                             ; preds = %1423
  invoke void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %229, ptr noundef nonnull align 4 dereferenceable(24) %1424, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %1426 unwind label %1434

1426:                                             ; preds = %1425
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %226, ptr noundef nonnull @.str.291, ptr noundef nonnull @.str.292, ptr noundef nonnull align 8 dereferenceable(32) %227, ptr noundef nonnull align 8 dereferenceable(32) %229)
          to label %1427 unwind label %1436

1427:                                             ; preds = %1426
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %230) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %229) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %227) #11
  %1428 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %226)
  br i1 %1428, label %1455, label %1441

1429:                                             ; preds = %1419, %1405
  %.pn671.pn.pn = phi { ptr, i32 } [ %.pn671.pn, %1419 ], [ %.pn668.pn, %1405 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %220) #11
  br label %3351

1430:                                             ; preds = %1420
  %1431 = landingpad { ptr, i32 }
          cleanup
  br label %1440

1432:                                             ; preds = %1421
  %1433 = landingpad { ptr, i32 }
          cleanup
  br label %1439

1434:                                             ; preds = %1425, %1423, %1422
  %1435 = landingpad { ptr, i32 }
          cleanup
  br label %1438

1436:                                             ; preds = %1426
  %1437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #11
  br label %1438

1438:                                             ; preds = %1436, %1434
  %.pn675 = phi { ptr, i32 } [ %1437, %1436 ], [ %1435, %1434 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %230) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %229) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #11
  br label %1439

1439:                                             ; preds = %1438, %1432
  %.pn675.pn = phi { ptr, i32 } [ %.pn675, %1438 ], [ %1433, %1432 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #11
  br label %1440

1440:                                             ; preds = %1439, %1430
  %.pn675.pn.pn = phi { ptr, i32 } [ %.pn675.pn, %1439 ], [ %1431, %1430 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %227) #11
  br label %1461

1441:                                             ; preds = %1427
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %231) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %1442 unwind label %1447

1442:                                             ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %232) #11
  %1443 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %226)
          to label %1444 unwind label %1449

1444:                                             ; preds = %1442
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %232, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 296, ptr noundef %1443)
          to label %1445 unwind label %1449

1445:                                             ; preds = %1444
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %1446 unwind label %1451

1446:                                             ; preds = %1445
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %232) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #11
  br label %1455

1447:                                             ; preds = %1441
  %1448 = landingpad { ptr, i32 }
          cleanup
  br label %1454

1449:                                             ; preds = %1444, %1442
  %1450 = landingpad { ptr, i32 }
          cleanup
  br label %1453

1451:                                             ; preds = %1445
  %1452 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #11
  br label %1453

1453:                                             ; preds = %1451, %1449
  %.pn679 = phi { ptr, i32 } [ %1452, %1451 ], [ %1450, %1449 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %232) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #11
  br label %1454

1454:                                             ; preds = %1453, %1447
  %.pn679.pn = phi { ptr, i32 } [ %.pn679, %1453 ], [ %1448, %1447 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %226) #11
  br label %1461

1455:                                             ; preds = %1427, %1446
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %226) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %226) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %233) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %234) #11
  store i32 1, ptr %234, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %235) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %236) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %236, ptr noundef nonnull @.str.237)
          to label %1456 unwind label %1462

1456:                                             ; preds = %1455
  %1457 = invoke noundef i32 @_ZNK4chen10ip_address5scopeEv(ptr noundef nonnull align 4 dereferenceable(28) %236)
          to label %1458 unwind label %1462

1458:                                             ; preds = %1456
  store i32 %1457, ptr %235, align 4, !tbaa !12
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %233, ptr noundef nonnull @.str.294, ptr noundef nonnull @.str.295, ptr noundef nonnull align 4 dereferenceable(4) %234, ptr noundef nonnull align 4 dereferenceable(4) %235)
          to label %1459 unwind label %1462

1459:                                             ; preds = %1458
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %236) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %235) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %234) #11
  %1460 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %233)
  br i1 %1460, label %1478, label %1464

1461:                                             ; preds = %1454, %1440
  %.pn679.pn.pn = phi { ptr, i32 } [ %.pn679.pn, %1454 ], [ %.pn675.pn.pn, %1440 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %226) #11
  br label %3351

1462:                                             ; preds = %1458, %1456, %1455
  %1463 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %236) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %235) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %234) #11
  br label %1489

1464:                                             ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %237) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %1465 unwind label %1470

1465:                                             ; preds = %1464
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %238) #11
  %1466 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %233)
          to label %1467 unwind label %1472

1467:                                             ; preds = %1465
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %238, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 298, ptr noundef %1466)
          to label %1468 unwind label %1472

1468:                                             ; preds = %1467
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %1469 unwind label %1474

1469:                                             ; preds = %1468
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %238) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #11
  br label %1478

1470:                                             ; preds = %1464
  %1471 = landingpad { ptr, i32 }
          cleanup
  br label %1477

1472:                                             ; preds = %1467, %1465
  %1473 = landingpad { ptr, i32 }
          cleanup
  br label %1476

1474:                                             ; preds = %1468
  %1475 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #11
  br label %1476

1476:                                             ; preds = %1474, %1472
  %.pn683 = phi { ptr, i32 } [ %1475, %1474 ], [ %1473, %1472 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %238) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #11
  br label %1477

1477:                                             ; preds = %1476, %1470
  %.pn683.pn = phi { ptr, i32 } [ %.pn683, %1476 ], [ %1471, %1470 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #11
  br label %1489

1478:                                             ; preds = %1459, %1469
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %239) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %240) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %240, ptr noundef nonnull @.str.298)
          to label %1479 unwind label %1490

1479:                                             ; preds = %1478
  %1480 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %240)
          to label %1481 unwind label %1490

1481:                                             ; preds = %1479
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %241) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %242) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %242, ptr noundef nonnull @.str.287)
          to label %1482 unwind label %1492

1482:                                             ; preds = %1481
  %1483 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %242)
          to label %1484 unwind label %1492

1484:                                             ; preds = %1482
  %1485 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1483)
          to label %1486 unwind label %1492

1486:                                             ; preds = %1484
  store i64 %1485, ptr %241, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %239, ptr noundef nonnull @.str.296, ptr noundef nonnull @.str.297, ptr noundef nonnull align 4 dereferenceable(8) %1480, ptr noundef nonnull align 4 dereferenceable(8) %241)
          to label %1487 unwind label %1492

1487:                                             ; preds = %1486
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %242) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %240) #11
  %1488 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %239)
  br i1 %1488, label %1509, label %1495

1489:                                             ; preds = %1477, %1462
  %.pn683.pn.pn = phi { ptr, i32 } [ %.pn683.pn, %1477 ], [ %1463, %1462 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %233) #11
  br label %3351

1490:                                             ; preds = %1479, %1478
  %1491 = landingpad { ptr, i32 }
          cleanup
  br label %1494

1492:                                             ; preds = %1486, %1484, %1482, %1481
  %1493 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %242) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #11
  br label %1494

1494:                                             ; preds = %1492, %1490
  %.pn687 = phi { ptr, i32 } [ %1493, %1492 ], [ %1491, %1490 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %240) #11
  br label %1520

1495:                                             ; preds = %1487
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %243) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %1496 unwind label %1501

1496:                                             ; preds = %1495
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %244) #11
  %1497 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %239)
          to label %1498 unwind label %1503

1498:                                             ; preds = %1496
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %244, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 300, ptr noundef %1497)
          to label %1499 unwind label %1503

1499:                                             ; preds = %1498
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %1500 unwind label %1505

1500:                                             ; preds = %1499
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #11
  br label %1509

1501:                                             ; preds = %1495
  %1502 = landingpad { ptr, i32 }
          cleanup
  br label %1508

1503:                                             ; preds = %1498, %1496
  %1504 = landingpad { ptr, i32 }
          cleanup
  br label %1507

1505:                                             ; preds = %1499
  %1506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #11
  br label %1507

1507:                                             ; preds = %1505, %1503
  %.pn689 = phi { ptr, i32 } [ %1506, %1505 ], [ %1504, %1503 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #11
  br label %1508

1508:                                             ; preds = %1507, %1501
  %.pn689.pn = phi { ptr, i32 } [ %.pn689, %1507 ], [ %1502, %1501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #11
  br label %1520

1509:                                             ; preds = %1487, %1500
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %245) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %246) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %246, ptr noundef nonnull @.str.301)
          to label %1510 unwind label %1521

1510:                                             ; preds = %1509
  %1511 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %246)
          to label %1512 unwind label %1521

1512:                                             ; preds = %1510
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %247) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %248) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %248, ptr noundef nonnull @.str.302)
          to label %1513 unwind label %1523

1513:                                             ; preds = %1512
  %1514 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %248)
          to label %1515 unwind label %1523

1515:                                             ; preds = %1513
  %1516 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1514)
          to label %1517 unwind label %1523

1517:                                             ; preds = %1515
  store i64 %1516, ptr %247, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %245, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.300, ptr noundef nonnull align 4 dereferenceable(8) %1511, ptr noundef nonnull align 4 dereferenceable(8) %247)
          to label %1518 unwind label %1523

1518:                                             ; preds = %1517
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %248) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %246) #11
  %1519 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
  br i1 %1519, label %1540, label %1526

1520:                                             ; preds = %1508, %1494
  %.pn689.pn.pn = phi { ptr, i32 } [ %.pn689.pn, %1508 ], [ %.pn687, %1494 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #11
  br label %3351

1521:                                             ; preds = %1510, %1509
  %1522 = landingpad { ptr, i32 }
          cleanup
  br label %1525

1523:                                             ; preds = %1517, %1515, %1513, %1512
  %1524 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %248) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #11
  br label %1525

1525:                                             ; preds = %1523, %1521
  %.pn693 = phi { ptr, i32 } [ %1524, %1523 ], [ %1522, %1521 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %246) #11
  br label %1551

1526:                                             ; preds = %1518
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %249) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %1527 unwind label %1532

1527:                                             ; preds = %1526
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %250) #11
  %1528 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
          to label %1529 unwind label %1534

1529:                                             ; preds = %1527
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %250, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 301, ptr noundef %1528)
          to label %1530 unwind label %1534

1530:                                             ; preds = %1529
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %1531 unwind label %1536

1531:                                             ; preds = %1530
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %250) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #11
  br label %1540

1532:                                             ; preds = %1526
  %1533 = landingpad { ptr, i32 }
          cleanup
  br label %1539

1534:                                             ; preds = %1529, %1527
  %1535 = landingpad { ptr, i32 }
          cleanup
  br label %1538

1536:                                             ; preds = %1530
  %1537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #11
  br label %1538

1538:                                             ; preds = %1536, %1534
  %.pn695 = phi { ptr, i32 } [ %1537, %1536 ], [ %1535, %1534 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %250) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #11
  br label %1539

1539:                                             ; preds = %1538, %1532
  %.pn695.pn = phi { ptr, i32 } [ %.pn695, %1538 ], [ %1533, %1532 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #11
  br label %1551

1540:                                             ; preds = %1518, %1531
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %251) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %252) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %252, ptr noundef nonnull @.str.301)
          to label %1541 unwind label %1552

1541:                                             ; preds = %1540
  %1542 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %252)
          to label %1543 unwind label %1552

1543:                                             ; preds = %1541
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %253) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %254) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %254, ptr noundef nonnull @.str.304)
          to label %1544 unwind label %1554

1544:                                             ; preds = %1543
  %1545 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %254)
          to label %1546 unwind label %1554

1546:                                             ; preds = %1544
  %1547 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1545)
          to label %1548 unwind label %1554

1548:                                             ; preds = %1546
  store i64 %1547, ptr %253, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %251, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.303, ptr noundef nonnull align 4 dereferenceable(8) %1542, ptr noundef nonnull align 4 dereferenceable(8) %253)
          to label %1549 unwind label %1554

1549:                                             ; preds = %1548
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %254) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %252) #11
  %1550 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %251)
  br i1 %1550, label %1571, label %1557

1551:                                             ; preds = %1539, %1525
  %.pn695.pn.pn = phi { ptr, i32 } [ %.pn695.pn, %1539 ], [ %.pn693, %1525 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %245) #11
  br label %3351

1552:                                             ; preds = %1541, %1540
  %1553 = landingpad { ptr, i32 }
          cleanup
  br label %1556

1554:                                             ; preds = %1548, %1546, %1544, %1543
  %1555 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %254) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #11
  br label %1556

1556:                                             ; preds = %1554, %1552
  %.pn699 = phi { ptr, i32 } [ %1555, %1554 ], [ %1553, %1552 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %252) #11
  br label %1582

1557:                                             ; preds = %1549
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %255) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255)
          to label %1558 unwind label %1563

1558:                                             ; preds = %1557
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %256) #11
  %1559 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %251)
          to label %1560 unwind label %1565

1560:                                             ; preds = %1558
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %256, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 302, ptr noundef %1559)
          to label %1561 unwind label %1565

1561:                                             ; preds = %1560
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull align 8 dereferenceable(8) %255)
          to label %1562 unwind label %1567

1562:                                             ; preds = %1561
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %256) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #11
  br label %1571

1563:                                             ; preds = %1557
  %1564 = landingpad { ptr, i32 }
          cleanup
  br label %1570

1565:                                             ; preds = %1560, %1558
  %1566 = landingpad { ptr, i32 }
          cleanup
  br label %1569

1567:                                             ; preds = %1561
  %1568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #11
  br label %1569

1569:                                             ; preds = %1567, %1565
  %.pn701 = phi { ptr, i32 } [ %1568, %1567 ], [ %1566, %1565 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %256) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #11
  br label %1570

1570:                                             ; preds = %1569, %1563
  %.pn701.pn = phi { ptr, i32 } [ %.pn701, %1569 ], [ %1564, %1563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #11
  br label %1582

1571:                                             ; preds = %1549, %1562
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %257) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %258) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %258, ptr noundef nonnull @.str.301)
          to label %1572 unwind label %1583

1572:                                             ; preds = %1571
  %1573 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %258)
          to label %1574 unwind label %1583

1574:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %259) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %260) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %260, ptr noundef nonnull @.str.306)
          to label %1575 unwind label %1585

1575:                                             ; preds = %1574
  %1576 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %260)
          to label %1577 unwind label %1585

1577:                                             ; preds = %1575
  %1578 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1576)
          to label %1579 unwind label %1585

1579:                                             ; preds = %1577
  store i64 %1578, ptr %259, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %257, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.305, ptr noundef nonnull align 4 dereferenceable(8) %1573, ptr noundef nonnull align 4 dereferenceable(8) %259)
          to label %1580 unwind label %1585

1580:                                             ; preds = %1579
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %260) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %258) #11
  %1581 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %257)
  br i1 %1581, label %1602, label %1588

1582:                                             ; preds = %1570, %1556
  %.pn701.pn.pn = phi { ptr, i32 } [ %.pn701.pn, %1570 ], [ %.pn699, %1556 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #11
  br label %3351

1583:                                             ; preds = %1572, %1571
  %1584 = landingpad { ptr, i32 }
          cleanup
  br label %1587

1585:                                             ; preds = %1579, %1577, %1575, %1574
  %1586 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %260) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #11
  br label %1587

1587:                                             ; preds = %1585, %1583
  %.pn705 = phi { ptr, i32 } [ %1586, %1585 ], [ %1584, %1583 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %258) #11
  br label %1613

1588:                                             ; preds = %1580
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %261) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %261)
          to label %1589 unwind label %1594

1589:                                             ; preds = %1588
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %262) #11
  %1590 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %257)
          to label %1591 unwind label %1596

1591:                                             ; preds = %1589
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %262, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 303, ptr noundef %1590)
          to label %1592 unwind label %1596

1592:                                             ; preds = %1591
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull align 8 dereferenceable(8) %261)
          to label %1593 unwind label %1598

1593:                                             ; preds = %1592
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %262) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #11
  br label %1602

1594:                                             ; preds = %1588
  %1595 = landingpad { ptr, i32 }
          cleanup
  br label %1601

1596:                                             ; preds = %1591, %1589
  %1597 = landingpad { ptr, i32 }
          cleanup
  br label %1600

1598:                                             ; preds = %1592
  %1599 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %262) #11
  br label %1600

1600:                                             ; preds = %1598, %1596
  %.pn707 = phi { ptr, i32 } [ %1599, %1598 ], [ %1597, %1596 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #11
  br label %1601

1601:                                             ; preds = %1600, %1594
  %.pn707.pn = phi { ptr, i32 } [ %.pn707, %1600 ], [ %1595, %1594 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #11
  br label %1613

1602:                                             ; preds = %1580, %1593
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %257) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %263) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %264) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %264, ptr noundef nonnull @.str.301)
          to label %1603 unwind label %1614

1603:                                             ; preds = %1602
  %1604 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %264)
          to label %1605 unwind label %1614

1605:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %265) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %266) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %266, ptr noundef nonnull @.str.308)
          to label %1606 unwind label %1616

1606:                                             ; preds = %1605
  %1607 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %266)
          to label %1608 unwind label %1616

1608:                                             ; preds = %1606
  %1609 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1607)
          to label %1610 unwind label %1616

1610:                                             ; preds = %1608
  store i64 %1609, ptr %265, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %263, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.307, ptr noundef nonnull align 4 dereferenceable(8) %1604, ptr noundef nonnull align 4 dereferenceable(8) %265)
          to label %1611 unwind label %1616

1611:                                             ; preds = %1610
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %266) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %264) #11
  %1612 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %263)
  br i1 %1612, label %1633, label %1619

1613:                                             ; preds = %1601, %1587
  %.pn707.pn.pn = phi { ptr, i32 } [ %.pn707.pn, %1601 ], [ %.pn705, %1587 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %257) #11
  br label %3351

1614:                                             ; preds = %1603, %1602
  %1615 = landingpad { ptr, i32 }
          cleanup
  br label %1618

1616:                                             ; preds = %1610, %1608, %1606, %1605
  %1617 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %266) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #11
  br label %1618

1618:                                             ; preds = %1616, %1614
  %.pn711 = phi { ptr, i32 } [ %1617, %1616 ], [ %1615, %1614 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %264) #11
  br label %1644

1619:                                             ; preds = %1611
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %267) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %1620 unwind label %1625

1620:                                             ; preds = %1619
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %268) #11
  %1621 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %263)
          to label %1622 unwind label %1627

1622:                                             ; preds = %1620
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %268, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 304, ptr noundef %1621)
          to label %1623 unwind label %1627

1623:                                             ; preds = %1622
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %1624 unwind label %1629

1624:                                             ; preds = %1623
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %268) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %267) #11
  br label %1633

1625:                                             ; preds = %1619
  %1626 = landingpad { ptr, i32 }
          cleanup
  br label %1632

1627:                                             ; preds = %1622, %1620
  %1628 = landingpad { ptr, i32 }
          cleanup
  br label %1631

1629:                                             ; preds = %1623
  %1630 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %268) #11
  br label %1631

1631:                                             ; preds = %1629, %1627
  %.pn713 = phi { ptr, i32 } [ %1630, %1629 ], [ %1628, %1627 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #11
  br label %1632

1632:                                             ; preds = %1631, %1625
  %.pn713.pn = phi { ptr, i32 } [ %.pn713, %1631 ], [ %1626, %1625 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %267) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #11
  br label %1644

1633:                                             ; preds = %1611, %1624
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %263) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %269) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %270) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %270, ptr noundef nonnull @.str.301)
          to label %1634 unwind label %1645

1634:                                             ; preds = %1633
  %1635 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %270)
          to label %1636 unwind label %1645

1636:                                             ; preds = %1634
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %271) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %272) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %272, ptr noundef nonnull @.str.310)
          to label %1637 unwind label %1647

1637:                                             ; preds = %1636
  %1638 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %272)
          to label %1639 unwind label %1647

1639:                                             ; preds = %1637
  %1640 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1638)
          to label %1641 unwind label %1647

1641:                                             ; preds = %1639
  store i64 %1640, ptr %271, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %269, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.309, ptr noundef nonnull align 4 dereferenceable(8) %1635, ptr noundef nonnull align 4 dereferenceable(8) %271)
          to label %1642 unwind label %1647

1642:                                             ; preds = %1641
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %272) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %270) #11
  %1643 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
  br i1 %1643, label %1664, label %1650

1644:                                             ; preds = %1632, %1618
  %.pn713.pn.pn = phi { ptr, i32 } [ %.pn713.pn, %1632 ], [ %.pn711, %1618 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %263) #11
  br label %3351

1645:                                             ; preds = %1634, %1633
  %1646 = landingpad { ptr, i32 }
          cleanup
  br label %1649

1647:                                             ; preds = %1641, %1639, %1637, %1636
  %1648 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %272) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #11
  br label %1649

1649:                                             ; preds = %1647, %1645
  %.pn717 = phi { ptr, i32 } [ %1648, %1647 ], [ %1646, %1645 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %270) #11
  br label %1675

1650:                                             ; preds = %1642
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %273) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %1651 unwind label %1656

1651:                                             ; preds = %1650
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %274) #11
  %1652 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
          to label %1653 unwind label %1658

1653:                                             ; preds = %1651
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 305, ptr noundef %1652)
          to label %1654 unwind label %1658

1654:                                             ; preds = %1653
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %1655 unwind label %1660

1655:                                             ; preds = %1654
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %273) #11
  br label %1664

1656:                                             ; preds = %1650
  %1657 = landingpad { ptr, i32 }
          cleanup
  br label %1663

1658:                                             ; preds = %1653, %1651
  %1659 = landingpad { ptr, i32 }
          cleanup
  br label %1662

1660:                                             ; preds = %1654
  %1661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #11
  br label %1662

1662:                                             ; preds = %1660, %1658
  %.pn719 = phi { ptr, i32 } [ %1661, %1660 ], [ %1659, %1658 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #11
  br label %1663

1663:                                             ; preds = %1662, %1656
  %.pn719.pn = phi { ptr, i32 } [ %.pn719, %1662 ], [ %1657, %1656 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %273) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #11
  br label %1675

1664:                                             ; preds = %1642, %1655
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %275) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %276) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %276, ptr noundef nonnull @.str.301)
          to label %1665 unwind label %1676

1665:                                             ; preds = %1664
  %1666 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %276)
          to label %1667 unwind label %1676

1667:                                             ; preds = %1665
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %277) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %278) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %278, ptr noundef nonnull @.str.312)
          to label %1668 unwind label %1678

1668:                                             ; preds = %1667
  %1669 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %278)
          to label %1670 unwind label %1678

1670:                                             ; preds = %1668
  %1671 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1669)
          to label %1672 unwind label %1678

1672:                                             ; preds = %1670
  store i64 %1671, ptr %277, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %275, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.311, ptr noundef nonnull align 4 dereferenceable(8) %1666, ptr noundef nonnull align 4 dereferenceable(8) %277)
          to label %1673 unwind label %1678

1673:                                             ; preds = %1672
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %278) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %276) #11
  %1674 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %275)
  br i1 %1674, label %1695, label %1681

1675:                                             ; preds = %1663, %1649
  %.pn719.pn.pn = phi { ptr, i32 } [ %.pn719.pn, %1663 ], [ %.pn717, %1649 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #11
  br label %3351

1676:                                             ; preds = %1665, %1664
  %1677 = landingpad { ptr, i32 }
          cleanup
  br label %1680

1678:                                             ; preds = %1672, %1670, %1668, %1667
  %1679 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %278) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #11
  br label %1680

1680:                                             ; preds = %1678, %1676
  %.pn723 = phi { ptr, i32 } [ %1679, %1678 ], [ %1677, %1676 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %276) #11
  br label %1706

1681:                                             ; preds = %1673
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %279) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279)
          to label %1682 unwind label %1687

1682:                                             ; preds = %1681
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %280) #11
  %1683 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %275)
          to label %1684 unwind label %1689

1684:                                             ; preds = %1682
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %280, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 306, ptr noundef %1683)
          to label %1685 unwind label %1689

1685:                                             ; preds = %1684
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull align 8 dereferenceable(8) %279)
          to label %1686 unwind label %1691

1686:                                             ; preds = %1685
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %280) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %280) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %279) #11
  br label %1695

1687:                                             ; preds = %1681
  %1688 = landingpad { ptr, i32 }
          cleanup
  br label %1694

1689:                                             ; preds = %1684, %1682
  %1690 = landingpad { ptr, i32 }
          cleanup
  br label %1693

1691:                                             ; preds = %1685
  %1692 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %280) #11
  br label %1693

1693:                                             ; preds = %1691, %1689
  %.pn725 = phi { ptr, i32 } [ %1692, %1691 ], [ %1690, %1689 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %280) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #11
  br label %1694

1694:                                             ; preds = %1693, %1687
  %.pn725.pn = phi { ptr, i32 } [ %.pn725, %1693 ], [ %1688, %1687 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %279) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #11
  br label %1706

1695:                                             ; preds = %1673, %1686
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %275) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %281) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %282) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %282, ptr noundef nonnull @.str.301)
          to label %1696 unwind label %1707

1696:                                             ; preds = %1695
  %1697 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %282)
          to label %1698 unwind label %1707

1698:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %283) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %284) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %284, ptr noundef nonnull @.str.314)
          to label %1699 unwind label %1709

1699:                                             ; preds = %1698
  %1700 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %284)
          to label %1701 unwind label %1709

1701:                                             ; preds = %1699
  %1702 = invoke i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24) %1700)
          to label %1703 unwind label %1709

1703:                                             ; preds = %1701
  store i64 %1702, ptr %283, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %281, ptr noundef nonnull @.str.299, ptr noundef nonnull @.str.313, ptr noundef nonnull align 4 dereferenceable(8) %1697, ptr noundef nonnull align 4 dereferenceable(8) %283)
          to label %1704 unwind label %1709

1704:                                             ; preds = %1703
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %284) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %282) #11
  %1705 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
  br i1 %1705, label %1726, label %1712

1706:                                             ; preds = %1694, %1680
  %.pn725.pn.pn = phi { ptr, i32 } [ %.pn725.pn, %1694 ], [ %.pn723, %1680 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %275) #11
  br label %3351

1707:                                             ; preds = %1696, %1695
  %1708 = landingpad { ptr, i32 }
          cleanup
  br label %1711

1709:                                             ; preds = %1703, %1701, %1699, %1698
  %1710 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %284) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #11
  br label %1711

1711:                                             ; preds = %1709, %1707
  %.pn729 = phi { ptr, i32 } [ %1710, %1709 ], [ %1708, %1707 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %282) #11
  br label %1731

1712:                                             ; preds = %1704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %285) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %1713 unwind label %1718

1713:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %286) #11
  %1714 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
          to label %1715 unwind label %1720

1715:                                             ; preds = %1713
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %286, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 307, ptr noundef %1714)
          to label %1716 unwind label %1720

1716:                                             ; preds = %1715
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %1717 unwind label %1722

1717:                                             ; preds = %1716
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %286) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %286) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %285) #11
  br label %1726

1718:                                             ; preds = %1712
  %1719 = landingpad { ptr, i32 }
          cleanup
  br label %1725

1720:                                             ; preds = %1715, %1713
  %1721 = landingpad { ptr, i32 }
          cleanup
  br label %1724

1722:                                             ; preds = %1716
  %1723 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %286) #11
  br label %1724

1724:                                             ; preds = %1722, %1720
  %.pn731 = phi { ptr, i32 } [ %1723, %1722 ], [ %1721, %1720 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %286) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #11
  br label %1725

1725:                                             ; preds = %1724, %1718
  %.pn731.pn = phi { ptr, i32 } [ %.pn731, %1724 ], [ %1719, %1718 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %285) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %281) #11
  br label %1731

1726:                                             ; preds = %1704, %1717
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %281) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %281) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %287) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %288) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %289) #11
  invoke void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %289, i8 noundef zeroext 10)
          to label %1727 unwind label %1732

1727:                                             ; preds = %1726
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %288, ptr noundef nonnull align 4 dereferenceable(28) %289, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %1728 unwind label %1732

1728:                                             ; preds = %1727
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %287, ptr noundef nonnull @.str.267, ptr noundef nonnull @.str.268, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %288)
          to label %1729 unwind label %1734

1729:                                             ; preds = %1728
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %289) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #11
  %1730 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %287)
  br i1 %1730, label %1751, label %1737

1731:                                             ; preds = %1725, %1711
  %.pn731.pn.pn = phi { ptr, i32 } [ %.pn731.pn, %1725 ], [ %.pn729, %1711 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %281) #11
  br label %3351

1732:                                             ; preds = %1727, %1726
  %1733 = landingpad { ptr, i32 }
          cleanup
  br label %1736

1734:                                             ; preds = %1728
  %1735 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #11
  br label %1736

1736:                                             ; preds = %1734, %1732
  %.pn735 = phi { ptr, i32 } [ %1735, %1734 ], [ %1733, %1732 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %289) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #11
  br label %1756

1737:                                             ; preds = %1729
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %290) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %1738 unwind label %1743

1738:                                             ; preds = %1737
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %291) #11
  %1739 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %287)
          to label %1740 unwind label %1745

1740:                                             ; preds = %1738
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %291, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 309, ptr noundef %1739)
          to label %1741 unwind label %1745

1741:                                             ; preds = %1740
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %1742 unwind label %1747

1742:                                             ; preds = %1741
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %291) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #11
  br label %1751

1743:                                             ; preds = %1737
  %1744 = landingpad { ptr, i32 }
          cleanup
  br label %1750

1745:                                             ; preds = %1740, %1738
  %1746 = landingpad { ptr, i32 }
          cleanup
  br label %1749

1747:                                             ; preds = %1741
  %1748 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #11
  br label %1749

1749:                                             ; preds = %1747, %1745
  %.pn737 = phi { ptr, i32 } [ %1748, %1747 ], [ %1746, %1745 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %291) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #11
  br label %1750

1750:                                             ; preds = %1749, %1743
  %.pn737.pn = phi { ptr, i32 } [ %.pn737, %1749 ], [ %1744, %1743 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #11
  br label %1756

1751:                                             ; preds = %1729, %1742
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %287) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %292) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %293) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %294) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %294, ptr noundef nonnull @.str.229)
          to label %1752 unwind label %1757

1752:                                             ; preds = %1751
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %293, ptr noundef nonnull align 4 dereferenceable(28) %294, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %1753 unwind label %1757

1753:                                             ; preds = %1752
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %292, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.277, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %293)
          to label %1754 unwind label %1759

1754:                                             ; preds = %1753
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %294) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %293) #11
  %1755 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %292)
  br i1 %1755, label %1776, label %1762

1756:                                             ; preds = %1750, %1736
  %.pn737.pn.pn = phi { ptr, i32 } [ %.pn737.pn, %1750 ], [ %.pn735, %1736 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %287) #11
  br label %3351

1757:                                             ; preds = %1752, %1751
  %1758 = landingpad { ptr, i32 }
          cleanup
  br label %1761

1759:                                             ; preds = %1753
  %1760 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #11
  br label %1761

1761:                                             ; preds = %1759, %1757
  %.pn741 = phi { ptr, i32 } [ %1760, %1759 ], [ %1758, %1757 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %294) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %293) #11
  br label %1785

1762:                                             ; preds = %1754
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %295) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %1763 unwind label %1768

1763:                                             ; preds = %1762
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %296) #11
  %1764 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %292)
          to label %1765 unwind label %1770

1765:                                             ; preds = %1763
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %296, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 310, ptr noundef %1764)
          to label %1766 unwind label %1770

1766:                                             ; preds = %1765
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %1767 unwind label %1772

1767:                                             ; preds = %1766
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %296) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #11
  br label %1776

1768:                                             ; preds = %1762
  %1769 = landingpad { ptr, i32 }
          cleanup
  br label %1775

1770:                                             ; preds = %1765, %1763
  %1771 = landingpad { ptr, i32 }
          cleanup
  br label %1774

1772:                                             ; preds = %1766
  %1773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #11
  br label %1774

1774:                                             ; preds = %1772, %1770
  %.pn743 = phi { ptr, i32 } [ %1773, %1772 ], [ %1771, %1770 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %296) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #11
  br label %1775

1775:                                             ; preds = %1774, %1768
  %.pn743.pn = phi { ptr, i32 } [ %.pn743, %1774 ], [ %1769, %1768 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %292) #11
  br label %1785

1776:                                             ; preds = %1754, %1767
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %292) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %292) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %297) #11
  %1777 = call noundef ptr @_ZNSt5arrayIhLm16EE4dataEv(ptr noundef nonnull align 1 dereferenceable(16) %297) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %1777, ptr noundef nonnull align 16 dereferenceable(16) %109, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %298) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %299) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %299, ptr noundef nonnull @.str.10)
          to label %1778 unwind label %1786

1778:                                             ; preds = %1776
  %1779 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %299)
          to label %1780 unwind label %1786

1780:                                             ; preds = %1778
  %1781 = invoke noundef nonnull align 1 dereferenceable(16) ptr @_ZNK4chen11ip_version64addrEv(ptr noundef nonnull align 4 dereferenceable(24) %1779)
          to label %1782 unwind label %1786

1782:                                             ; preds = %1780
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %298, ptr noundef nonnull @.str.315, ptr noundef nonnull @.str.316, ptr noundef nonnull align 1 dereferenceable(16) %297, ptr noundef nonnull align 1 dereferenceable(16) %1781)
          to label %1783 unwind label %1786

1783:                                             ; preds = %1782
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %299) #11
  %1784 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %298)
  br i1 %1784, label %1802, label %1788

1785:                                             ; preds = %1775, %1761
  %.pn743.pn.pn = phi { ptr, i32 } [ %.pn743.pn, %1775 ], [ %.pn741, %1761 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %292) #11
  br label %3351

1786:                                             ; preds = %1782, %1780, %1778, %1776
  %1787 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %299) #11
  br label %1808

1788:                                             ; preds = %1783
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %300) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %1789 unwind label %1794

1789:                                             ; preds = %1788
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %301) #11
  %1790 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %298)
          to label %1791 unwind label %1796

1791:                                             ; preds = %1789
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %301, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 315, ptr noundef %1790)
          to label %1792 unwind label %1796

1792:                                             ; preds = %1791
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %1793 unwind label %1798

1793:                                             ; preds = %1792
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #11
  br label %1802

1794:                                             ; preds = %1788
  %1795 = landingpad { ptr, i32 }
          cleanup
  br label %1801

1796:                                             ; preds = %1791, %1789
  %1797 = landingpad { ptr, i32 }
          cleanup
  br label %1800

1798:                                             ; preds = %1792
  %1799 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #11
  br label %1800

1800:                                             ; preds = %1798, %1796
  %.pn747 = phi { ptr, i32 } [ %1799, %1798 ], [ %1797, %1796 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #11
  br label %1801

1801:                                             ; preds = %1800, %1794
  %.pn747.pn = phi { ptr, i32 } [ %.pn747, %1800 ], [ %1795, %1794 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %298) #11
  br label %1808

1802:                                             ; preds = %1783, %1793
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %298) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %298) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %302) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %303) #11
  store i32 128, ptr %303, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %305) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %305, ptr noundef nonnull @.str.10)
          to label %1803 unwind label %1809

1803:                                             ; preds = %1802
  %1804 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %305)
          to label %1805 unwind label %1809

1805:                                             ; preds = %1803
  store i8 %1804, ptr %304, align 1, !tbaa !16
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %302, ptr noundef nonnull @.str.263, ptr noundef nonnull @.str.317, ptr noundef nonnull align 4 dereferenceable(4) %303, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %1806 unwind label %1809

1806:                                             ; preds = %1805
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %305) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %303) #11
  %1807 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %302)
  br i1 %1807, label %1825, label %1811

1808:                                             ; preds = %1801, %1786
  %.pn747.pn.pn = phi { ptr, i32 } [ %.pn747.pn, %1801 ], [ %1787, %1786 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %298) #11
  br label %3350

1809:                                             ; preds = %1805, %1803, %1802
  %1810 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %305) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %303) #11
  br label %1831

1811:                                             ; preds = %1806
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %306) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %1812 unwind label %1817

1812:                                             ; preds = %1811
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %307) #11
  %1813 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %302)
          to label %1814 unwind label %1819

1814:                                             ; preds = %1812
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %307, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 316, ptr noundef %1813)
          to label %1815 unwind label %1819

1815:                                             ; preds = %1814
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %1816 unwind label %1821

1816:                                             ; preds = %1815
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #11
  br label %1825

1817:                                             ; preds = %1811
  %1818 = landingpad { ptr, i32 }
          cleanup
  br label %1824

1819:                                             ; preds = %1814, %1812
  %1820 = landingpad { ptr, i32 }
          cleanup
  br label %1823

1821:                                             ; preds = %1815
  %1822 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #11
  br label %1823

1823:                                             ; preds = %1821, %1819
  %.pn751 = phi { ptr, i32 } [ %1822, %1821 ], [ %1820, %1819 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #11
  br label %1824

1824:                                             ; preds = %1823, %1817
  %.pn751.pn = phi { ptr, i32 } [ %.pn751, %1823 ], [ %1818, %1817 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %302) #11
  br label %1831

1825:                                             ; preds = %1806, %1816
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %302) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %302) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %308) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %309) #11
  store i32 128, ptr %309, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %310) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %311) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %311, ptr noundef nonnull @.str.231)
          to label %1826 unwind label %1832

1826:                                             ; preds = %1825
  %1827 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %311)
          to label %1828 unwind label %1832

1828:                                             ; preds = %1826
  store i8 %1827, ptr %310, align 1, !tbaa !16
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %308, ptr noundef nonnull @.str.263, ptr noundef nonnull @.str.318, ptr noundef nonnull align 4 dereferenceable(4) %309, ptr noundef nonnull align 1 dereferenceable(1) %310)
          to label %1829 unwind label %1832

1829:                                             ; preds = %1828
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %311) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %310) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %309) #11
  %1830 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %308)
  br i1 %1830, label %1848, label %1834

1831:                                             ; preds = %1824, %1809
  %.pn751.pn.pn = phi { ptr, i32 } [ %.pn751.pn, %1824 ], [ %1810, %1809 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %302) #11
  br label %3350

1832:                                             ; preds = %1828, %1826, %1825
  %1833 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %311) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %310) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %309) #11
  br label %1854

1834:                                             ; preds = %1829
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %312) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %1835 unwind label %1840

1835:                                             ; preds = %1834
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %313) #11
  %1836 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %308)
          to label %1837 unwind label %1842

1837:                                             ; preds = %1835
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %313, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 317, ptr noundef %1836)
          to label %1838 unwind label %1842

1838:                                             ; preds = %1837
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %1839 unwind label %1844

1839:                                             ; preds = %1838
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #11
  br label %1848

1840:                                             ; preds = %1834
  %1841 = landingpad { ptr, i32 }
          cleanup
  br label %1847

1842:                                             ; preds = %1837, %1835
  %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) %313) #11
  br label %1846

1846:                                             ; preds = %1844, %1842
  %.pn755 = phi { ptr, i32 } [ %1845, %1844 ], [ %1843, %1842 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #11
  br label %1847

1847:                                             ; preds = %1846, %1840
  %.pn755.pn = phi { ptr, i32 } [ %.pn755, %1846 ], [ %1841, %1840 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %308) #11
  br label %1854

1848:                                             ; preds = %1829, %1839
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %308) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %308) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %314) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %315) #11
  store i32 64, ptr %315, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %316) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %317) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %317, ptr noundef nonnull @.str.250)
          to label %1849 unwind label %1855

1849:                                             ; preds = %1848
  %1850 = invoke noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %317)
          to label %1851 unwind label %1855

1851:                                             ; preds = %1849
  store i8 %1850, ptr %316, align 1, !tbaa !16
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %314, ptr noundef nonnull @.str.319, ptr noundef nonnull @.str.320, ptr noundef nonnull align 4 dereferenceable(4) %315, ptr noundef nonnull align 1 dereferenceable(1) %316)
          to label %1852 unwind label %1855

1852:                                             ; preds = %1851
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %317) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %315) #11
  %1853 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %314)
  br i1 %1853, label %1871, label %1857

1854:                                             ; preds = %1847, %1832
  %.pn755.pn.pn = phi { ptr, i32 } [ %.pn755.pn, %1847 ], [ %1833, %1832 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %308) #11
  br label %3350

1855:                                             ; preds = %1851, %1849, %1848
  %1856 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %317) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %315) #11
  br label %1882

1857:                                             ; preds = %1852
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %318) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %1858 unwind label %1863

1858:                                             ; preds = %1857
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %319) #11
  %1859 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %314)
          to label %1860 unwind label %1865

1860:                                             ; preds = %1858
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %319, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 318, ptr noundef %1859)
          to label %1861 unwind label %1865

1861:                                             ; preds = %1860
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %1862 unwind label %1867

1862:                                             ; preds = %1861
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %319) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #11
  br label %1871

1863:                                             ; preds = %1857
  %1864 = landingpad { ptr, i32 }
          cleanup
  br label %1870

1865:                                             ; preds = %1860, %1858
  %1866 = landingpad { ptr, i32 }
          cleanup
  br label %1869

1867:                                             ; preds = %1861
  %1868 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #11
  br label %1869

1869:                                             ; preds = %1867, %1865
  %.pn759 = phi { ptr, i32 } [ %1868, %1867 ], [ %1866, %1865 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %319) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #11
  br label %1870

1870:                                             ; preds = %1869, %1863
  %.pn759.pn = phi { ptr, i32 } [ %.pn759, %1869 ], [ %1864, %1863 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %314) #11
  br label %1882

1871:                                             ; preds = %1852, %1862
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %314) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %314) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %320) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %320, ptr noundef nonnull align 1 dereferenceable(16) @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.netmask, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %321) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %321, ptr noundef nonnull align 1 dereferenceable(16) @__const._ZN23IPAddressTest_IPv6_Test8TestBodyEv.wildcard, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %322) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %323) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %324) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %324, ptr noundef nonnull @.str.323)
          to label %1872 unwind label %1883

1872:                                             ; preds = %1871
  %1873 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %324)
          to label %1874 unwind label %1883

1874:                                             ; preds = %1872
  %1875 = invoke { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24) %1873)
          to label %1876 unwind label %1883

1876:                                             ; preds = %1874
  %1877 = extractvalue { i64, i64 } %1875, 0
  store i64 %1877, ptr %323, align 8
  %1878 = getelementptr inbounds i8, ptr %323, i64 8
  %1879 = extractvalue { i64, i64 } %1875, 1
  store i64 %1879, ptr %1878, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %322, ptr noundef nonnull @.str.321, ptr noundef nonnull @.str.322, ptr noundef nonnull align 1 dereferenceable(16) %320, ptr noundef nonnull align 1 dereferenceable(16) %323)
          to label %1880 unwind label %1883

1880:                                             ; preds = %1876
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %324) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %323) #11
  %1881 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %322)
  br i1 %1881, label %1899, label %1885

1882:                                             ; preds = %1870, %1855
  %.pn759.pn.pn = phi { ptr, i32 } [ %.pn759.pn, %1870 ], [ %1856, %1855 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %314) #11
  br label %3350

1883:                                             ; preds = %1876, %1874, %1872, %1871
  %1884 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %324) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %323) #11
  br label %1910

1885:                                             ; preds = %1880
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %325) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %325)
          to label %1886 unwind label %1891

1886:                                             ; preds = %1885
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %326) #11
  %1887 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %322)
          to label %1888 unwind label %1893

1888:                                             ; preds = %1886
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %326, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 324, ptr noundef %1887)
          to label %1889 unwind label %1893

1889:                                             ; preds = %1888
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef nonnull align 8 dereferenceable(8) %325)
          to label %1890 unwind label %1895

1890:                                             ; preds = %1889
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %326) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %325) #11
  br label %1899

1891:                                             ; preds = %1885
  %1892 = landingpad { ptr, i32 }
          cleanup
  br label %1898

1893:                                             ; preds = %1888, %1886
  %1894 = landingpad { ptr, i32 }
          cleanup
  br label %1897

1895:                                             ; preds = %1889
  %1896 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #11
  br label %1897

1897:                                             ; preds = %1895, %1893
  %.pn763 = phi { ptr, i32 } [ %1896, %1895 ], [ %1894, %1893 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %326) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #11
  br label %1898

1898:                                             ; preds = %1897, %1891
  %.pn763.pn = phi { ptr, i32 } [ %.pn763, %1897 ], [ %1892, %1891 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %325) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %322) #11
  br label %1910

1899:                                             ; preds = %1880, %1890
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %322) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %322) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %327) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %328) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %329) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %329, ptr noundef nonnull @.str.323)
          to label %1900 unwind label %1911

1900:                                             ; preds = %1899
  %1901 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %329)
          to label %1902 unwind label %1911

1902:                                             ; preds = %1900
  %1903 = invoke { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24) %1901)
          to label %1904 unwind label %1911

1904:                                             ; preds = %1902
  %1905 = extractvalue { i64, i64 } %1903, 0
  store i64 %1905, ptr %328, align 8
  %1906 = getelementptr inbounds i8, ptr %328, i64 8
  %1907 = extractvalue { i64, i64 } %1903, 1
  store i64 %1907, ptr %1906, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %327, ptr noundef nonnull @.str.324, ptr noundef nonnull @.str.325, ptr noundef nonnull align 1 dereferenceable(16) %321, ptr noundef nonnull align 1 dereferenceable(16) %328)
          to label %1908 unwind label %1911

1908:                                             ; preds = %1904
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %329) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %328) #11
  %1909 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %327)
  br i1 %1909, label %1927, label %1913

1910:                                             ; preds = %1898, %1883
  %.pn763.pn.pn = phi { ptr, i32 } [ %.pn763.pn, %1898 ], [ %1884, %1883 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %322) #11
  br label %3349

1911:                                             ; preds = %1904, %1902, %1900, %1899
  %1912 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %329) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %328) #11
  br label %1938

1913:                                             ; preds = %1908
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %330) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %1914 unwind label %1919

1914:                                             ; preds = %1913
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %331) #11
  %1915 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %327)
          to label %1916 unwind label %1921

1916:                                             ; preds = %1914
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %331, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 325, ptr noundef %1915)
          to label %1917 unwind label %1921

1917:                                             ; preds = %1916
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %1918 unwind label %1923

1918:                                             ; preds = %1917
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %331) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #11
  br label %1927

1919:                                             ; preds = %1913
  %1920 = landingpad { ptr, i32 }
          cleanup
  br label %1926

1921:                                             ; preds = %1916, %1914
  %1922 = landingpad { ptr, i32 }
          cleanup
  br label %1925

1923:                                             ; preds = %1917
  %1924 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #11
  br label %1925

1925:                                             ; preds = %1923, %1921
  %.pn767 = phi { ptr, i32 } [ %1924, %1923 ], [ %1922, %1921 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %331) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #11
  br label %1926

1926:                                             ; preds = %1925, %1919
  %.pn767.pn = phi { ptr, i32 } [ %.pn767, %1925 ], [ %1920, %1919 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %327) #11
  br label %1938

1927:                                             ; preds = %1908, %1918
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %327) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %327) #11
  %.sroa.821.0..sroa_idx = getelementptr inbounds i8, ptr %320, i64 5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %320, i8 -1, i64 5, i1 false)
  store i8 -4, ptr %.sroa.821.0..sroa_idx, align 1
  %.sroa.922.0..sroa_idx = getelementptr inbounds i8, ptr %320, i64 6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %.sroa.922.0..sroa_idx, i8 0, i64 10, i1 false)
  %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %321, i64 5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %321, i8 0, i64 5, i1 false)
  store i8 3, ptr %.sroa.8.0..sroa_idx, align 1
  %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %321, i64 6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %.sroa.9.0..sroa_idx, i8 -1, i64 10, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %332) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %333) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %334) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %334, ptr noundef nonnull @.str.327)
          to label %1928 unwind label %1939

1928:                                             ; preds = %1927
  %1929 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %334)
          to label %1930 unwind label %1939

1930:                                             ; preds = %1928
  %1931 = invoke { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24) %1929)
          to label %1932 unwind label %1939

1932:                                             ; preds = %1930
  %1933 = extractvalue { i64, i64 } %1931, 0
  store i64 %1933, ptr %333, align 8
  %1934 = getelementptr inbounds i8, ptr %333, i64 8
  %1935 = extractvalue { i64, i64 } %1931, 1
  store i64 %1935, ptr %1934, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %332, ptr noundef nonnull @.str.321, ptr noundef nonnull @.str.326, ptr noundef nonnull align 1 dereferenceable(16) %320, ptr noundef nonnull align 1 dereferenceable(16) %333)
          to label %1936 unwind label %1939

1936:                                             ; preds = %1932
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %334) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #11
  %1937 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %332)
  br i1 %1937, label %1955, label %1941

1938:                                             ; preds = %1926, %1911
  %.pn767.pn.pn = phi { ptr, i32 } [ %.pn767.pn, %1926 ], [ %1912, %1911 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %327) #11
  br label %3349

1939:                                             ; preds = %1932, %1930, %1928, %1927
  %1940 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %334) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #11
  br label %1966

1941:                                             ; preds = %1936
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %335) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %1942 unwind label %1947

1942:                                             ; preds = %1941
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %336) #11
  %1943 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %332)
          to label %1944 unwind label %1949

1944:                                             ; preds = %1942
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %336, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 330, ptr noundef %1943)
          to label %1945 unwind label %1949

1945:                                             ; preds = %1944
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %1946 unwind label %1951

1946:                                             ; preds = %1945
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %336) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %335) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %335) #11
  br label %1955

1947:                                             ; preds = %1941
  %1948 = landingpad { ptr, i32 }
          cleanup
  br label %1954

1949:                                             ; preds = %1944, %1942
  %1950 = landingpad { ptr, i32 }
          cleanup
  br label %1953

1951:                                             ; preds = %1945
  %1952 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #11
  br label %1953

1953:                                             ; preds = %1951, %1949
  %.pn771 = phi { ptr, i32 } [ %1952, %1951 ], [ %1950, %1949 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %336) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %335) #11
  br label %1954

1954:                                             ; preds = %1953, %1947
  %.pn771.pn = phi { ptr, i32 } [ %.pn771, %1953 ], [ %1948, %1947 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %335) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %332) #11
  br label %1966

1955:                                             ; preds = %1936, %1946
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %332) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %332) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %337) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %338) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %339) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %339, ptr noundef nonnull @.str.327)
          to label %1956 unwind label %1967

1956:                                             ; preds = %1955
  %1957 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %339)
          to label %1958 unwind label %1967

1958:                                             ; preds = %1956
  %1959 = invoke { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24) %1957)
          to label %1960 unwind label %1967

1960:                                             ; preds = %1958
  %1961 = extractvalue { i64, i64 } %1959, 0
  store i64 %1961, ptr %338, align 8
  %1962 = getelementptr inbounds i8, ptr %338, i64 8
  %1963 = extractvalue { i64, i64 } %1959, 1
  store i64 %1963, ptr %1962, align 8
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %337, ptr noundef nonnull @.str.324, ptr noundef nonnull @.str.328, ptr noundef nonnull align 1 dereferenceable(16) %321, ptr noundef nonnull align 1 dereferenceable(16) %338)
          to label %1964 unwind label %1967

1964:                                             ; preds = %1960
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %339) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %338) #11
  %1965 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %337)
  br i1 %1965, label %1983, label %1969

1966:                                             ; preds = %1954, %1939
  %.pn771.pn.pn = phi { ptr, i32 } [ %.pn771.pn, %1954 ], [ %1940, %1939 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %332) #11
  br label %3349

1967:                                             ; preds = %1960, %1958, %1956, %1955
  %1968 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %339) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %338) #11
  br label %1989

1969:                                             ; preds = %1964
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %340) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %340)
          to label %1970 unwind label %1975

1970:                                             ; preds = %1969
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %341) #11
  %1971 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %337)
          to label %1972 unwind label %1977

1972:                                             ; preds = %1970
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %341, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 331, ptr noundef %1971)
          to label %1973 unwind label %1977

1973:                                             ; preds = %1972
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull align 8 dereferenceable(8) %340)
          to label %1974 unwind label %1979

1974:                                             ; preds = %1973
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %341) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %341) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %340) #11
  br label %1983

1975:                                             ; preds = %1969
  %1976 = landingpad { ptr, i32 }
          cleanup
  br label %1982

1977:                                             ; preds = %1972, %1970
  %1978 = landingpad { ptr, i32 }
          cleanup
  br label %1981

1979:                                             ; preds = %1973
  %1980 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %341) #11
  br label %1981

1981:                                             ; preds = %1979, %1977
  %.pn775 = phi { ptr, i32 } [ %1980, %1979 ], [ %1978, %1977 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %341) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #11
  br label %1982

1982:                                             ; preds = %1981, %1975
  %.pn775.pn = phi { ptr, i32 } [ %.pn775, %1981 ], [ %1976, %1975 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %340) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %337) #11
  br label %1989

1983:                                             ; preds = %1964, %1974
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %337) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %337) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %342) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %343) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %344) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %345) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %345, ptr noundef nonnull @.str.327)
          to label %1984 unwind label %1990

1984:                                             ; preds = %1983
  invoke void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %344, ptr noundef nonnull align 4 dereferenceable(28) %345)
          to label %1985 unwind label %1990

1985:                                             ; preds = %1984
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %343, ptr noundef nonnull align 4 dereferenceable(28) %344, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %1986 unwind label %1990

1986:                                             ; preds = %1985
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %342, ptr noundef nonnull @.str.329, ptr noundef nonnull @.str.330, ptr noundef nonnull align 1 dereferenceable(20) @.str.331, ptr noundef nonnull align 8 dereferenceable(32) %343)
          to label %1987 unwind label %1992

1987:                                             ; preds = %1986
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %345) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %344) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #11
  %1988 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
  br i1 %1988, label %2009, label %1995

1989:                                             ; preds = %1982, %1967
  %.pn775.pn.pn = phi { ptr, i32 } [ %.pn775.pn, %1982 ], [ %1968, %1967 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %337) #11
  br label %3349

1990:                                             ; preds = %1985, %1984, %1983
  %1991 = landingpad { ptr, i32 }
          cleanup
  br label %1994

1992:                                             ; preds = %1986
  %1993 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %343) #11
  br label %1994

1994:                                             ; preds = %1992, %1990
  %.pn779 = phi { ptr, i32 } [ %1993, %1992 ], [ %1991, %1990 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %345) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %344) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %343) #11
  br label %2015

1995:                                             ; preds = %1987
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %346) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346)
          to label %1996 unwind label %2001

1996:                                             ; preds = %1995
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %347) #11
  %1997 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
          to label %1998 unwind label %2003

1998:                                             ; preds = %1996
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %347, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 333, ptr noundef %1997)
          to label %1999 unwind label %2003

1999:                                             ; preds = %1998
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 8 dereferenceable(8) %346)
          to label %2000 unwind label %2005

2000:                                             ; preds = %1999
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %347) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %347) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %346) #11
  br label %2009

2001:                                             ; preds = %1995
  %2002 = landingpad { ptr, i32 }
          cleanup
  br label %2008

2003:                                             ; preds = %1998, %1996
  %2004 = landingpad { ptr, i32 }
          cleanup
  br label %2007

2005:                                             ; preds = %1999
  %2006 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %347) #11
  br label %2007

2007:                                             ; preds = %2005, %2003
  %.pn781 = phi { ptr, i32 } [ %2006, %2005 ], [ %2004, %2003 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %347) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #11
  br label %2008

2008:                                             ; preds = %2007, %2001
  %.pn781.pn = phi { ptr, i32 } [ %.pn781, %2007 ], [ %2002, %2001 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %346) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #11
  br label %2015

2009:                                             ; preds = %1987, %2000
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %342) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %342) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %348) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %349) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %350) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %351) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %351, ptr noundef nonnull @.str.231)
          to label %2010 unwind label %2016

2010:                                             ; preds = %2009
  invoke void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %350, ptr noundef nonnull align 4 dereferenceable(28) %351)
          to label %2011 unwind label %2016

2011:                                             ; preds = %2010
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %349, ptr noundef nonnull align 4 dereferenceable(28) %350, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2012 unwind label %2016

2012:                                             ; preds = %2011
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %348, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.332, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %349)
          to label %2013 unwind label %2018

2013:                                             ; preds = %2012
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %349) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %351) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %350) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %349) #11
  %2014 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %348)
  br i1 %2014, label %2035, label %2021

2015:                                             ; preds = %2008, %1994
  %.pn781.pn.pn = phi { ptr, i32 } [ %.pn781.pn, %2008 ], [ %.pn779, %1994 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %342) #11
  br label %3349

2016:                                             ; preds = %2011, %2010, %2009
  %2017 = landingpad { ptr, i32 }
          cleanup
  br label %2020

2018:                                             ; preds = %2012
  %2019 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %349) #11
  br label %2020

2020:                                             ; preds = %2018, %2016
  %.pn785 = phi { ptr, i32 } [ %2019, %2018 ], [ %2017, %2016 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %351) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %350) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %349) #11
  br label %2041

2021:                                             ; preds = %2013
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %352) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %352)
          to label %2022 unwind label %2027

2022:                                             ; preds = %2021
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %353) #11
  %2023 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %348)
          to label %2024 unwind label %2029

2024:                                             ; preds = %2022
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %353, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 334, ptr noundef %2023)
          to label %2025 unwind label %2029

2025:                                             ; preds = %2024
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %353, ptr noundef nonnull align 8 dereferenceable(8) %352)
          to label %2026 unwind label %2031

2026:                                             ; preds = %2025
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %353) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %352) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %352) #11
  br label %2035

2027:                                             ; preds = %2021
  %2028 = landingpad { ptr, i32 }
          cleanup
  br label %2034

2029:                                             ; preds = %2024, %2022
  %2030 = landingpad { ptr, i32 }
          cleanup
  br label %2033

2031:                                             ; preds = %2025
  %2032 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %353) #11
  br label %2033

2033:                                             ; preds = %2031, %2029
  %.pn787 = phi { ptr, i32 } [ %2032, %2031 ], [ %2030, %2029 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %352) #11
  br label %2034

2034:                                             ; preds = %2033, %2027
  %.pn787.pn = phi { ptr, i32 } [ %.pn787, %2033 ], [ %2028, %2027 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %352) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %348) #11
  br label %2041

2035:                                             ; preds = %2013, %2026
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %348) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %348) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %354) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %355) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %356) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %357) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %357, ptr noundef nonnull @.str.327)
          to label %2036 unwind label %2042

2036:                                             ; preds = %2035
  invoke void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %356, ptr noundef nonnull align 4 dereferenceable(28) %357)
          to label %2037 unwind label %2042

2037:                                             ; preds = %2036
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %355, ptr noundef nonnull align 4 dereferenceable(28) %356, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %2038 unwind label %2042

2038:                                             ; preds = %2037
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %354, ptr noundef nonnull @.str.329, ptr noundef nonnull @.str.333, ptr noundef nonnull align 1 dereferenceable(20) @.str.331, ptr noundef nonnull align 8 dereferenceable(32) %355)
          to label %2039 unwind label %2044

2039:                                             ; preds = %2038
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %355) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %357) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %356) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %355) #11
  %2040 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %354)
  br i1 %2040, label %2061, label %2047

2041:                                             ; preds = %2034, %2020
  %.pn787.pn.pn = phi { ptr, i32 } [ %.pn787.pn, %2034 ], [ %.pn785, %2020 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %348) #11
  br label %3349

2042:                                             ; preds = %2037, %2036, %2035
  %2043 = landingpad { ptr, i32 }
          cleanup
  br label %2046

2044:                                             ; preds = %2038
  %2045 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %355) #11
  br label %2046

2046:                                             ; preds = %2044, %2042
  %.pn791 = phi { ptr, i32 } [ %2045, %2044 ], [ %2043, %2042 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %357) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %356) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %355) #11
  br label %2067

2047:                                             ; preds = %2039
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %358) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %358)
          to label %2048 unwind label %2053

2048:                                             ; preds = %2047
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %359) #11
  %2049 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %354)
          to label %2050 unwind label %2055

2050:                                             ; preds = %2048
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %359, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 336, ptr noundef %2049)
          to label %2051 unwind label %2055

2051:                                             ; preds = %2050
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull align 8 dereferenceable(8) %358)
          to label %2052 unwind label %2057

2052:                                             ; preds = %2051
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %359) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %358) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %358) #11
  br label %2061

2053:                                             ; preds = %2047
  %2054 = landingpad { ptr, i32 }
          cleanup
  br label %2060

2055:                                             ; preds = %2050, %2048
  %2056 = landingpad { ptr, i32 }
          cleanup
  br label %2059

2057:                                             ; preds = %2051
  %2058 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #11
  br label %2059

2059:                                             ; preds = %2057, %2055
  %.pn793 = phi { ptr, i32 } [ %2058, %2057 ], [ %2056, %2055 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %359) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %358) #11
  br label %2060

2060:                                             ; preds = %2059, %2053
  %.pn793.pn = phi { ptr, i32 } [ %.pn793, %2059 ], [ %2054, %2053 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %358) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %354) #11
  br label %2067

2061:                                             ; preds = %2039, %2052
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %354) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %354) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %360) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %361) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %362) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %363) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %363, ptr noundef nonnull @.str.327)
          to label %2062 unwind label %2068

2062:                                             ; preds = %2061
  invoke void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %362, ptr noundef nonnull align 4 dereferenceable(28) %363)
          to label %2063 unwind label %2068

2063:                                             ; preds = %2062
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %361, ptr noundef nonnull align 4 dereferenceable(28) %362, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %2064 unwind label %2068

2064:                                             ; preds = %2063
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA43_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %360, ptr noundef nonnull @.str.334, ptr noundef nonnull @.str.335, ptr noundef nonnull align 1 dereferenceable(43) @.str.336, ptr noundef nonnull align 8 dereferenceable(32) %361)
          to label %2065 unwind label %2070

2065:                                             ; preds = %2064
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %363) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %362) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %361) #11
  %2066 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
  br i1 %2066, label %2087, label %2073

2067:                                             ; preds = %2060, %2046
  %.pn793.pn.pn = phi { ptr, i32 } [ %.pn793.pn, %2060 ], [ %.pn791, %2046 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %354) #11
  br label %3349

2068:                                             ; preds = %2063, %2062, %2061
  %2069 = landingpad { ptr, i32 }
          cleanup
  br label %2072

2070:                                             ; preds = %2064
  %2071 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #11
  br label %2072

2072:                                             ; preds = %2070, %2068
  %.pn797 = phi { ptr, i32 } [ %2071, %2070 ], [ %2069, %2068 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %363) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %362) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %361) #11
  br label %2093

2073:                                             ; preds = %2065
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %364) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %2074 unwind label %2079

2074:                                             ; preds = %2073
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %365) #11
  %2075 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
          to label %2076 unwind label %2081

2076:                                             ; preds = %2074
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %365, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 337, ptr noundef %2075)
          to label %2077 unwind label %2081

2077:                                             ; preds = %2076
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %2078 unwind label %2083

2078:                                             ; preds = %2077
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %365) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %364) #11
  br label %2087

2079:                                             ; preds = %2073
  %2080 = landingpad { ptr, i32 }
          cleanup
  br label %2086

2081:                                             ; preds = %2076, %2074
  %2082 = landingpad { ptr, i32 }
          cleanup
  br label %2085

2083:                                             ; preds = %2077
  %2084 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #11
  br label %2085

2085:                                             ; preds = %2083, %2081
  %.pn799 = phi { ptr, i32 } [ %2084, %2083 ], [ %2082, %2081 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %365) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #11
  br label %2086

2086:                                             ; preds = %2085, %2079
  %.pn799.pn = phi { ptr, i32 } [ %.pn799, %2085 ], [ %2080, %2079 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %364) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #11
  br label %2093

2087:                                             ; preds = %2065, %2078
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %360) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %366) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %367) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %368) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %369) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %369, ptr noundef nonnull @.str.231)
          to label %2088 unwind label %2094

2088:                                             ; preds = %2087
  invoke void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %368, ptr noundef nonnull align 4 dereferenceable(28) %369)
          to label %2089 unwind label %2094

2089:                                             ; preds = %2088
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %367, ptr noundef nonnull align 4 dereferenceable(28) %368, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2090 unwind label %2094

2090:                                             ; preds = %2089
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %366, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.337, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %367)
          to label %2091 unwind label %2096

2091:                                             ; preds = %2090
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %369) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %368) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %367) #11
  %2092 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %366)
  br i1 %2092, label %2113, label %2099

2093:                                             ; preds = %2086, %2072
  %.pn799.pn.pn = phi { ptr, i32 } [ %.pn799.pn, %2086 ], [ %.pn797, %2072 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %360) #11
  br label %3349

2094:                                             ; preds = %2089, %2088, %2087
  %2095 = landingpad { ptr, i32 }
          cleanup
  br label %2098

2096:                                             ; preds = %2090
  %2097 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #11
  br label %2098

2098:                                             ; preds = %2096, %2094
  %.pn803 = phi { ptr, i32 } [ %2097, %2096 ], [ %2095, %2094 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %369) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %368) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %367) #11
  br label %2119

2099:                                             ; preds = %2091
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %370) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %370)
          to label %2100 unwind label %2105

2100:                                             ; preds = %2099
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %371) #11
  %2101 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %366)
          to label %2102 unwind label %2107

2102:                                             ; preds = %2100
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %371, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 339, ptr noundef %2101)
          to label %2103 unwind label %2107

2103:                                             ; preds = %2102
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull align 8 dereferenceable(8) %370)
          to label %2104 unwind label %2109

2104:                                             ; preds = %2103
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %371) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %371) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %370) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %370) #11
  br label %2113

2105:                                             ; preds = %2099
  %2106 = landingpad { ptr, i32 }
          cleanup
  br label %2112

2107:                                             ; preds = %2102, %2100
  %2108 = landingpad { ptr, i32 }
          cleanup
  br label %2111

2109:                                             ; preds = %2103
  %2110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %371) #11
  br label %2111

2111:                                             ; preds = %2109, %2107
  %.pn805 = phi { ptr, i32 } [ %2110, %2109 ], [ %2108, %2107 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %371) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %370) #11
  br label %2112

2112:                                             ; preds = %2111, %2105
  %.pn805.pn = phi { ptr, i32 } [ %.pn805, %2111 ], [ %2106, %2105 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %370) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %366) #11
  br label %2119

2113:                                             ; preds = %2091, %2104
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %366) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %366) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %372) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %373) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %374) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %375) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %375, ptr noundef nonnull @.str.231)
          to label %2114 unwind label %2120

2114:                                             ; preds = %2113
  invoke void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %374, ptr noundef nonnull align 4 dereferenceable(28) %375)
          to label %2115 unwind label %2120

2115:                                             ; preds = %2114
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %373, ptr noundef nonnull align 4 dereferenceable(28) %374, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2116 unwind label %2120

2116:                                             ; preds = %2115
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %372, ptr noundef nonnull @.str.262, ptr noundef nonnull @.str.338, ptr noundef nonnull align 1 dereferenceable(25) @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %373)
          to label %2117 unwind label %2122

2117:                                             ; preds = %2116
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %375) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %374) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %373) #11
  %2118 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %372)
  br i1 %2118, label %2139, label %2125

2119:                                             ; preds = %2112, %2098
  %.pn805.pn.pn = phi { ptr, i32 } [ %.pn805.pn, %2112 ], [ %.pn803, %2098 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %366) #11
  br label %3349

2120:                                             ; preds = %2115, %2114, %2113
  %2121 = landingpad { ptr, i32 }
          cleanup
  br label %2124

2122:                                             ; preds = %2116
  %2123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #11
  br label %2124

2124:                                             ; preds = %2122, %2120
  %.pn809 = phi { ptr, i32 } [ %2123, %2122 ], [ %2121, %2120 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %375) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %374) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %373) #11
  br label %2146

2125:                                             ; preds = %2117
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %376) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %376)
          to label %2126 unwind label %2131

2126:                                             ; preds = %2125
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %377) #11
  %2127 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %372)
          to label %2128 unwind label %2133

2128:                                             ; preds = %2126
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %377, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 340, ptr noundef %2127)
          to label %2129 unwind label %2133

2129:                                             ; preds = %2128
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull align 8 dereferenceable(8) %376)
          to label %2130 unwind label %2135

2130:                                             ; preds = %2129
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %376) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %376) #11
  br label %2139

2131:                                             ; preds = %2125
  %2132 = landingpad { ptr, i32 }
          cleanup
  br label %2138

2133:                                             ; preds = %2128, %2126
  %2134 = landingpad { ptr, i32 }
          cleanup
  br label %2137

2135:                                             ; preds = %2129
  %2136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #11
  br label %2137

2137:                                             ; preds = %2135, %2133
  %.pn811 = phi { ptr, i32 } [ %2136, %2135 ], [ %2134, %2133 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %376) #11
  br label %2138

2138:                                             ; preds = %2137, %2131
  %.pn811.pn = phi { ptr, i32 } [ %.pn811, %2137 ], [ %2132, %2131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %376) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #11
  br label %2146

2139:                                             ; preds = %2117, %2130
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %372) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %372) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %378) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %379) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %380) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %380, ptr noundef nonnull @.str.214)
          to label %2140 unwind label %2147

2140:                                             ; preds = %2139
  %2141 = invoke noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %380)
          to label %2142 unwind label %2147

2142:                                             ; preds = %2140
  %2143 = zext i1 %2141 to i8
  store i8 %2143, ptr %379, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef nonnull align 1 dereferenceable(1) %379, ptr noundef null)
          to label %2144 unwind label %2147

2144:                                             ; preds = %2142
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %380) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %379) #11
  %2145 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %378)
  br i1 %2145, label %2166, label %2149

2146:                                             ; preds = %2138, %2124
  %.pn811.pn.pn = phi { ptr, i32 } [ %.pn811.pn, %2138 ], [ %.pn809, %2124 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %372) #11
  br label %3349

2147:                                             ; preds = %2142, %2140, %2139
  %2148 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %380) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %379) #11
  br label %2174

2149:                                             ; preds = %2144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %381) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %2150 unwind label %2155

2150:                                             ; preds = %2149
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %382) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %383) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %383, ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef nonnull @.str.339, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2151 unwind label %2157

2151:                                             ; preds = %2150
  %2152 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %383) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %382, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 343, ptr noundef %2152)
          to label %2153 unwind label %2159

2153:                                             ; preds = %2151
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %2154 unwind label %2161

2154:                                             ; preds = %2153
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %382) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %383) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %382) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %381) #11
  br label %2166

2155:                                             ; preds = %2149
  %2156 = landingpad { ptr, i32 }
          cleanup
  br label %2165

2157:                                             ; preds = %2150
  %2158 = landingpad { ptr, i32 }
          cleanup
  br label %2164

2159:                                             ; preds = %2151
  %2160 = landingpad { ptr, i32 }
          cleanup
  br label %2163

2161:                                             ; preds = %2153
  %2162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %382) #11
  br label %2163

2163:                                             ; preds = %2161, %2159
  %.pn815 = phi { ptr, i32 } [ %2162, %2161 ], [ %2160, %2159 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #11
  br label %2164

2164:                                             ; preds = %2163, %2157
  %.pn815.pn = phi { ptr, i32 } [ %.pn815, %2163 ], [ %2158, %2157 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %383) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %382) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #11
  br label %2165

2165:                                             ; preds = %2164, %2155
  %.pn815.pn.pn = phi { ptr, i32 } [ %.pn815.pn, %2164 ], [ %2156, %2155 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %381) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %378) #11
  br label %2174

2166:                                             ; preds = %2144, %2154
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %378) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %378) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %384) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %385) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %386) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %386, ptr noundef nonnull @.str.218)
          to label %2167 unwind label %2175

2167:                                             ; preds = %2166
  %2168 = invoke noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %386)
          to label %2169 unwind label %2175

2169:                                             ; preds = %2167
  %2170 = xor i1 %2168, true
  %2171 = zext i1 %2170 to i8
  store i8 %2171, ptr %385, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %384, ptr noundef nonnull align 1 dereferenceable(1) %385, ptr noundef null)
          to label %2172 unwind label %2175

2172:                                             ; preds = %2169
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %386) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %385) #11
  %2173 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %384)
  br i1 %2173, label %2194, label %2177

2174:                                             ; preds = %2165, %2147
  %.pn815.pn.pn.pn = phi { ptr, i32 } [ %.pn815.pn.pn, %2165 ], [ %2148, %2147 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %378) #11
  br label %3349

2175:                                             ; preds = %2169, %2167, %2166
  %2176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %386) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %385) #11
  br label %2201

2177:                                             ; preds = %2172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %387) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %387)
          to label %2178 unwind label %2183

2178:                                             ; preds = %2177
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %388) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %389) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %389, ptr noundef nonnull align 8 dereferenceable(16) %384, ptr noundef nonnull @.str.340, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2179 unwind label %2185

2179:                                             ; preds = %2178
  %2180 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %389) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %388, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 344, ptr noundef %2180)
          to label %2181 unwind label %2187

2181:                                             ; preds = %2179
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull align 8 dereferenceable(8) %387)
          to label %2182 unwind label %2189

2182:                                             ; preds = %2181
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %388) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %389) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %388) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %387) #11
  br label %2194

2183:                                             ; preds = %2177
  %2184 = landingpad { ptr, i32 }
          cleanup
  br label %2193

2185:                                             ; preds = %2178
  %2186 = landingpad { ptr, i32 }
          cleanup
  br label %2192

2187:                                             ; preds = %2179
  %2188 = landingpad { ptr, i32 }
          cleanup
  br label %2191

2189:                                             ; preds = %2181
  %2190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %388) #11
  br label %2191

2191:                                             ; preds = %2189, %2187
  %.pn820 = phi { ptr, i32 } [ %2190, %2189 ], [ %2188, %2187 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #11
  br label %2192

2192:                                             ; preds = %2191, %2185
  %.pn820.pn = phi { ptr, i32 } [ %.pn820, %2191 ], [ %2186, %2185 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %389) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %388) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #11
  br label %2193

2193:                                             ; preds = %2192, %2183
  %.pn820.pn.pn = phi { ptr, i32 } [ %.pn820.pn, %2192 ], [ %2184, %2183 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %387) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %384) #11
  br label %2201

2194:                                             ; preds = %2172, %2182
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %384) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %384) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %390) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %391) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %392) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %392, ptr noundef nonnull @.str.218)
          to label %2195 unwind label %2202

2195:                                             ; preds = %2194
  %2196 = invoke noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %392)
          to label %2197 unwind label %2202

2197:                                             ; preds = %2195
  %2198 = zext i1 %2196 to i8
  store i8 %2198, ptr %391, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %390, ptr noundef nonnull align 1 dereferenceable(1) %391, ptr noundef null)
          to label %2199 unwind label %2202

2199:                                             ; preds = %2197
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %392) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %391) #11
  %2200 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %390)
  br i1 %2200, label %2221, label %2204

2201:                                             ; preds = %2193, %2175
  %.pn820.pn.pn.pn = phi { ptr, i32 } [ %.pn820.pn.pn, %2193 ], [ %2176, %2175 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %384) #11
  br label %3349

2202:                                             ; preds = %2197, %2195, %2194
  %2203 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %392) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %391) #11
  br label %2229

2204:                                             ; preds = %2199
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %393) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %2205 unwind label %2210

2205:                                             ; preds = %2204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %394) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %395) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %395, ptr noundef nonnull align 8 dereferenceable(16) %390, ptr noundef nonnull @.str.341, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2206 unwind label %2212

2206:                                             ; preds = %2205
  %2207 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %395) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %394, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 346, ptr noundef %2207)
          to label %2208 unwind label %2214

2208:                                             ; preds = %2206
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %2209 unwind label %2216

2209:                                             ; preds = %2208
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %395) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %393) #11
  br label %2221

2210:                                             ; preds = %2204
  %2211 = landingpad { ptr, i32 }
          cleanup
  br label %2220

2212:                                             ; preds = %2205
  %2213 = landingpad { ptr, i32 }
          cleanup
  br label %2219

2214:                                             ; preds = %2206
  %2215 = landingpad { ptr, i32 }
          cleanup
  br label %2218

2216:                                             ; preds = %2208
  %2217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #11
  br label %2218

2218:                                             ; preds = %2216, %2214
  %.pn825 = phi { ptr, i32 } [ %2217, %2216 ], [ %2215, %2214 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #11
  br label %2219

2219:                                             ; preds = %2218, %2212
  %.pn825.pn = phi { ptr, i32 } [ %.pn825, %2218 ], [ %2213, %2212 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %395) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #11
  br label %2220

2220:                                             ; preds = %2219, %2210
  %.pn825.pn.pn = phi { ptr, i32 } [ %.pn825.pn, %2219 ], [ %2211, %2210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %393) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %390) #11
  br label %2229

2221:                                             ; preds = %2199, %2209
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %390) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %390) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %396) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %397) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %398) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %398, ptr noundef nonnull @.str.214)
          to label %2222 unwind label %2230

2222:                                             ; preds = %2221
  %2223 = invoke noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %398)
          to label %2224 unwind label %2230

2224:                                             ; preds = %2222
  %2225 = xor i1 %2223, true
  %2226 = zext i1 %2225 to i8
  store i8 %2226, ptr %397, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %396, ptr noundef nonnull align 1 dereferenceable(1) %397, ptr noundef null)
          to label %2227 unwind label %2230

2227:                                             ; preds = %2224
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %398) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %397) #11
  %2228 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %396)
  br i1 %2228, label %2249, label %2232

2229:                                             ; preds = %2220, %2202
  %.pn825.pn.pn.pn = phi { ptr, i32 } [ %.pn825.pn.pn, %2220 ], [ %2203, %2202 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %390) #11
  br label %3349

2230:                                             ; preds = %2224, %2222, %2221
  %2231 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %398) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %397) #11
  br label %2258

2232:                                             ; preds = %2227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %399) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %399)
          to label %2233 unwind label %2238

2233:                                             ; preds = %2232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %400) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %401) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %401, ptr noundef nonnull align 8 dereferenceable(16) %396, ptr noundef nonnull @.str.342, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2234 unwind label %2240

2234:                                             ; preds = %2233
  %2235 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %401) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %400, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 347, ptr noundef %2235)
          to label %2236 unwind label %2242

2236:                                             ; preds = %2234
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull align 8 dereferenceable(8) %399)
          to label %2237 unwind label %2244

2237:                                             ; preds = %2236
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %400) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %401) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %400) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %399) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %399) #11
  br label %2249

2238:                                             ; preds = %2232
  %2239 = landingpad { ptr, i32 }
          cleanup
  br label %2248

2240:                                             ; preds = %2233
  %2241 = landingpad { ptr, i32 }
          cleanup
  br label %2247

2242:                                             ; preds = %2234
  %2243 = landingpad { ptr, i32 }
          cleanup
  br label %2246

2244:                                             ; preds = %2236
  %2245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %400) #11
  br label %2246

2246:                                             ; preds = %2244, %2242
  %.pn830 = phi { ptr, i32 } [ %2245, %2244 ], [ %2243, %2242 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #11
  br label %2247

2247:                                             ; preds = %2246, %2240
  %.pn830.pn = phi { ptr, i32 } [ %.pn830, %2246 ], [ %2241, %2240 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %401) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %400) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %399) #11
  br label %2248

2248:                                             ; preds = %2247, %2238
  %.pn830.pn.pn = phi { ptr, i32 } [ %.pn830.pn, %2247 ], [ %2239, %2238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %399) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %396) #11
  br label %2258

2249:                                             ; preds = %2227, %2237
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %396) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %396) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %402) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %403) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %404) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %404, ptr noundef nonnull @.str.10)
          to label %2250 unwind label %2259

2250:                                             ; preds = %2249
  %2251 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %404)
          to label %2252 unwind label %2259

2252:                                             ; preds = %2250
  %2253 = invoke noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2251)
          to label %2254 unwind label %2259

2254:                                             ; preds = %2252
  %2255 = zext i1 %2253 to i8
  store i8 %2255, ptr %403, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %402, ptr noundef nonnull align 1 dereferenceable(1) %403, ptr noundef null)
          to label %2256 unwind label %2259

2256:                                             ; preds = %2254
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %404) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %403) #11
  %2257 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %402)
  br i1 %2257, label %2278, label %2261

2258:                                             ; preds = %2248, %2230
  %.pn830.pn.pn.pn = phi { ptr, i32 } [ %.pn830.pn.pn, %2248 ], [ %2231, %2230 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %396) #11
  br label %3349

2259:                                             ; preds = %2254, %2252, %2250, %2249
  %2260 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %404) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %403) #11
  br label %2288

2261:                                             ; preds = %2256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %405) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405)
          to label %2262 unwind label %2267

2262:                                             ; preds = %2261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %406) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %407) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %407, ptr noundef nonnull align 8 dereferenceable(16) %402, ptr noundef nonnull @.str.343, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2263 unwind label %2269

2263:                                             ; preds = %2262
  %2264 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %407) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %406, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 349, ptr noundef %2264)
          to label %2265 unwind label %2271

2265:                                             ; preds = %2263
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull align 8 dereferenceable(8) %405)
          to label %2266 unwind label %2273

2266:                                             ; preds = %2265
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %406) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %406) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %405) #11
  br label %2278

2267:                                             ; preds = %2261
  %2268 = landingpad { ptr, i32 }
          cleanup
  br label %2277

2269:                                             ; preds = %2262
  %2270 = landingpad { ptr, i32 }
          cleanup
  br label %2276

2271:                                             ; preds = %2263
  %2272 = landingpad { ptr, i32 }
          cleanup
  br label %2275

2273:                                             ; preds = %2265
  %2274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %406) #11
  br label %2275

2275:                                             ; preds = %2273, %2271
  %.pn835 = phi { ptr, i32 } [ %2274, %2273 ], [ %2272, %2271 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #11
  br label %2276

2276:                                             ; preds = %2275, %2269
  %.pn835.pn = phi { ptr, i32 } [ %.pn835, %2275 ], [ %2270, %2269 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %406) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #11
  br label %2277

2277:                                             ; preds = %2276, %2267
  %.pn835.pn.pn = phi { ptr, i32 } [ %.pn835.pn, %2276 ], [ %2268, %2267 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %405) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %402) #11
  br label %2288

2278:                                             ; preds = %2256, %2266
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %402) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %402) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %408) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %409) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %410) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %410, ptr noundef nonnull @.str.344)
          to label %2279 unwind label %2289

2279:                                             ; preds = %2278
  %2280 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %410)
          to label %2281 unwind label %2289

2281:                                             ; preds = %2279
  %2282 = invoke noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2280)
          to label %2283 unwind label %2289

2283:                                             ; preds = %2281
  %2284 = xor i1 %2282, true
  %2285 = zext i1 %2284 to i8
  store i8 %2285, ptr %409, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %408, ptr noundef nonnull align 1 dereferenceable(1) %409, ptr noundef null)
          to label %2286 unwind label %2289

2286:                                             ; preds = %2283
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %410) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %409) #11
  %2287 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %408)
  br i1 %2287, label %2308, label %2291

2288:                                             ; preds = %2277, %2259
  %.pn835.pn.pn.pn = phi { ptr, i32 } [ %.pn835.pn.pn, %2277 ], [ %2260, %2259 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %402) #11
  br label %3349

2289:                                             ; preds = %2283, %2281, %2279, %2278
  %2290 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %410) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %409) #11
  br label %2317

2291:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %411) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %411)
          to label %2292 unwind label %2297

2292:                                             ; preds = %2291
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %412) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %413) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %413, ptr noundef nonnull align 8 dereferenceable(16) %408, ptr noundef nonnull @.str.345, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2293 unwind label %2299

2293:                                             ; preds = %2292
  %2294 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %413) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %412, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 350, ptr noundef %2294)
          to label %2295 unwind label %2301

2295:                                             ; preds = %2293
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(8) %411)
          to label %2296 unwind label %2303

2296:                                             ; preds = %2295
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %412) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %413) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %412) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %411) #11
  br label %2308

2297:                                             ; preds = %2291
  %2298 = landingpad { ptr, i32 }
          cleanup
  br label %2307

2299:                                             ; preds = %2292
  %2300 = landingpad { ptr, i32 }
          cleanup
  br label %2306

2301:                                             ; preds = %2293
  %2302 = landingpad { ptr, i32 }
          cleanup
  br label %2305

2303:                                             ; preds = %2295
  %2304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %412) #11
  br label %2305

2305:                                             ; preds = %2303, %2301
  %.pn840 = phi { ptr, i32 } [ %2304, %2303 ], [ %2302, %2301 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #11
  br label %2306

2306:                                             ; preds = %2305, %2299
  %.pn840.pn = phi { ptr, i32 } [ %.pn840, %2305 ], [ %2300, %2299 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %413) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %412) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #11
  br label %2307

2307:                                             ; preds = %2306, %2297
  %.pn840.pn.pn = phi { ptr, i32 } [ %.pn840.pn, %2306 ], [ %2298, %2297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %411) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %408) #11
  br label %2317

2308:                                             ; preds = %2286, %2296
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %408) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %408) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %414) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %415) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %416) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %416, ptr noundef nonnull @.str.344)
          to label %2309 unwind label %2318

2309:                                             ; preds = %2308
  %2310 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %416)
          to label %2311 unwind label %2318

2311:                                             ; preds = %2309
  %2312 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2310)
          to label %2313 unwind label %2318

2313:                                             ; preds = %2311
  %2314 = zext i1 %2312 to i8
  store i8 %2314, ptr %415, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %414, ptr noundef nonnull align 1 dereferenceable(1) %415, ptr noundef null)
          to label %2315 unwind label %2318

2315:                                             ; preds = %2313
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %416) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %415) #11
  %2316 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %414)
  br i1 %2316, label %2337, label %2320

2317:                                             ; preds = %2307, %2289
  %.pn840.pn.pn.pn = phi { ptr, i32 } [ %.pn840.pn.pn, %2307 ], [ %2290, %2289 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %408) #11
  br label %3349

2318:                                             ; preds = %2313, %2311, %2309, %2308
  %2319 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %416) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %415) #11
  br label %2347

2320:                                             ; preds = %2315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %417) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %2321 unwind label %2326

2321:                                             ; preds = %2320
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %418) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %419) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %419, ptr noundef nonnull align 8 dereferenceable(16) %414, ptr noundef nonnull @.str.346, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2322 unwind label %2328

2322:                                             ; preds = %2321
  %2323 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %419) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %418, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 352, ptr noundef %2323)
          to label %2324 unwind label %2330

2324:                                             ; preds = %2322
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %418, ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %2325 unwind label %2332

2325:                                             ; preds = %2324
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %418) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %419) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %418) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %417) #11
  br label %2337

2326:                                             ; preds = %2320
  %2327 = landingpad { ptr, i32 }
          cleanup
  br label %2336

2328:                                             ; preds = %2321
  %2329 = landingpad { ptr, i32 }
          cleanup
  br label %2335

2330:                                             ; preds = %2322
  %2331 = landingpad { ptr, i32 }
          cleanup
  br label %2334

2332:                                             ; preds = %2324
  %2333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %418) #11
  br label %2334

2334:                                             ; preds = %2332, %2330
  %.pn845 = phi { ptr, i32 } [ %2333, %2332 ], [ %2331, %2330 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #11
  br label %2335

2335:                                             ; preds = %2334, %2328
  %.pn845.pn = phi { ptr, i32 } [ %.pn845, %2334 ], [ %2329, %2328 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %419) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %418) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #11
  br label %2336

2336:                                             ; preds = %2335, %2326
  %.pn845.pn.pn = phi { ptr, i32 } [ %.pn845.pn, %2335 ], [ %2327, %2326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %417) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %414) #11
  br label %2347

2337:                                             ; preds = %2315, %2325
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %414) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %414) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %420) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %421) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %422) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %422, ptr noundef nonnull @.str.10)
          to label %2338 unwind label %2348

2338:                                             ; preds = %2337
  %2339 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %422)
          to label %2340 unwind label %2348

2340:                                             ; preds = %2338
  %2341 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2339)
          to label %2342 unwind label %2348

2342:                                             ; preds = %2340
  %2343 = xor i1 %2341, true
  %2344 = zext i1 %2343 to i8
  store i8 %2344, ptr %421, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %420, ptr noundef nonnull align 1 dereferenceable(1) %421, ptr noundef null)
          to label %2345 unwind label %2348

2345:                                             ; preds = %2342
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %422) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %421) #11
  %2346 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %420)
  br i1 %2346, label %2367, label %2350

2347:                                             ; preds = %2336, %2318
  %.pn845.pn.pn.pn = phi { ptr, i32 } [ %.pn845.pn.pn, %2336 ], [ %2319, %2318 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %414) #11
  br label %3349

2348:                                             ; preds = %2342, %2340, %2338, %2337
  %2349 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %422) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %421) #11
  br label %2376

2350:                                             ; preds = %2345
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %423) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %423)
          to label %2351 unwind label %2356

2351:                                             ; preds = %2350
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %424) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %425) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %425, ptr noundef nonnull align 8 dereferenceable(16) %420, ptr noundef nonnull @.str.347, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2352 unwind label %2358

2352:                                             ; preds = %2351
  %2353 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %425) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %424, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 353, ptr noundef %2353)
          to label %2354 unwind label %2360

2354:                                             ; preds = %2352
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef nonnull align 8 dereferenceable(8) %423)
          to label %2355 unwind label %2362

2355:                                             ; preds = %2354
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %424) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %425) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %424) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %423) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %423) #11
  br label %2367

2356:                                             ; preds = %2350
  %2357 = landingpad { ptr, i32 }
          cleanup
  br label %2366

2358:                                             ; preds = %2351
  %2359 = landingpad { ptr, i32 }
          cleanup
  br label %2365

2360:                                             ; preds = %2352
  %2361 = landingpad { ptr, i32 }
          cleanup
  br label %2364

2362:                                             ; preds = %2354
  %2363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %424) #11
  br label %2364

2364:                                             ; preds = %2362, %2360
  %.pn850 = phi { ptr, i32 } [ %2363, %2362 ], [ %2361, %2360 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #11
  br label %2365

2365:                                             ; preds = %2364, %2358
  %.pn850.pn = phi { ptr, i32 } [ %.pn850, %2364 ], [ %2359, %2358 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %425) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %424) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %423) #11
  br label %2366

2366:                                             ; preds = %2365, %2356
  %.pn850.pn.pn = phi { ptr, i32 } [ %.pn850.pn, %2365 ], [ %2357, %2356 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %423) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #11
  br label %2376

2367:                                             ; preds = %2345, %2355
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %420) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %420) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %426) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %427) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %428) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %428, ptr noundef nonnull @.str.348)
          to label %2368 unwind label %2377

2368:                                             ; preds = %2367
  %2369 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %428)
          to label %2370 unwind label %2377

2370:                                             ; preds = %2368
  %2371 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2369)
          to label %2372 unwind label %2377

2372:                                             ; preds = %2370
  %2373 = zext i1 %2371 to i8
  store i8 %2373, ptr %427, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %426, ptr noundef nonnull align 1 dereferenceable(1) %427, ptr noundef null)
          to label %2374 unwind label %2377

2374:                                             ; preds = %2372
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %428) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %427) #11
  %2375 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %426)
  br i1 %2375, label %2396, label %2379

2376:                                             ; preds = %2366, %2348
  %.pn850.pn.pn.pn = phi { ptr, i32 } [ %.pn850.pn.pn, %2366 ], [ %2349, %2348 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %420) #11
  br label %3349

2377:                                             ; preds = %2372, %2370, %2368, %2367
  %2378 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %428) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %427) #11
  br label %2406

2379:                                             ; preds = %2374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %429) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %429)
          to label %2380 unwind label %2385

2380:                                             ; preds = %2379
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %430) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %431) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %431, ptr noundef nonnull align 8 dereferenceable(16) %426, ptr noundef nonnull @.str.349, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2381 unwind label %2387

2381:                                             ; preds = %2380
  %2382 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %431) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %430, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 355, ptr noundef %2382)
          to label %2383 unwind label %2389

2383:                                             ; preds = %2381
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef nonnull align 8 dereferenceable(8) %429)
          to label %2384 unwind label %2391

2384:                                             ; preds = %2383
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %430) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %430) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %429) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %429) #11
  br label %2396

2385:                                             ; preds = %2379
  %2386 = landingpad { ptr, i32 }
          cleanup
  br label %2395

2387:                                             ; preds = %2380
  %2388 = landingpad { ptr, i32 }
          cleanup
  br label %2394

2389:                                             ; preds = %2381
  %2390 = landingpad { ptr, i32 }
          cleanup
  br label %2393

2391:                                             ; preds = %2383
  %2392 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %430) #11
  br label %2393

2393:                                             ; preds = %2391, %2389
  %.pn855 = phi { ptr, i32 } [ %2392, %2391 ], [ %2390, %2389 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #11
  br label %2394

2394:                                             ; preds = %2393, %2387
  %.pn855.pn = phi { ptr, i32 } [ %.pn855, %2393 ], [ %2388, %2387 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %431) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %430) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %429) #11
  br label %2395

2395:                                             ; preds = %2394, %2385
  %.pn855.pn.pn = phi { ptr, i32 } [ %.pn855.pn, %2394 ], [ %2386, %2385 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %429) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %426) #11
  br label %2406

2396:                                             ; preds = %2374, %2384
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %426) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %426) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %432) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %433) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %434) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %434, ptr noundef nonnull @.str.10)
          to label %2397 unwind label %2407

2397:                                             ; preds = %2396
  %2398 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %434)
          to label %2399 unwind label %2407

2399:                                             ; preds = %2397
  %2400 = invoke noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24) %2398)
          to label %2401 unwind label %2407

2401:                                             ; preds = %2399
  %2402 = xor i1 %2400, true
  %2403 = zext i1 %2402 to i8
  store i8 %2403, ptr %433, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %432, ptr noundef nonnull align 1 dereferenceable(1) %433, ptr noundef null)
          to label %2404 unwind label %2407

2404:                                             ; preds = %2401
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %434) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %433) #11
  %2405 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %432)
  br i1 %2405, label %2426, label %2409

2406:                                             ; preds = %2395, %2377
  %.pn855.pn.pn.pn = phi { ptr, i32 } [ %.pn855.pn.pn, %2395 ], [ %2378, %2377 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %426) #11
  br label %3349

2407:                                             ; preds = %2401, %2399, %2397, %2396
  %2408 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %434) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %433) #11
  br label %2435

2409:                                             ; preds = %2404
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %435) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %2410 unwind label %2415

2410:                                             ; preds = %2409
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %436) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %437) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %437, ptr noundef nonnull align 8 dereferenceable(16) %432, ptr noundef nonnull @.str.350, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2411 unwind label %2417

2411:                                             ; preds = %2410
  %2412 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %437) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %436, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 356, ptr noundef %2412)
          to label %2413 unwind label %2419

2413:                                             ; preds = %2411
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %436, ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %2414 unwind label %2421

2414:                                             ; preds = %2413
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %436) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %437) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %437) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %436) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %435) #11
  br label %2426

2415:                                             ; preds = %2409
  %2416 = landingpad { ptr, i32 }
          cleanup
  br label %2425

2417:                                             ; preds = %2410
  %2418 = landingpad { ptr, i32 }
          cleanup
  br label %2424

2419:                                             ; preds = %2411
  %2420 = landingpad { ptr, i32 }
          cleanup
  br label %2423

2421:                                             ; preds = %2413
  %2422 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %436) #11
  br label %2423

2423:                                             ; preds = %2421, %2419
  %.pn860 = phi { ptr, i32 } [ %2422, %2421 ], [ %2420, %2419 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %437) #11
  br label %2424

2424:                                             ; preds = %2423, %2417
  %.pn860.pn = phi { ptr, i32 } [ %.pn860, %2423 ], [ %2418, %2417 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %437) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %436) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #11
  br label %2425

2425:                                             ; preds = %2424, %2415
  %.pn860.pn.pn = phi { ptr, i32 } [ %.pn860.pn, %2424 ], [ %2416, %2415 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %435) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %432) #11
  br label %2435

2426:                                             ; preds = %2404, %2414
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %432) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %432) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %438) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %439) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %440) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %440, ptr noundef nonnull @.str.351)
          to label %2427 unwind label %2436

2427:                                             ; preds = %2426
  %2428 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %440)
          to label %2429 unwind label %2436

2429:                                             ; preds = %2427
  %2430 = invoke noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24) %2428)
          to label %2431 unwind label %2436

2431:                                             ; preds = %2429
  %2432 = zext i1 %2430 to i8
  store i8 %2432, ptr %439, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %438, ptr noundef nonnull align 1 dereferenceable(1) %439, ptr noundef null)
          to label %2433 unwind label %2436

2433:                                             ; preds = %2431
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %440) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %439) #11
  %2434 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %438)
  br i1 %2434, label %2455, label %2438

2435:                                             ; preds = %2425, %2407
  %.pn860.pn.pn.pn = phi { ptr, i32 } [ %.pn860.pn.pn, %2425 ], [ %2408, %2407 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %432) #11
  br label %3349

2436:                                             ; preds = %2431, %2429, %2427, %2426
  %2437 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %440) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %439) #11
  br label %2465

2438:                                             ; preds = %2433
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %441) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441)
          to label %2439 unwind label %2444

2439:                                             ; preds = %2438
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %442) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %443) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %443, ptr noundef nonnull align 8 dereferenceable(16) %438, ptr noundef nonnull @.str.352, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2440 unwind label %2446

2440:                                             ; preds = %2439
  %2441 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %443) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %442, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 358, ptr noundef %2441)
          to label %2442 unwind label %2448

2442:                                             ; preds = %2440
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull align 8 dereferenceable(8) %441)
          to label %2443 unwind label %2450

2443:                                             ; preds = %2442
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %442) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %443) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %443) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %442) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #11
  br label %2455

2444:                                             ; preds = %2438
  %2445 = landingpad { ptr, i32 }
          cleanup
  br label %2454

2446:                                             ; preds = %2439
  %2447 = landingpad { ptr, i32 }
          cleanup
  br label %2453

2448:                                             ; preds = %2440
  %2449 = landingpad { ptr, i32 }
          cleanup
  br label %2452

2450:                                             ; preds = %2442
  %2451 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %442) #11
  br label %2452

2452:                                             ; preds = %2450, %2448
  %.pn865 = phi { ptr, i32 } [ %2451, %2450 ], [ %2449, %2448 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %443) #11
  br label %2453

2453:                                             ; preds = %2452, %2446
  %.pn865.pn = phi { ptr, i32 } [ %.pn865, %2452 ], [ %2447, %2446 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %443) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %442) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #11
  br label %2454

2454:                                             ; preds = %2453, %2444
  %.pn865.pn.pn = phi { ptr, i32 } [ %.pn865.pn, %2453 ], [ %2445, %2444 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %438) #11
  br label %2465

2455:                                             ; preds = %2433, %2443
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %438) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %438) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %444) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %445) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %446) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %446, ptr noundef nonnull @.str.353)
          to label %2456 unwind label %2466

2456:                                             ; preds = %2455
  %2457 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %446)
          to label %2458 unwind label %2466

2458:                                             ; preds = %2456
  %2459 = invoke noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24) %2457)
          to label %2460 unwind label %2466

2460:                                             ; preds = %2458
  %2461 = xor i1 %2459, true
  %2462 = zext i1 %2461 to i8
  store i8 %2462, ptr %445, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %444, ptr noundef nonnull align 1 dereferenceable(1) %445, ptr noundef null)
          to label %2463 unwind label %2466

2463:                                             ; preds = %2460
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %446) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %445) #11
  %2464 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %444)
  br i1 %2464, label %2485, label %2468

2465:                                             ; preds = %2454, %2436
  %.pn865.pn.pn.pn = phi { ptr, i32 } [ %.pn865.pn.pn, %2454 ], [ %2437, %2436 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %438) #11
  br label %3349

2466:                                             ; preds = %2460, %2458, %2456, %2455
  %2467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %446) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %445) #11
  br label %2494

2468:                                             ; preds = %2463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %447) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %447)
          to label %2469 unwind label %2474

2469:                                             ; preds = %2468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %448) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %449) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %449, ptr noundef nonnull align 8 dereferenceable(16) %444, ptr noundef nonnull @.str.354, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2470 unwind label %2476

2470:                                             ; preds = %2469
  %2471 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %449) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %448, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 359, ptr noundef %2471)
          to label %2472 unwind label %2478

2472:                                             ; preds = %2470
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %448, ptr noundef nonnull align 8 dereferenceable(8) %447)
          to label %2473 unwind label %2480

2473:                                             ; preds = %2472
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %448) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %449) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %449) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %448) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %447) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %447) #11
  br label %2485

2474:                                             ; preds = %2468
  %2475 = landingpad { ptr, i32 }
          cleanup
  br label %2484

2476:                                             ; preds = %2469
  %2477 = landingpad { ptr, i32 }
          cleanup
  br label %2483

2478:                                             ; preds = %2470
  %2479 = landingpad { ptr, i32 }
          cleanup
  br label %2482

2480:                                             ; preds = %2472
  %2481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %448) #11
  br label %2482

2482:                                             ; preds = %2480, %2478
  %.pn870 = phi { ptr, i32 } [ %2481, %2480 ], [ %2479, %2478 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %449) #11
  br label %2483

2483:                                             ; preds = %2482, %2476
  %.pn870.pn = phi { ptr, i32 } [ %.pn870, %2482 ], [ %2477, %2476 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %449) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %448) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %447) #11
  br label %2484

2484:                                             ; preds = %2483, %2474
  %.pn870.pn.pn = phi { ptr, i32 } [ %.pn870.pn, %2483 ], [ %2475, %2474 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %447) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %444) #11
  br label %2494

2485:                                             ; preds = %2463, %2473
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %444) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %444) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %450) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %451) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %452) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %452, ptr noundef nonnull @.str.355)
          to label %2486 unwind label %2495

2486:                                             ; preds = %2485
  %2487 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %452)
          to label %2488 unwind label %2495

2488:                                             ; preds = %2486
  %2489 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %2487)
          to label %2490 unwind label %2495

2490:                                             ; preds = %2488
  %2491 = zext i1 %2489 to i8
  store i8 %2491, ptr %451, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %450, ptr noundef nonnull align 1 dereferenceable(1) %451, ptr noundef null)
          to label %2492 unwind label %2495

2492:                                             ; preds = %2490
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %452) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %451) #11
  %2493 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %450)
  br i1 %2493, label %2514, label %2497

2494:                                             ; preds = %2484, %2466
  %.pn870.pn.pn.pn = phi { ptr, i32 } [ %.pn870.pn.pn, %2484 ], [ %2467, %2466 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %444) #11
  br label %3349

2495:                                             ; preds = %2490, %2488, %2486, %2485
  %2496 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %452) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %451) #11
  br label %2524

2497:                                             ; preds = %2492
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %453) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %453)
          to label %2498 unwind label %2503

2498:                                             ; preds = %2497
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %454) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %455) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %455, ptr noundef nonnull align 8 dereferenceable(16) %450, ptr noundef nonnull @.str.356, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2499 unwind label %2505

2499:                                             ; preds = %2498
  %2500 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %455) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %454, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 361, ptr noundef %2500)
          to label %2501 unwind label %2507

2501:                                             ; preds = %2499
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(8) %453)
          to label %2502 unwind label %2509

2502:                                             ; preds = %2501
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %454) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %455) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %455) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %454) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %453) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %453) #11
  br label %2514

2503:                                             ; preds = %2497
  %2504 = landingpad { ptr, i32 }
          cleanup
  br label %2513

2505:                                             ; preds = %2498
  %2506 = landingpad { ptr, i32 }
          cleanup
  br label %2512

2507:                                             ; preds = %2499
  %2508 = landingpad { ptr, i32 }
          cleanup
  br label %2511

2509:                                             ; preds = %2501
  %2510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %454) #11
  br label %2511

2511:                                             ; preds = %2509, %2507
  %.pn875 = phi { ptr, i32 } [ %2510, %2509 ], [ %2508, %2507 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %455) #11
  br label %2512

2512:                                             ; preds = %2511, %2505
  %.pn875.pn = phi { ptr, i32 } [ %.pn875, %2511 ], [ %2506, %2505 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %455) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %454) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %453) #11
  br label %2513

2513:                                             ; preds = %2512, %2503
  %.pn875.pn.pn = phi { ptr, i32 } [ %.pn875.pn, %2512 ], [ %2504, %2503 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %453) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %450) #11
  br label %2524

2514:                                             ; preds = %2492, %2502
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %450) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %450) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %456) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %457) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %458) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %458, ptr noundef nonnull @.str.351)
          to label %2515 unwind label %2525

2515:                                             ; preds = %2514
  %2516 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %458)
          to label %2517 unwind label %2525

2517:                                             ; preds = %2515
  %2518 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %2516)
          to label %2519 unwind label %2525

2519:                                             ; preds = %2517
  %2520 = xor i1 %2518, true
  %2521 = zext i1 %2520 to i8
  store i8 %2521, ptr %457, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %456, ptr noundef nonnull align 1 dereferenceable(1) %457, ptr noundef null)
          to label %2522 unwind label %2525

2522:                                             ; preds = %2519
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %458) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %457) #11
  %2523 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %456)
  br i1 %2523, label %2544, label %2527

2524:                                             ; preds = %2513, %2495
  %.pn875.pn.pn.pn = phi { ptr, i32 } [ %.pn875.pn.pn, %2513 ], [ %2496, %2495 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %450) #11
  br label %3349

2525:                                             ; preds = %2519, %2517, %2515, %2514
  %2526 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %458) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %457) #11
  br label %2553

2527:                                             ; preds = %2522
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %459) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %459)
          to label %2528 unwind label %2533

2528:                                             ; preds = %2527
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %460) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %461) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %461, ptr noundef nonnull align 8 dereferenceable(16) %456, ptr noundef nonnull @.str.357, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2529 unwind label %2535

2529:                                             ; preds = %2528
  %2530 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %461) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %460, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 362, ptr noundef %2530)
          to label %2531 unwind label %2537

2531:                                             ; preds = %2529
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %460, ptr noundef nonnull align 8 dereferenceable(8) %459)
          to label %2532 unwind label %2539

2532:                                             ; preds = %2531
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %460) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %461) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %460) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %459) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %459) #11
  br label %2544

2533:                                             ; preds = %2527
  %2534 = landingpad { ptr, i32 }
          cleanup
  br label %2543

2535:                                             ; preds = %2528
  %2536 = landingpad { ptr, i32 }
          cleanup
  br label %2542

2537:                                             ; preds = %2529
  %2538 = landingpad { ptr, i32 }
          cleanup
  br label %2541

2539:                                             ; preds = %2531
  %2540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %460) #11
  br label %2541

2541:                                             ; preds = %2539, %2537
  %.pn880 = phi { ptr, i32 } [ %2540, %2539 ], [ %2538, %2537 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #11
  br label %2542

2542:                                             ; preds = %2541, %2535
  %.pn880.pn = phi { ptr, i32 } [ %.pn880, %2541 ], [ %2536, %2535 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %461) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %460) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %459) #11
  br label %2543

2543:                                             ; preds = %2542, %2533
  %.pn880.pn.pn = phi { ptr, i32 } [ %.pn880.pn, %2542 ], [ %2534, %2533 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %459) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %456) #11
  br label %2553

2544:                                             ; preds = %2522, %2532
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %456) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %456) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %462) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %463) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %464) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %464, ptr noundef nonnull @.str.355)
          to label %2545 unwind label %2554

2545:                                             ; preds = %2544
  %2546 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %464)
          to label %2547 unwind label %2554

2547:                                             ; preds = %2545
  %2548 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %2546)
          to label %2549 unwind label %2554

2549:                                             ; preds = %2547
  %2550 = zext i1 %2548 to i8
  store i8 %2550, ptr %463, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %462, ptr noundef nonnull align 1 dereferenceable(1) %463, ptr noundef null)
          to label %2551 unwind label %2554

2551:                                             ; preds = %2549
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %464) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %463) #11
  %2552 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %462)
  br i1 %2552, label %2573, label %2556

2553:                                             ; preds = %2543, %2525
  %.pn880.pn.pn.pn = phi { ptr, i32 } [ %.pn880.pn.pn, %2543 ], [ %2526, %2525 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %456) #11
  br label %3349

2554:                                             ; preds = %2549, %2547, %2545, %2544
  %2555 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %464) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %463) #11
  br label %2583

2556:                                             ; preds = %2551
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %465) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465)
          to label %2557 unwind label %2562

2557:                                             ; preds = %2556
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %466) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %467) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %467, ptr noundef nonnull align 8 dereferenceable(16) %462, ptr noundef nonnull @.str.356, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2558 unwind label %2564

2558:                                             ; preds = %2557
  %2559 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %467) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %466, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 364, ptr noundef %2559)
          to label %2560 unwind label %2566

2560:                                             ; preds = %2558
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(8) %465)
          to label %2561 unwind label %2568

2561:                                             ; preds = %2560
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %467) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %467) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %466) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %465) #11
  br label %2573

2562:                                             ; preds = %2556
  %2563 = landingpad { ptr, i32 }
          cleanup
  br label %2572

2564:                                             ; preds = %2557
  %2565 = landingpad { ptr, i32 }
          cleanup
  br label %2571

2566:                                             ; preds = %2558
  %2567 = landingpad { ptr, i32 }
          cleanup
  br label %2570

2568:                                             ; preds = %2560
  %2569 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #11
  br label %2570

2570:                                             ; preds = %2568, %2566
  %.pn885 = phi { ptr, i32 } [ %2569, %2568 ], [ %2567, %2566 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %467) #11
  br label %2571

2571:                                             ; preds = %2570, %2564
  %.pn885.pn = phi { ptr, i32 } [ %.pn885, %2570 ], [ %2565, %2564 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %467) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %466) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #11
  br label %2572

2572:                                             ; preds = %2571, %2562
  %.pn885.pn.pn = phi { ptr, i32 } [ %.pn885.pn, %2571 ], [ %2563, %2562 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %465) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %462) #11
  br label %2583

2573:                                             ; preds = %2551, %2561
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %462) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %462) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %468) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %469) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %470) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %470, ptr noundef nonnull @.str.351)
          to label %2574 unwind label %2584

2574:                                             ; preds = %2573
  %2575 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %470)
          to label %2576 unwind label %2584

2576:                                             ; preds = %2574
  %2577 = invoke noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24) %2575)
          to label %2578 unwind label %2584

2578:                                             ; preds = %2576
  %2579 = xor i1 %2577, true
  %2580 = zext i1 %2579 to i8
  store i8 %2580, ptr %469, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %468, ptr noundef nonnull align 1 dereferenceable(1) %469, ptr noundef null)
          to label %2581 unwind label %2584

2581:                                             ; preds = %2578
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %470) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %469) #11
  %2582 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %468)
  br i1 %2582, label %2603, label %2586

2583:                                             ; preds = %2572, %2554
  %.pn885.pn.pn.pn = phi { ptr, i32 } [ %.pn885.pn.pn, %2572 ], [ %2555, %2554 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %462) #11
  br label %3349

2584:                                             ; preds = %2578, %2576, %2574, %2573
  %2585 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %470) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %469) #11
  br label %2610

2586:                                             ; preds = %2581
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %471) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %471)
          to label %2587 unwind label %2592

2587:                                             ; preds = %2586
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %472) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %473) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %473, ptr noundef nonnull align 8 dereferenceable(16) %468, ptr noundef nonnull @.str.357, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2588 unwind label %2594

2588:                                             ; preds = %2587
  %2589 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %473) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %472, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 365, ptr noundef %2589)
          to label %2590 unwind label %2596

2590:                                             ; preds = %2588
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %471)
          to label %2591 unwind label %2598

2591:                                             ; preds = %2590
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %473) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %472) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %471) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %471) #11
  br label %2603

2592:                                             ; preds = %2586
  %2593 = landingpad { ptr, i32 }
          cleanup
  br label %2602

2594:                                             ; preds = %2587
  %2595 = landingpad { ptr, i32 }
          cleanup
  br label %2601

2596:                                             ; preds = %2588
  %2597 = landingpad { ptr, i32 }
          cleanup
  br label %2600

2598:                                             ; preds = %2590
  %2599 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #11
  br label %2600

2600:                                             ; preds = %2598, %2596
  %.pn890 = phi { ptr, i32 } [ %2599, %2598 ], [ %2597, %2596 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #11
  br label %2601

2601:                                             ; preds = %2600, %2594
  %.pn890.pn = phi { ptr, i32 } [ %.pn890, %2600 ], [ %2595, %2594 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %473) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %472) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %471) #11
  br label %2602

2602:                                             ; preds = %2601, %2592
  %.pn890.pn.pn = phi { ptr, i32 } [ %.pn890.pn, %2601 ], [ %2593, %2592 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %471) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %468) #11
  br label %2610

2603:                                             ; preds = %2581, %2591
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %468) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %468) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %474) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %475) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %476) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %476, ptr noundef nonnull @.str.358)
          to label %2604 unwind label %2611

2604:                                             ; preds = %2603
  %2605 = invoke noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %476)
          to label %2606 unwind label %2611

2606:                                             ; preds = %2604
  %2607 = zext i1 %2605 to i8
  store i8 %2607, ptr %475, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %474, ptr noundef nonnull align 1 dereferenceable(1) %475, ptr noundef null)
          to label %2608 unwind label %2611

2608:                                             ; preds = %2606
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %476) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %475) #11
  %2609 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %474)
  br i1 %2609, label %2630, label %2613

2610:                                             ; preds = %2602, %2584
  %.pn890.pn.pn.pn = phi { ptr, i32 } [ %.pn890.pn.pn, %2602 ], [ %2585, %2584 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %468) #11
  br label %3349

2611:                                             ; preds = %2606, %2604, %2603
  %2612 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %476) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %475) #11
  br label %2638

2613:                                             ; preds = %2608
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %477) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %2614 unwind label %2619

2614:                                             ; preds = %2613
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %478) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %479) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %479, ptr noundef nonnull align 8 dereferenceable(16) %474, ptr noundef nonnull @.str.359, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2615 unwind label %2621

2615:                                             ; preds = %2614
  %2616 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %479) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %478, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 367, ptr noundef %2616)
          to label %2617 unwind label %2623

2617:                                             ; preds = %2615
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %2618 unwind label %2625

2618:                                             ; preds = %2617
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %479) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %478) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %477) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %477) #11
  br label %2630

2619:                                             ; preds = %2613
  %2620 = landingpad { ptr, i32 }
          cleanup
  br label %2629

2621:                                             ; preds = %2614
  %2622 = landingpad { ptr, i32 }
          cleanup
  br label %2628

2623:                                             ; preds = %2615
  %2624 = landingpad { ptr, i32 }
          cleanup
  br label %2627

2625:                                             ; preds = %2617
  %2626 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #11
  br label %2627

2627:                                             ; preds = %2625, %2623
  %.pn895 = phi { ptr, i32 } [ %2626, %2625 ], [ %2624, %2623 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #11
  br label %2628

2628:                                             ; preds = %2627, %2621
  %.pn895.pn = phi { ptr, i32 } [ %.pn895, %2627 ], [ %2622, %2621 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %479) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %478) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %477) #11
  br label %2629

2629:                                             ; preds = %2628, %2619
  %.pn895.pn.pn = phi { ptr, i32 } [ %.pn895.pn, %2628 ], [ %2620, %2619 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %477) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %474) #11
  br label %2638

2630:                                             ; preds = %2608, %2618
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %474) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %474) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %480) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %481) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %482) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %482, ptr noundef nonnull @.str.353)
          to label %2631 unwind label %2639

2631:                                             ; preds = %2630
  %2632 = invoke noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %482)
          to label %2633 unwind label %2639

2633:                                             ; preds = %2631
  %2634 = xor i1 %2632, true
  %2635 = zext i1 %2634 to i8
  store i8 %2635, ptr %481, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %480, ptr noundef nonnull align 1 dereferenceable(1) %481, ptr noundef null)
          to label %2636 unwind label %2639

2636:                                             ; preds = %2633
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %482) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %481) #11
  %2637 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %480)
  br i1 %2637, label %2658, label %2641

2638:                                             ; preds = %2629, %2611
  %.pn895.pn.pn.pn = phi { ptr, i32 } [ %.pn895.pn.pn, %2629 ], [ %2612, %2611 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %474) #11
  br label %3349

2639:                                             ; preds = %2633, %2631, %2630
  %2640 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %482) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %481) #11
  br label %2667

2641:                                             ; preds = %2636
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %483) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %483)
          to label %2642 unwind label %2647

2642:                                             ; preds = %2641
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %484) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %485) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %485, ptr noundef nonnull align 8 dereferenceable(16) %480, ptr noundef nonnull @.str.360, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2643 unwind label %2649

2643:                                             ; preds = %2642
  %2644 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %485) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %484, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 368, ptr noundef %2644)
          to label %2645 unwind label %2651

2645:                                             ; preds = %2643
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef nonnull align 8 dereferenceable(8) %483)
          to label %2646 unwind label %2653

2646:                                             ; preds = %2645
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %484) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %485) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %485) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %484) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %483) #11
  br label %2658

2647:                                             ; preds = %2641
  %2648 = landingpad { ptr, i32 }
          cleanup
  br label %2657

2649:                                             ; preds = %2642
  %2650 = landingpad { ptr, i32 }
          cleanup
  br label %2656

2651:                                             ; preds = %2643
  %2652 = landingpad { ptr, i32 }
          cleanup
  br label %2655

2653:                                             ; preds = %2645
  %2654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %484) #11
  br label %2655

2655:                                             ; preds = %2653, %2651
  %.pn900 = phi { ptr, i32 } [ %2654, %2653 ], [ %2652, %2651 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %485) #11
  br label %2656

2656:                                             ; preds = %2655, %2649
  %.pn900.pn = phi { ptr, i32 } [ %.pn900, %2655 ], [ %2650, %2649 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %485) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %484) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #11
  br label %2657

2657:                                             ; preds = %2656, %2647
  %.pn900.pn.pn = phi { ptr, i32 } [ %.pn900.pn, %2656 ], [ %2648, %2647 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %483) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #11
  br label %2667

2658:                                             ; preds = %2636, %2646
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %480) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %486) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %487) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %488) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %488, ptr noundef nonnull @.str.361)
          to label %2659 unwind label %2668

2659:                                             ; preds = %2658
  %2660 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %488)
          to label %2661 unwind label %2668

2661:                                             ; preds = %2659
  %2662 = invoke noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24) %2660)
          to label %2663 unwind label %2668

2663:                                             ; preds = %2661
  %2664 = zext i1 %2662 to i8
  store i8 %2664, ptr %487, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %486, ptr noundef nonnull align 1 dereferenceable(1) %487, ptr noundef null)
          to label %2665 unwind label %2668

2665:                                             ; preds = %2663
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %488) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %487) #11
  %2666 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %486)
  br i1 %2666, label %2687, label %2670

2667:                                             ; preds = %2657, %2639
  %.pn900.pn.pn.pn = phi { ptr, i32 } [ %.pn900.pn.pn, %2657 ], [ %2640, %2639 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #11
  br label %3349

2668:                                             ; preds = %2663, %2661, %2659, %2658
  %2669 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %488) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %487) #11
  br label %2697

2670:                                             ; preds = %2665
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %489) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %489)
          to label %2671 unwind label %2676

2671:                                             ; preds = %2670
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %490) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %491) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %491, ptr noundef nonnull align 8 dereferenceable(16) %486, ptr noundef nonnull @.str.362, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2672 unwind label %2678

2672:                                             ; preds = %2671
  %2673 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %491) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %490, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 370, ptr noundef %2673)
          to label %2674 unwind label %2680

2674:                                             ; preds = %2672
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %490, ptr noundef nonnull align 8 dereferenceable(8) %489)
          to label %2675 unwind label %2682

2675:                                             ; preds = %2674
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %490) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %491) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %490) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %489) #11
  br label %2687

2676:                                             ; preds = %2670
  %2677 = landingpad { ptr, i32 }
          cleanup
  br label %2686

2678:                                             ; preds = %2671
  %2679 = landingpad { ptr, i32 }
          cleanup
  br label %2685

2680:                                             ; preds = %2672
  %2681 = landingpad { ptr, i32 }
          cleanup
  br label %2684

2682:                                             ; preds = %2674
  %2683 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %490) #11
  br label %2684

2684:                                             ; preds = %2682, %2680
  %.pn905 = phi { ptr, i32 } [ %2683, %2682 ], [ %2681, %2680 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #11
  br label %2685

2685:                                             ; preds = %2684, %2678
  %.pn905.pn = phi { ptr, i32 } [ %.pn905, %2684 ], [ %2679, %2678 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %491) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %490) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #11
  br label %2686

2686:                                             ; preds = %2685, %2676
  %.pn905.pn.pn = phi { ptr, i32 } [ %.pn905.pn, %2685 ], [ %2677, %2676 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %489) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %486) #11
  br label %2697

2687:                                             ; preds = %2665, %2675
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %486) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %486) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %492) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %493) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %494) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %494, ptr noundef nonnull @.str.363)
          to label %2688 unwind label %2698

2688:                                             ; preds = %2687
  %2689 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28) %494)
          to label %2690 unwind label %2698

2690:                                             ; preds = %2688
  %2691 = invoke noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24) %2689)
          to label %2692 unwind label %2698

2692:                                             ; preds = %2690
  %2693 = xor i1 %2691, true
  %2694 = zext i1 %2693 to i8
  store i8 %2694, ptr %493, align 1, !tbaa !10
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %492, ptr noundef nonnull align 1 dereferenceable(1) %493, ptr noundef null)
          to label %2695 unwind label %2698

2695:                                             ; preds = %2692
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %494) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %493) #11
  %2696 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %492)
  br i1 %2696, label %2717, label %2700

2697:                                             ; preds = %2686, %2668
  %.pn905.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn, %2686 ], [ %2669, %2668 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %486) #11
  br label %3349

2698:                                             ; preds = %2692, %2690, %2688, %2687
  %2699 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %494) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %493) #11
  br label %2722

2700:                                             ; preds = %2695
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %495) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %2701 unwind label %2706

2701:                                             ; preds = %2700
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %496) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %497) #11
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %497, ptr noundef nonnull align 8 dereferenceable(16) %492, ptr noundef nonnull @.str.364, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2702 unwind label %2708

2702:                                             ; preds = %2701
  %2703 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %497) #11
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %496, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 371, ptr noundef %2703)
          to label %2704 unwind label %2710

2704:                                             ; preds = %2702
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %2705 unwind label %2712

2705:                                             ; preds = %2704
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %496) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %497) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %497) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %496) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %495) #11
  br label %2717

2706:                                             ; preds = %2700
  %2707 = landingpad { ptr, i32 }
          cleanup
  br label %2716

2708:                                             ; preds = %2701
  %2709 = landingpad { ptr, i32 }
          cleanup
  br label %2715

2710:                                             ; preds = %2702
  %2711 = landingpad { ptr, i32 }
          cleanup
  br label %2714

2712:                                             ; preds = %2704
  %2713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %496) #11
  br label %2714

2714:                                             ; preds = %2712, %2710
  %.pn910 = phi { ptr, i32 } [ %2713, %2712 ], [ %2711, %2710 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %497) #11
  br label %2715

2715:                                             ; preds = %2714, %2708
  %.pn910.pn = phi { ptr, i32 } [ %.pn910, %2714 ], [ %2709, %2708 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %497) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %496) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #11
  br label %2716

2716:                                             ; preds = %2715, %2706
  %.pn910.pn.pn = phi { ptr, i32 } [ %.pn910.pn, %2715 ], [ %2707, %2706 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %495) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %492) #11
  br label %2722

2717:                                             ; preds = %2695, %2705
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %492) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %492) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %498) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %499) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %499, ptr noundef nonnull @.str.10)
          to label %2718 unwind label %2723

2718:                                             ; preds = %2717
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %500) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %500, ptr noundef nonnull @.str.10)
          to label %2719 unwind label %2725

2719:                                             ; preds = %2718
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %498, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %499, ptr noundef nonnull align 4 dereferenceable(28) %500)
          to label %2720 unwind label %2725

2720:                                             ; preds = %2719
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %500) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %499) #11
  %2721 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %498)
  br i1 %2721, label %2742, label %2728

2722:                                             ; preds = %2716, %2698
  %.pn910.pn.pn.pn = phi { ptr, i32 } [ %.pn910.pn.pn, %2716 ], [ %2699, %2698 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %492) #11
  br label %3349

2723:                                             ; preds = %2717
  %2724 = landingpad { ptr, i32 }
          cleanup
  br label %2727

2725:                                             ; preds = %2719, %2718
  %2726 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %500) #11
  br label %2727

2727:                                             ; preds = %2725, %2723
  %.pn915 = phi { ptr, i32 } [ %2726, %2725 ], [ %2724, %2723 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %499) #11
  br label %2747

2728:                                             ; preds = %2720
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %501) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %501)
          to label %2729 unwind label %2734

2729:                                             ; preds = %2728
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %502) #11
  %2730 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %498)
          to label %2731 unwind label %2736

2731:                                             ; preds = %2729
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %502, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 374, ptr noundef %2730)
          to label %2732 unwind label %2736

2732:                                             ; preds = %2731
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %502, ptr noundef nonnull align 8 dereferenceable(8) %501)
          to label %2733 unwind label %2738

2733:                                             ; preds = %2732
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %502) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %502) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %501) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %501) #11
  br label %2742

2734:                                             ; preds = %2728
  %2735 = landingpad { ptr, i32 }
          cleanup
  br label %2741

2736:                                             ; preds = %2731, %2729
  %2737 = landingpad { ptr, i32 }
          cleanup
  br label %2740

2738:                                             ; preds = %2732
  %2739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %502) #11
  br label %2740

2740:                                             ; preds = %2738, %2736
  %.pn917 = phi { ptr, i32 } [ %2739, %2738 ], [ %2737, %2736 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %502) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %501) #11
  br label %2741

2741:                                             ; preds = %2740, %2734
  %.pn917.pn = phi { ptr, i32 } [ %.pn917, %2740 ], [ %2735, %2734 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %501) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %498) #11
  br label %2747

2742:                                             ; preds = %2720, %2733
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %498) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %498) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %503) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %504) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %504, ptr noundef nonnull @.str.250)
          to label %2743 unwind label %2748

2743:                                             ; preds = %2742
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %505) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %505, ptr noundef nonnull @.str.250)
          to label %2744 unwind label %2750

2744:                                             ; preds = %2743
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %503, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %504, ptr noundef nonnull align 4 dereferenceable(28) %505)
          to label %2745 unwind label %2750

2745:                                             ; preds = %2744
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %505) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %504) #11
  %2746 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %503)
  br i1 %2746, label %2767, label %2753

2747:                                             ; preds = %2741, %2727
  %.pn917.pn.pn = phi { ptr, i32 } [ %.pn917.pn, %2741 ], [ %.pn915, %2727 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %498) #11
  br label %3349

2748:                                             ; preds = %2742
  %2749 = landingpad { ptr, i32 }
          cleanup
  br label %2752

2750:                                             ; preds = %2744, %2743
  %2751 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %505) #11
  br label %2752

2752:                                             ; preds = %2750, %2748
  %.pn921 = phi { ptr, i32 } [ %2751, %2750 ], [ %2749, %2748 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %504) #11
  br label %2772

2753:                                             ; preds = %2745
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %506) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %2754 unwind label %2759

2754:                                             ; preds = %2753
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %507) #11
  %2755 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %503)
          to label %2756 unwind label %2761

2756:                                             ; preds = %2754
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %507, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 375, ptr noundef %2755)
          to label %2757 unwind label %2761

2757:                                             ; preds = %2756
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %507, ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %2758 unwind label %2763

2758:                                             ; preds = %2757
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %507) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %507) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %506) #11
  br label %2767

2759:                                             ; preds = %2753
  %2760 = landingpad { ptr, i32 }
          cleanup
  br label %2766

2761:                                             ; preds = %2756, %2754
  %2762 = landingpad { ptr, i32 }
          cleanup
  br label %2765

2763:                                             ; preds = %2757
  %2764 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %507) #11
  br label %2765

2765:                                             ; preds = %2763, %2761
  %.pn923 = phi { ptr, i32 } [ %2764, %2763 ], [ %2762, %2761 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %507) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #11
  br label %2766

2766:                                             ; preds = %2765, %2759
  %.pn923.pn = phi { ptr, i32 } [ %.pn923, %2765 ], [ %2760, %2759 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %506) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %503) #11
  br label %2772

2767:                                             ; preds = %2745, %2758
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %503) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %503) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %508) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %509) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %509, ptr noundef nonnull @.str.10)
          to label %2768 unwind label %2773

2768:                                             ; preds = %2767
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %510) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %510, ptr noundef nonnull @.str.271)
          to label %2769 unwind label %2775

2769:                                             ; preds = %2768
  invoke void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %508, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %509, ptr noundef nonnull align 4 dereferenceable(28) %510)
          to label %2770 unwind label %2775

2770:                                             ; preds = %2769
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %510) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %509) #11
  %2771 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %508)
  br i1 %2771, label %2792, label %2778

2772:                                             ; preds = %2766, %2752
  %.pn923.pn.pn = phi { ptr, i32 } [ %.pn923.pn, %2766 ], [ %.pn921, %2752 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %503) #11
  br label %3349

2773:                                             ; preds = %2767
  %2774 = landingpad { ptr, i32 }
          cleanup
  br label %2777

2775:                                             ; preds = %2769, %2768
  %2776 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %510) #11
  br label %2777

2777:                                             ; preds = %2775, %2773
  %.pn927 = phi { ptr, i32 } [ %2776, %2775 ], [ %2774, %2773 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %509) #11
  br label %2797

2778:                                             ; preds = %2770
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %511) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %511)
          to label %2779 unwind label %2784

2779:                                             ; preds = %2778
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %512) #11
  %2780 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %508)
          to label %2781 unwind label %2786

2781:                                             ; preds = %2779
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %512, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 377, ptr noundef %2780)
          to label %2782 unwind label %2786

2782:                                             ; preds = %2781
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef nonnull align 8 dereferenceable(8) %511)
          to label %2783 unwind label %2788

2783:                                             ; preds = %2782
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %512) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %511) #11
  br label %2792

2784:                                             ; preds = %2778
  %2785 = landingpad { ptr, i32 }
          cleanup
  br label %2791

2786:                                             ; preds = %2781, %2779
  %2787 = landingpad { ptr, i32 }
          cleanup
  br label %2790

2788:                                             ; preds = %2782
  %2789 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #11
  br label %2790

2790:                                             ; preds = %2788, %2786
  %.pn929 = phi { ptr, i32 } [ %2789, %2788 ], [ %2787, %2786 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %512) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #11
  br label %2791

2791:                                             ; preds = %2790, %2784
  %.pn929.pn = phi { ptr, i32 } [ %.pn929, %2790 ], [ %2785, %2784 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %511) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #11
  br label %2797

2792:                                             ; preds = %2770, %2783
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %508) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %508) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %513) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %514) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %514, ptr noundef nonnull @.str.250)
          to label %2793 unwind label %2798

2793:                                             ; preds = %2792
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %515) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %515, ptr noundef nonnull @.str.10)
          to label %2794 unwind label %2800

2794:                                             ; preds = %2793
  invoke void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %513, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %514, ptr noundef nonnull align 4 dereferenceable(28) %515)
          to label %2795 unwind label %2800

2795:                                             ; preds = %2794
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %515) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %514) #11
  %2796 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
  br i1 %2796, label %2817, label %2803

2797:                                             ; preds = %2791, %2777
  %.pn929.pn.pn = phi { ptr, i32 } [ %.pn929.pn, %2791 ], [ %.pn927, %2777 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %508) #11
  br label %3349

2798:                                             ; preds = %2792
  %2799 = landingpad { ptr, i32 }
          cleanup
  br label %2802

2800:                                             ; preds = %2794, %2793
  %2801 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %515) #11
  br label %2802

2802:                                             ; preds = %2800, %2798
  %.pn933 = phi { ptr, i32 } [ %2801, %2800 ], [ %2799, %2798 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %514) #11
  br label %2822

2803:                                             ; preds = %2795
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %516) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %2804 unwind label %2809

2804:                                             ; preds = %2803
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %517) #11
  %2805 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
          to label %2806 unwind label %2811

2806:                                             ; preds = %2804
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %517, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 378, ptr noundef %2805)
          to label %2807 unwind label %2811

2807:                                             ; preds = %2806
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %2808 unwind label %2813

2808:                                             ; preds = %2807
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %517) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %516) #11
  br label %2817

2809:                                             ; preds = %2803
  %2810 = landingpad { ptr, i32 }
          cleanup
  br label %2816

2811:                                             ; preds = %2806, %2804
  %2812 = landingpad { ptr, i32 }
          cleanup
  br label %2815

2813:                                             ; preds = %2807
  %2814 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #11
  br label %2815

2815:                                             ; preds = %2813, %2811
  %.pn935 = phi { ptr, i32 } [ %2814, %2813 ], [ %2812, %2811 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %517) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #11
  br label %2816

2816:                                             ; preds = %2815, %2809
  %.pn935.pn = phi { ptr, i32 } [ %.pn935, %2815 ], [ %2810, %2809 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %516) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #11
  br label %2822

2817:                                             ; preds = %2795, %2808
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %513) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %518) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %519) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %519, ptr noundef nonnull @.str.271)
          to label %2818 unwind label %2823

2818:                                             ; preds = %2817
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %520) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %520, ptr noundef nonnull @.str.10)
          to label %2819 unwind label %2825

2819:                                             ; preds = %2818
  invoke void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %518, ptr noundef nonnull @.str.365, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %519, ptr noundef nonnull align 4 dereferenceable(28) %520)
          to label %2820 unwind label %2825

2820:                                             ; preds = %2819
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %520) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %519) #11
  %2821 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %518)
  br i1 %2821, label %2842, label %2828

2822:                                             ; preds = %2816, %2802
  %.pn935.pn.pn = phi { ptr, i32 } [ %.pn935.pn, %2816 ], [ %.pn933, %2802 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %513) #11
  br label %3349

2823:                                             ; preds = %2817
  %2824 = landingpad { ptr, i32 }
          cleanup
  br label %2827

2825:                                             ; preds = %2819, %2818
  %2826 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %520) #11
  br label %2827

2827:                                             ; preds = %2825, %2823
  %.pn939 = phi { ptr, i32 } [ %2826, %2825 ], [ %2824, %2823 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %519) #11
  br label %2847

2828:                                             ; preds = %2820
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %521) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %2829 unwind label %2834

2829:                                             ; preds = %2828
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %522) #11
  %2830 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %518)
          to label %2831 unwind label %2836

2831:                                             ; preds = %2829
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %522, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 380, ptr noundef %2830)
          to label %2832 unwind label %2836

2832:                                             ; preds = %2831
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %2833 unwind label %2838

2833:                                             ; preds = %2832
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %521) #11
  br label %2842

2834:                                             ; preds = %2828
  %2835 = landingpad { ptr, i32 }
          cleanup
  br label %2841

2836:                                             ; preds = %2831, %2829
  %2837 = landingpad { ptr, i32 }
          cleanup
  br label %2840

2838:                                             ; preds = %2832
  %2839 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #11
  br label %2840

2840:                                             ; preds = %2838, %2836
  %.pn941 = phi { ptr, i32 } [ %2839, %2838 ], [ %2837, %2836 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #11
  br label %2841

2841:                                             ; preds = %2840, %2834
  %.pn941.pn = phi { ptr, i32 } [ %.pn941, %2840 ], [ %2835, %2834 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %521) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #11
  br label %2847

2842:                                             ; preds = %2820, %2833
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %518) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %518) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %523) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %524) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %524, ptr noundef nonnull @.str.250)
          to label %2843 unwind label %2848

2843:                                             ; preds = %2842
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %525) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %525, ptr noundef nonnull @.str.10)
          to label %2844 unwind label %2850

2844:                                             ; preds = %2843
  invoke void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %523, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %524, ptr noundef nonnull align 4 dereferenceable(28) %525)
          to label %2845 unwind label %2850

2845:                                             ; preds = %2844
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %525) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %524) #11
  %2846 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
  br i1 %2846, label %2867, label %2853

2847:                                             ; preds = %2841, %2827
  %.pn941.pn.pn = phi { ptr, i32 } [ %.pn941.pn, %2841 ], [ %.pn939, %2827 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %518) #11
  br label %3349

2848:                                             ; preds = %2842
  %2849 = landingpad { ptr, i32 }
          cleanup
  br label %2852

2850:                                             ; preds = %2844, %2843
  %2851 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %525) #11
  br label %2852

2852:                                             ; preds = %2850, %2848
  %.pn945 = phi { ptr, i32 } [ %2851, %2850 ], [ %2849, %2848 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %524) #11
  br label %2872

2853:                                             ; preds = %2845
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %526) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %526)
          to label %2854 unwind label %2859

2854:                                             ; preds = %2853
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %527) #11
  %2855 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
          to label %2856 unwind label %2861

2856:                                             ; preds = %2854
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %527, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 381, ptr noundef %2855)
          to label %2857 unwind label %2861

2857:                                             ; preds = %2856
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull align 8 dereferenceable(8) %526)
          to label %2858 unwind label %2863

2858:                                             ; preds = %2857
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %527) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %526) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %526) #11
  br label %2867

2859:                                             ; preds = %2853
  %2860 = landingpad { ptr, i32 }
          cleanup
  br label %2866

2861:                                             ; preds = %2856, %2854
  %2862 = landingpad { ptr, i32 }
          cleanup
  br label %2865

2863:                                             ; preds = %2857
  %2864 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #11
  br label %2865

2865:                                             ; preds = %2863, %2861
  %.pn947 = phi { ptr, i32 } [ %2864, %2863 ], [ %2862, %2861 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %527) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %526) #11
  br label %2866

2866:                                             ; preds = %2865, %2859
  %.pn947.pn = phi { ptr, i32 } [ %.pn947, %2865 ], [ %2860, %2859 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %526) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #11
  br label %2872

2867:                                             ; preds = %2845, %2858
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %523) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %523) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %528) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %529) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %529, ptr noundef nonnull @.str.10)
          to label %2868 unwind label %2873

2868:                                             ; preds = %2867
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %530) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %530, ptr noundef nonnull @.str.271)
          to label %2869 unwind label %2875

2869:                                             ; preds = %2868
  invoke void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %528, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %529, ptr noundef nonnull align 4 dereferenceable(28) %530)
          to label %2870 unwind label %2875

2870:                                             ; preds = %2869
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %530) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %529) #11
  %2871 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %528)
  br i1 %2871, label %2892, label %2878

2872:                                             ; preds = %2866, %2852
  %.pn947.pn.pn = phi { ptr, i32 } [ %.pn947.pn, %2866 ], [ %.pn945, %2852 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %523) #11
  br label %3349

2873:                                             ; preds = %2867
  %2874 = landingpad { ptr, i32 }
          cleanup
  br label %2877

2875:                                             ; preds = %2869, %2868
  %2876 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %530) #11
  br label %2877

2877:                                             ; preds = %2875, %2873
  %.pn951 = phi { ptr, i32 } [ %2876, %2875 ], [ %2874, %2873 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %529) #11
  br label %2897

2878:                                             ; preds = %2870
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %531) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %2879 unwind label %2884

2879:                                             ; preds = %2878
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %532) #11
  %2880 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %528)
          to label %2881 unwind label %2886

2881:                                             ; preds = %2879
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %532, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 383, ptr noundef %2880)
          to label %2882 unwind label %2886

2882:                                             ; preds = %2881
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %2883 unwind label %2888

2883:                                             ; preds = %2882
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %532) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %532) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %531) #11
  br label %2892

2884:                                             ; preds = %2878
  %2885 = landingpad { ptr, i32 }
          cleanup
  br label %2891

2886:                                             ; preds = %2881, %2879
  %2887 = landingpad { ptr, i32 }
          cleanup
  br label %2890

2888:                                             ; preds = %2882
  %2889 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %532) #11
  br label %2890

2890:                                             ; preds = %2888, %2886
  %.pn953 = phi { ptr, i32 } [ %2889, %2888 ], [ %2887, %2886 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %532) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #11
  br label %2891

2891:                                             ; preds = %2890, %2884
  %.pn953.pn = phi { ptr, i32 } [ %.pn953, %2890 ], [ %2885, %2884 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %531) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %528) #11
  br label %2897

2892:                                             ; preds = %2870, %2883
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %528) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %528) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %533) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %534) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %534, ptr noundef nonnull @.str.10)
          to label %2893 unwind label %2898

2893:                                             ; preds = %2892
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %535) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %535, ptr noundef nonnull @.str.250)
          to label %2894 unwind label %2900

2894:                                             ; preds = %2893
  invoke void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %533, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %534, ptr noundef nonnull align 4 dereferenceable(28) %535)
          to label %2895 unwind label %2900

2895:                                             ; preds = %2894
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %535) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %534) #11
  %2896 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
  br i1 %2896, label %2917, label %2903

2897:                                             ; preds = %2891, %2877
  %.pn953.pn.pn = phi { ptr, i32 } [ %.pn953.pn, %2891 ], [ %.pn951, %2877 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %528) #11
  br label %3349

2898:                                             ; preds = %2892
  %2899 = landingpad { ptr, i32 }
          cleanup
  br label %2902

2900:                                             ; preds = %2894, %2893
  %2901 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %535) #11
  br label %2902

2902:                                             ; preds = %2900, %2898
  %.pn957 = phi { ptr, i32 } [ %2901, %2900 ], [ %2899, %2898 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %534) #11
  br label %2922

2903:                                             ; preds = %2895
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %536) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %2904 unwind label %2909

2904:                                             ; preds = %2903
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %537) #11
  %2905 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
          to label %2906 unwind label %2911

2906:                                             ; preds = %2904
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %537, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 384, ptr noundef %2905)
          to label %2907 unwind label %2911

2907:                                             ; preds = %2906
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %537, ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %2908 unwind label %2913

2908:                                             ; preds = %2907
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %537) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %536) #11
  br label %2917

2909:                                             ; preds = %2903
  %2910 = landingpad { ptr, i32 }
          cleanup
  br label %2916

2911:                                             ; preds = %2906, %2904
  %2912 = landingpad { ptr, i32 }
          cleanup
  br label %2915

2913:                                             ; preds = %2907
  %2914 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #11
  br label %2915

2915:                                             ; preds = %2913, %2911
  %.pn959 = phi { ptr, i32 } [ %2914, %2913 ], [ %2912, %2911 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %537) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #11
  br label %2916

2916:                                             ; preds = %2915, %2909
  %.pn959.pn = phi { ptr, i32 } [ %.pn959, %2915 ], [ %2910, %2909 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %536) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #11
  br label %2922

2917:                                             ; preds = %2895, %2908
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %533) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %538) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %539) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %539, ptr noundef nonnull @.str.271)
          to label %2918 unwind label %2923

2918:                                             ; preds = %2917
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %540) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %540, ptr noundef nonnull @.str.10)
          to label %2919 unwind label %2925

2919:                                             ; preds = %2918
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %538, ptr noundef nonnull @.str.365, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %539, ptr noundef nonnull align 4 dereferenceable(28) %540)
          to label %2920 unwind label %2925

2920:                                             ; preds = %2919
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %540) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %539) #11
  %2921 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %538)
  br i1 %2921, label %2942, label %2928

2922:                                             ; preds = %2916, %2902
  %.pn959.pn.pn = phi { ptr, i32 } [ %.pn959.pn, %2916 ], [ %.pn957, %2902 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %533) #11
  br label %3349

2923:                                             ; preds = %2917
  %2924 = landingpad { ptr, i32 }
          cleanup
  br label %2927

2925:                                             ; preds = %2919, %2918
  %2926 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %540) #11
  br label %2927

2927:                                             ; preds = %2925, %2923
  %.pn963 = phi { ptr, i32 } [ %2926, %2925 ], [ %2924, %2923 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %539) #11
  br label %2947

2928:                                             ; preds = %2920
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %541) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %2929 unwind label %2934

2929:                                             ; preds = %2928
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %542) #11
  %2930 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %538)
          to label %2931 unwind label %2936

2931:                                             ; preds = %2929
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %542, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 386, ptr noundef %2930)
          to label %2932 unwind label %2936

2932:                                             ; preds = %2931
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %2933 unwind label %2938

2933:                                             ; preds = %2932
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %542) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %541) #11
  br label %2942

2934:                                             ; preds = %2928
  %2935 = landingpad { ptr, i32 }
          cleanup
  br label %2941

2936:                                             ; preds = %2931, %2929
  %2937 = landingpad { ptr, i32 }
          cleanup
  br label %2940

2938:                                             ; preds = %2932
  %2939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #11
  br label %2940

2940:                                             ; preds = %2938, %2936
  %.pn965 = phi { ptr, i32 } [ %2939, %2938 ], [ %2937, %2936 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %542) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #11
  br label %2941

2941:                                             ; preds = %2940, %2934
  %.pn965.pn = phi { ptr, i32 } [ %.pn965, %2940 ], [ %2935, %2934 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %541) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %538) #11
  br label %2947

2942:                                             ; preds = %2920, %2933
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %538) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %538) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %543) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %544) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %544, ptr noundef nonnull @.str.10)
          to label %2943 unwind label %2948

2943:                                             ; preds = %2942
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %545) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %545, ptr noundef nonnull @.str.10)
          to label %2944 unwind label %2950

2944:                                             ; preds = %2943
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %543, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %544, ptr noundef nonnull align 4 dereferenceable(28) %545)
          to label %2945 unwind label %2950

2945:                                             ; preds = %2944
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %545) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %544) #11
  %2946 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %543)
  br i1 %2946, label %2967, label %2953

2947:                                             ; preds = %2941, %2927
  %.pn965.pn.pn = phi { ptr, i32 } [ %.pn965.pn, %2941 ], [ %.pn963, %2927 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %538) #11
  br label %3349

2948:                                             ; preds = %2942
  %2949 = landingpad { ptr, i32 }
          cleanup
  br label %2952

2950:                                             ; preds = %2944, %2943
  %2951 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %545) #11
  br label %2952

2952:                                             ; preds = %2950, %2948
  %.pn969 = phi { ptr, i32 } [ %2951, %2950 ], [ %2949, %2948 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %544) #11
  br label %2972

2953:                                             ; preds = %2945
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %546) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %2954 unwind label %2959

2954:                                             ; preds = %2953
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %547) #11
  %2955 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %543)
          to label %2956 unwind label %2961

2956:                                             ; preds = %2954
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %547, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 387, ptr noundef %2955)
          to label %2957 unwind label %2961

2957:                                             ; preds = %2956
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %2958 unwind label %2963

2958:                                             ; preds = %2957
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %547) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #11
  br label %2967

2959:                                             ; preds = %2953
  %2960 = landingpad { ptr, i32 }
          cleanup
  br label %2966

2961:                                             ; preds = %2956, %2954
  %2962 = landingpad { ptr, i32 }
          cleanup
  br label %2965

2963:                                             ; preds = %2957
  %2964 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #11
  br label %2965

2965:                                             ; preds = %2963, %2961
  %.pn971 = phi { ptr, i32 } [ %2964, %2963 ], [ %2962, %2961 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %547) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #11
  br label %2966

2966:                                             ; preds = %2965, %2959
  %.pn971.pn = phi { ptr, i32 } [ %.pn971, %2965 ], [ %2960, %2959 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #11
  br label %2972

2967:                                             ; preds = %2945, %2958
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %543) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %548) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %549) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %549, ptr noundef nonnull @.str.250)
          to label %2968 unwind label %2973

2968:                                             ; preds = %2967
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %550) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %550, ptr noundef nonnull @.str.10)
          to label %2969 unwind label %2975

2969:                                             ; preds = %2968
  invoke void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %548, ptr noundef nonnull @.str.248, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %549, ptr noundef nonnull align 4 dereferenceable(28) %550)
          to label %2970 unwind label %2975

2970:                                             ; preds = %2969
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %550) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %549) #11
  %2971 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %548)
  br i1 %2971, label %2992, label %2978

2972:                                             ; preds = %2966, %2952
  %.pn971.pn.pn = phi { ptr, i32 } [ %.pn971.pn, %2966 ], [ %.pn969, %2952 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %543) #11
  br label %3349

2973:                                             ; preds = %2967
  %2974 = landingpad { ptr, i32 }
          cleanup
  br label %2977

2975:                                             ; preds = %2969, %2968
  %2976 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %550) #11
  br label %2977

2977:                                             ; preds = %2975, %2973
  %.pn975 = phi { ptr, i32 } [ %2976, %2975 ], [ %2974, %2973 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %549) #11
  br label %2997

2978:                                             ; preds = %2970
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %551) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %2979 unwind label %2984

2979:                                             ; preds = %2978
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %552) #11
  %2980 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %548)
          to label %2981 unwind label %2986

2981:                                             ; preds = %2979
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %552, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 388, ptr noundef %2980)
          to label %2982 unwind label %2986

2982:                                             ; preds = %2981
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %2983 unwind label %2988

2983:                                             ; preds = %2982
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %552) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %551) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %551) #11
  br label %2992

2984:                                             ; preds = %2978
  %2985 = landingpad { ptr, i32 }
          cleanup
  br label %2991

2986:                                             ; preds = %2981, %2979
  %2987 = landingpad { ptr, i32 }
          cleanup
  br label %2990

2988:                                             ; preds = %2982
  %2989 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #11
  br label %2990

2990:                                             ; preds = %2988, %2986
  %.pn977 = phi { ptr, i32 } [ %2989, %2988 ], [ %2987, %2986 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %552) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %551) #11
  br label %2991

2991:                                             ; preds = %2990, %2984
  %.pn977.pn = phi { ptr, i32 } [ %.pn977, %2990 ], [ %2985, %2984 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %551) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %548) #11
  br label %2997

2992:                                             ; preds = %2970, %2983
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %548) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %548) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %553) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %554) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %554, ptr noundef nonnull @.str.10)
          to label %2993 unwind label %2998

2993:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %555) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %555, ptr noundef nonnull @.str.271)
          to label %2994 unwind label %3000

2994:                                             ; preds = %2993
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %553, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.365, ptr noundef nonnull align 4 dereferenceable(28) %554, ptr noundef nonnull align 4 dereferenceable(28) %555)
          to label %2995 unwind label %3000

2995:                                             ; preds = %2994
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %555) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %554) #11
  %2996 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %553)
  br i1 %2996, label %3017, label %3003

2997:                                             ; preds = %2991, %2977
  %.pn977.pn.pn = phi { ptr, i32 } [ %.pn977.pn, %2991 ], [ %.pn975, %2977 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %548) #11
  br label %3349

2998:                                             ; preds = %2992
  %2999 = landingpad { ptr, i32 }
          cleanup
  br label %3002

3000:                                             ; preds = %2994, %2993
  %3001 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %555) #11
  br label %3002

3002:                                             ; preds = %3000, %2998
  %.pn981 = phi { ptr, i32 } [ %3001, %3000 ], [ %2999, %2998 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %554) #11
  br label %3022

3003:                                             ; preds = %2995
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %556) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %3004 unwind label %3009

3004:                                             ; preds = %3003
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %557) #11
  %3005 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %553)
          to label %3006 unwind label %3011

3006:                                             ; preds = %3004
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %557, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 390, ptr noundef %3005)
          to label %3007 unwind label %3011

3007:                                             ; preds = %3006
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %557, ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %3008 unwind label %3013

3008:                                             ; preds = %3007
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %557) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %557) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %556) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %556) #11
  br label %3017

3009:                                             ; preds = %3003
  %3010 = landingpad { ptr, i32 }
          cleanup
  br label %3016

3011:                                             ; preds = %3006, %3004
  %3012 = landingpad { ptr, i32 }
          cleanup
  br label %3015

3013:                                             ; preds = %3007
  %3014 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %557) #11
  br label %3015

3015:                                             ; preds = %3013, %3011
  %.pn983 = phi { ptr, i32 } [ %3014, %3013 ], [ %3012, %3011 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %557) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %556) #11
  br label %3016

3016:                                             ; preds = %3015, %3009
  %.pn983.pn = phi { ptr, i32 } [ %.pn983, %3015 ], [ %3010, %3009 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %556) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #11
  br label %3022

3017:                                             ; preds = %2995, %3008
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %553) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %553) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %558) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %559) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %559, ptr noundef nonnull @.str.10)
          to label %3018 unwind label %3023

3018:                                             ; preds = %3017
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %560) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %560, ptr noundef nonnull @.str.10)
          to label %3019 unwind label %3025

3019:                                             ; preds = %3018
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %558, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.225, ptr noundef nonnull align 4 dereferenceable(28) %559, ptr noundef nonnull align 4 dereferenceable(28) %560)
          to label %3020 unwind label %3025

3020:                                             ; preds = %3019
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %560) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %559) #11
  %3021 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %558)
  br i1 %3021, label %3042, label %3028

3022:                                             ; preds = %3016, %3002
  %.pn983.pn.pn = phi { ptr, i32 } [ %.pn983.pn, %3016 ], [ %.pn981, %3002 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %553) #11
  br label %3349

3023:                                             ; preds = %3017
  %3024 = landingpad { ptr, i32 }
          cleanup
  br label %3027

3025:                                             ; preds = %3019, %3018
  %3026 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %560) #11
  br label %3027

3027:                                             ; preds = %3025, %3023
  %.pn987 = phi { ptr, i32 } [ %3026, %3025 ], [ %3024, %3023 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %559) #11
  br label %3047

3028:                                             ; preds = %3020
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %561) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %3029 unwind label %3034

3029:                                             ; preds = %3028
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %562) #11
  %3030 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %558)
          to label %3031 unwind label %3036

3031:                                             ; preds = %3029
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %562, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 391, ptr noundef %3030)
          to label %3032 unwind label %3036

3032:                                             ; preds = %3031
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %3033 unwind label %3038

3033:                                             ; preds = %3032
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %562) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %561) #11
  br label %3042

3034:                                             ; preds = %3028
  %3035 = landingpad { ptr, i32 }
          cleanup
  br label %3041

3036:                                             ; preds = %3031, %3029
  %3037 = landingpad { ptr, i32 }
          cleanup
  br label %3040

3038:                                             ; preds = %3032
  %3039 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %562) #11
  br label %3040

3040:                                             ; preds = %3038, %3036
  %.pn989 = phi { ptr, i32 } [ %3039, %3038 ], [ %3037, %3036 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %562) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #11
  br label %3041

3041:                                             ; preds = %3040, %3034
  %.pn989.pn = phi { ptr, i32 } [ %.pn989, %3040 ], [ %3035, %3034 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %561) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %558) #11
  br label %3047

3042:                                             ; preds = %3020, %3033
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %558) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %558) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %563) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %564) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %564, ptr noundef nonnull @.str.10)
          to label %3043 unwind label %3048

3043:                                             ; preds = %3042
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %565) #11
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %565, ptr noundef nonnull @.str.250)
          to label %3044 unwind label %3050

3044:                                             ; preds = %3043
  invoke void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %563, ptr noundef nonnull @.str.225, ptr noundef nonnull @.str.248, ptr noundef nonnull align 4 dereferenceable(28) %564, ptr noundef nonnull align 4 dereferenceable(28) %565)
          to label %3045 unwind label %3050

3045:                                             ; preds = %3044
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %565) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %564) #11
  %3046 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %563)
  br i1 %3046, label %3067, label %3053

3047:                                             ; preds = %3041, %3027
  %.pn989.pn.pn = phi { ptr, i32 } [ %.pn989.pn, %3041 ], [ %.pn987, %3027 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %558) #11
  br label %3349

3048:                                             ; preds = %3042
  %3049 = landingpad { ptr, i32 }
          cleanup
  br label %3052

3050:                                             ; preds = %3044, %3043
  %3051 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %565) #11
  br label %3052

3052:                                             ; preds = %3050, %3048
  %.pn993 = phi { ptr, i32 } [ %3051, %3050 ], [ %3049, %3048 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %564) #11
  br label %3072

3053:                                             ; preds = %3045
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %566) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %3054 unwind label %3059

3054:                                             ; preds = %3053
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %567) #11
  %3055 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %563)
          to label %3056 unwind label %3061

3056:                                             ; preds = %3054
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %567, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 392, ptr noundef %3055)
          to label %3057 unwind label %3061

3057:                                             ; preds = %3056
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %3058 unwind label %3063

3058:                                             ; preds = %3057
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %567) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %566) #11
  br label %3067

3059:                                             ; preds = %3053
  %3060 = landingpad { ptr, i32 }
          cleanup
  br label %3066

3061:                                             ; preds = %3056, %3054
  %3062 = landingpad { ptr, i32 }
          cleanup
  br label %3065

3063:                                             ; preds = %3057
  %3064 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #11
  br label %3065

3065:                                             ; preds = %3063, %3061
  %.pn995 = phi { ptr, i32 } [ %3064, %3063 ], [ %3062, %3061 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %567) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #11
  br label %3066

3066:                                             ; preds = %3065, %3059
  %.pn995.pn = phi { ptr, i32 } [ %.pn995, %3065 ], [ %3060, %3059 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %566) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #11
  br label %3072

3067:                                             ; preds = %3045, %3058
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %563) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %568) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %569) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %570) #11
  invoke void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %570, i8 noundef zeroext 10)
          to label %3068 unwind label %3073

3068:                                             ; preds = %3067
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %569, ptr noundef nonnull align 4 dereferenceable(28) %570, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3069 unwind label %3073

3069:                                             ; preds = %3068
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %568, ptr noundef nonnull @.str.267, ptr noundef nonnull @.str.366, ptr noundef nonnull align 1 dereferenceable(3) @.str.214, ptr noundef nonnull align 8 dereferenceable(32) %569)
          to label %3070 unwind label %3075

3070:                                             ; preds = %3069
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %569) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %570) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %569) #11
  %3071 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %568)
  br i1 %3071, label %3092, label %3078

3072:                                             ; preds = %3066, %3052
  %.pn995.pn.pn = phi { ptr, i32 } [ %.pn995.pn, %3066 ], [ %.pn993, %3052 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %563) #11
  br label %3349

3073:                                             ; preds = %3068, %3067
  %3074 = landingpad { ptr, i32 }
          cleanup
  br label %3077

3075:                                             ; preds = %3069
  %3076 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %569) #11
  br label %3077

3077:                                             ; preds = %3075, %3073
  %.pn999 = phi { ptr, i32 } [ %3076, %3075 ], [ %3074, %3073 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %570) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %569) #11
  br label %3097

3078:                                             ; preds = %3070
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %571) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %3079 unwind label %3084

3079:                                             ; preds = %3078
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %572) #11
  %3080 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %568)
          to label %3081 unwind label %3086

3081:                                             ; preds = %3079
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %572, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 395, ptr noundef %3080)
          to label %3082 unwind label %3086

3082:                                             ; preds = %3081
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %3083 unwind label %3088

3083:                                             ; preds = %3082
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %572) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %571) #11
  br label %3092

3084:                                             ; preds = %3078
  %3085 = landingpad { ptr, i32 }
          cleanup
  br label %3091

3086:                                             ; preds = %3081, %3079
  %3087 = landingpad { ptr, i32 }
          cleanup
  br label %3090

3088:                                             ; preds = %3082
  %3089 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #11
  br label %3090

3090:                                             ; preds = %3088, %3086
  %.pn1001 = phi { ptr, i32 } [ %3089, %3088 ], [ %3087, %3086 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %572) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #11
  br label %3091

3091:                                             ; preds = %3090, %3084
  %.pn1001.pn = phi { ptr, i32 } [ %.pn1001, %3090 ], [ %3085, %3084 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %571) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %568) #11
  br label %3097

3092:                                             ; preds = %3070, %3083
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %568) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %568) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %573) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %574) #11
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %575) #11
  invoke void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %575, i8 noundef zeroext 10)
          to label %3093 unwind label %3098

3093:                                             ; preds = %3092
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %574, ptr noundef nonnull align 4 dereferenceable(28) %575, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3094 unwind label %3098

3094:                                             ; preds = %3093
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA4_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %573, ptr noundef nonnull @.str.258, ptr noundef nonnull @.str.367, ptr noundef nonnull align 1 dereferenceable(4) @.str.218, ptr noundef nonnull align 8 dereferenceable(32) %574)
          to label %3095 unwind label %3100

3095:                                             ; preds = %3094
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %575) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #11
  %3096 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
  br i1 %3096, label %3117, label %3103

3097:                                             ; preds = %3091, %3077
  %.pn1001.pn.pn = phi { ptr, i32 } [ %.pn1001.pn, %3091 ], [ %.pn999, %3077 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %568) #11
  br label %3349

3098:                                             ; preds = %3093, %3092
  %3099 = landingpad { ptr, i32 }
          cleanup
  br label %3102

3100:                                             ; preds = %3094
  %3101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #11
  br label %3102

3102:                                             ; preds = %3100, %3098
  %.pn1005 = phi { ptr, i32 } [ %3101, %3100 ], [ %3099, %3098 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %575) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %574) #11
  br label %3125

3103:                                             ; preds = %3095
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %576) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %3104 unwind label %3109

3104:                                             ; preds = %3103
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %577) #11
  %3105 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
          to label %3106 unwind label %3111

3106:                                             ; preds = %3104
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %577, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 396, ptr noundef %3105)
          to label %3107 unwind label %3111

3107:                                             ; preds = %3106
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %3108 unwind label %3113

3108:                                             ; preds = %3107
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %576) #11
  br label %3117

3109:                                             ; preds = %3103
  %3110 = landingpad { ptr, i32 }
          cleanup
  br label %3116

3111:                                             ; preds = %3106, %3104
  %3112 = landingpad { ptr, i32 }
          cleanup
  br label %3115

3113:                                             ; preds = %3107
  %3114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #11
  br label %3115

3115:                                             ; preds = %3113, %3111
  %.pn1007 = phi { ptr, i32 } [ %3114, %3113 ], [ %3112, %3111 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #11
  br label %3116

3116:                                             ; preds = %3115, %3109
  %.pn1007.pn = phi { ptr, i32 } [ %.pn1007, %3115 ], [ %3110, %3109 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %576) #11
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #11
  br label %3125

3117:                                             ; preds = %3095, %3108
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %578) #11
  store i8 0, ptr %578, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %579) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef nonnull @.str.27)
  %3118 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %579)
  br i1 %3118, label %3119, label %.thread1106

3119:                                             ; preds = %3117
  %3120 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3121 unwind label %3126

3121:                                             ; preds = %3119
  br i1 %3120, label %3122, label %.critedge1076

3122:                                             ; preds = %3121
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %581) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %582) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %582) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %581, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %582)
          to label %3123 unwind label %3128

3123:                                             ; preds = %3122
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %580, ptr noundef nonnull align 8 dereferenceable(32) %581, i8 noundef zeroext -56)
          to label %3124 unwind label %3130

3124:                                             ; preds = %3123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %582) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %582) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %581) #11
  br label %.critedge1076

3125:                                             ; preds = %3116, %3102
  %.pn1007.pn.pn = phi { ptr, i32 } [ %.pn1007.pn, %3116 ], [ %.pn1005, %3102 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #11
  br label %3349

3126:                                             ; preds = %3119
  %3127 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3133

3128:                                             ; preds = %3122
  %3129 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3132

3130:                                             ; preds = %3123
  %3131 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #11
  br label %3132

3132:                                             ; preds = %3130, %3128
  %.pn1011 = phi { ptr, i32 } [ %3131, %3130 ], [ %3129, %3128 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %582) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %582) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %581) #11
  br label %3133

3133:                                             ; preds = %3132, %3126
  %.pn1011.pn = phi { ptr, i32 } [ %.pn1011, %3132 ], [ %3127, %3126 ]
  %.356 = extractvalue { ptr, i32 } %.pn1011.pn, 0
  %.356455 = extractvalue { ptr, i32 } %.pn1011.pn, 1
  %3134 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3135 = icmp eq i32 %.356455, %3134
  %3136 = call ptr @__cxa_begin_catch(ptr %.356) #11
  br i1 %3135, label %3137, label %3138

3137:                                             ; preds = %3133
  invoke void @__cxa_end_catch()
          to label %3155 unwind label %3141

.critedge1076:                                    ; preds = %3121, %3124
  store ptr @.str.369, ptr %579, align 8, !tbaa !5
  br label %.thread1106

3138:                                             ; preds = %3133
  store ptr @.str.368, ptr %579, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1106 unwind label %3139

3139:                                             ; preds = %3138
  %3140 = landingpad { ptr, i32 }
          cleanup
  br label %3163

3141:                                             ; preds = %3137
  %3142 = landingpad { ptr, i32 }
          cleanup
  br label %3163

.thread1106:                                      ; preds = %3138, %.critedge1076, %3117
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %583) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %583)
          to label %3143 unwind label %3147

3143:                                             ; preds = %.thread1106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %584) #11
  %3144 = load ptr, ptr %579, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %584, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 401, ptr noundef %3144)
          to label %3145 unwind label %3149

3145:                                             ; preds = %3143
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef nonnull align 8 dereferenceable(8) %583)
          to label %3146 unwind label %3151

3146:                                             ; preds = %3145
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %584) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %583) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %583) #11
  br label %3155

3147:                                             ; preds = %.thread1106
  %3148 = landingpad { ptr, i32 }
          cleanup
  br label %3154

3149:                                             ; preds = %3143
  %3150 = landingpad { ptr, i32 }
          cleanup
  br label %3153

3151:                                             ; preds = %3145
  %3152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #11
  br label %3153

3153:                                             ; preds = %3151, %3149
  %.pn1016 = phi { ptr, i32 } [ %3152, %3151 ], [ %3150, %3149 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %584) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %583) #11
  br label %3154

3154:                                             ; preds = %3153, %3147
  %.pn1016.pn = phi { ptr, i32 } [ %.pn1016, %3153 ], [ %3148, %3147 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %583) #11
  br label %3163

3155:                                             ; preds = %3137, %3146
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %579) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %585) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %585, ptr noundef nonnull @.str.27)
  %3156 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %585)
  br i1 %3156, label %3157, label %.thread1110

3157:                                             ; preds = %3155
  %3158 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3159 unwind label %3164

3159:                                             ; preds = %3157
  br i1 %3158, label %3160, label %.critedge1080

3160:                                             ; preds = %3159
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %587) #11
  invoke void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24) %587, ptr noundef nonnull %109, i8 noundef zeroext -56)
          to label %3161 unwind label %3166

3161:                                             ; preds = %3160
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28) %586, ptr noundef nonnull align 4 dereferenceable(24) %587)
          to label %3162 unwind label %3166

3162:                                             ; preds = %3161
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %587) #11
  br label %.critedge1080

3163:                                             ; preds = %3139, %3141, %3154
  %.pn1016.pn.pn = phi { ptr, i32 } [ %.pn1016.pn, %3154 ], [ %3142, %3141 ], [ %3140, %3139 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %579) #11
  br label %3348

3164:                                             ; preds = %3157
  %3165 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3168

3166:                                             ; preds = %3161, %3160
  %3167 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %587) #11
  br label %3168

3168:                                             ; preds = %3166, %3164
  %.pn1020 = phi { ptr, i32 } [ %3167, %3166 ], [ %3165, %3164 ]
  %.361 = extractvalue { ptr, i32 } %.pn1020, 0
  %.361460 = extractvalue { ptr, i32 } %.pn1020, 1
  %3169 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3170 = icmp eq i32 %.361460, %3169
  %3171 = call ptr @__cxa_begin_catch(ptr %.361) #11
  br i1 %3170, label %3172, label %3173

3172:                                             ; preds = %3168
  invoke void @__cxa_end_catch()
          to label %3190 unwind label %3176

.critedge1080:                                    ; preds = %3159, %3162
  store ptr @.str.371, ptr %585, align 8, !tbaa !5
  br label %.thread1110

3173:                                             ; preds = %3168
  store ptr @.str.370, ptr %585, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1110 unwind label %3174

3174:                                             ; preds = %3173
  %3175 = landingpad { ptr, i32 }
          cleanup
  br label %3199

3176:                                             ; preds = %3172
  %3177 = landingpad { ptr, i32 }
          cleanup
  br label %3199

.thread1110:                                      ; preds = %3173, %.critedge1080, %3155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %588) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %588)
          to label %3178 unwind label %3182

3178:                                             ; preds = %.thread1110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %589) #11
  %3179 = load ptr, ptr %585, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %589, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 402, ptr noundef %3179)
          to label %3180 unwind label %3184

3180:                                             ; preds = %3178
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull align 8 dereferenceable(8) %588)
          to label %3181 unwind label %3186

3181:                                             ; preds = %3180
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %589) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %589) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %588) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %588) #11
  br label %3190

3182:                                             ; preds = %.thread1110
  %3183 = landingpad { ptr, i32 }
          cleanup
  br label %3189

3184:                                             ; preds = %3178
  %3185 = landingpad { ptr, i32 }
          cleanup
  br label %3188

3186:                                             ; preds = %3180
  %3187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %589) #11
  br label %3188

3188:                                             ; preds = %3186, %3184
  %.pn1024 = phi { ptr, i32 } [ %3187, %3186 ], [ %3185, %3184 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %589) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %588) #11
  br label %3189

3189:                                             ; preds = %3188, %3182
  %.pn1024.pn = phi { ptr, i32 } [ %.pn1024, %3188 ], [ %3183, %3182 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %588) #11
  br label %3199

3190:                                             ; preds = %3172, %3181
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %585) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %590) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %590, ptr noundef nonnull @.str.27)
  %3191 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %590)
  br i1 %3191, label %3192, label %.thread1114

3192:                                             ; preds = %3190
  %3193 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3194 unwind label %3200

3194:                                             ; preds = %3192
  br i1 %3193, label %3195, label %.critedge1084

3195:                                             ; preds = %3194
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %591) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %592) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %591, ptr noundef nonnull @.str.372, ptr noundef nonnull align 1 dereferenceable(1) %592)
          to label %3196 unwind label %3202

3196:                                             ; preds = %3195
  %3197 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %591)
          to label %3198 unwind label %3204

3198:                                             ; preds = %3196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %592) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #11
  br label %.critedge1084

3199:                                             ; preds = %3174, %3176, %3189
  %.pn1024.pn.pn = phi { ptr, i32 } [ %.pn1024.pn, %3189 ], [ %3177, %3176 ], [ %3175, %3174 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %585) #11
  br label %3348

3200:                                             ; preds = %3192
  %3201 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3207

3202:                                             ; preds = %3195
  %3203 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3206

3204:                                             ; preds = %3196
  %3205 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %591) #11
  br label %3206

3206:                                             ; preds = %3204, %3202
  %.pn1028 = phi { ptr, i32 } [ %3205, %3204 ], [ %3203, %3202 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %592) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %592) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %591) #11
  br label %3207

3207:                                             ; preds = %3206, %3200
  %.pn1028.pn = phi { ptr, i32 } [ %.pn1028, %3206 ], [ %3201, %3200 ]
  %.367 = extractvalue { ptr, i32 } %.pn1028.pn, 0
  %.367466 = extractvalue { ptr, i32 } %.pn1028.pn, 1
  %3208 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3209 = icmp eq i32 %.367466, %3208
  %3210 = call ptr @__cxa_begin_catch(ptr %.367) #11
  br i1 %3209, label %3211, label %3212

3211:                                             ; preds = %3207
  invoke void @__cxa_end_catch()
          to label %3229 unwind label %3215

.critedge1084:                                    ; preds = %3194, %3198
  store ptr @.str.374, ptr %590, align 8, !tbaa !5
  br label %.thread1114

3212:                                             ; preds = %3207
  store ptr @.str.373, ptr %590, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1114 unwind label %3213

3213:                                             ; preds = %3212
  %3214 = landingpad { ptr, i32 }
          cleanup
  br label %3238

3215:                                             ; preds = %3211
  %3216 = landingpad { ptr, i32 }
          cleanup
  br label %3238

.thread1114:                                      ; preds = %3212, %.critedge1084, %3190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %593) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %593)
          to label %3217 unwind label %3221

3217:                                             ; preds = %.thread1114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %594) #11
  %3218 = load ptr, ptr %590, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %594, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 403, ptr noundef %3218)
          to label %3219 unwind label %3223

3219:                                             ; preds = %3217
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %594, ptr noundef nonnull align 8 dereferenceable(8) %593)
          to label %3220 unwind label %3225

3220:                                             ; preds = %3219
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %594) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #11
  br label %3229

3221:                                             ; preds = %.thread1114
  %3222 = landingpad { ptr, i32 }
          cleanup
  br label %3228

3223:                                             ; preds = %3217
  %3224 = landingpad { ptr, i32 }
          cleanup
  br label %3227

3225:                                             ; preds = %3219
  %3226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %594) #11
  br label %3227

3227:                                             ; preds = %3225, %3223
  %.pn1033 = phi { ptr, i32 } [ %3226, %3225 ], [ %3224, %3223 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %594) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #11
  br label %3228

3228:                                             ; preds = %3227, %3221
  %.pn1033.pn = phi { ptr, i32 } [ %.pn1033, %3227 ], [ %3222, %3221 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #11
  br label %3238

3229:                                             ; preds = %3211, %3220
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %590) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %595) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef nonnull @.str.27)
  %3230 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %595)
  br i1 %3230, label %3231, label %.thread1118

3231:                                             ; preds = %3229
  %3232 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3233 unwind label %3239

3233:                                             ; preds = %3231
  br i1 %3232, label %3234, label %.critedge1088

3234:                                             ; preds = %3233
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %596) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %597) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %597) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %596, ptr noundef nonnull @.str.375, ptr noundef nonnull align 1 dereferenceable(1) %597)
          to label %3235 unwind label %3241

3235:                                             ; preds = %3234
  %3236 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %596)
          to label %3237 unwind label %3243

3237:                                             ; preds = %3235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %596) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %597) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %597) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %596) #11
  br label %.critedge1088

3238:                                             ; preds = %3213, %3215, %3228
  %.pn1033.pn.pn = phi { ptr, i32 } [ %.pn1033.pn, %3228 ], [ %3216, %3215 ], [ %3214, %3213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %590) #11
  br label %3348

3239:                                             ; preds = %3231
  %3240 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3246

3241:                                             ; preds = %3234
  %3242 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3245

3243:                                             ; preds = %3235
  %3244 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %596) #11
  br label %3245

3245:                                             ; preds = %3243, %3241
  %.pn1037 = phi { ptr, i32 } [ %3244, %3243 ], [ %3242, %3241 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %597) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %597) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %596) #11
  br label %3246

3246:                                             ; preds = %3245, %3239
  %.pn1037.pn = phi { ptr, i32 } [ %.pn1037, %3245 ], [ %3240, %3239 ]
  %.373 = extractvalue { ptr, i32 } %.pn1037.pn, 0
  %.373472 = extractvalue { ptr, i32 } %.pn1037.pn, 1
  %3247 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3248 = icmp eq i32 %.373472, %3247
  %3249 = call ptr @__cxa_begin_catch(ptr %.373) #11
  br i1 %3248, label %3250, label %3251

3250:                                             ; preds = %3246
  invoke void @__cxa_end_catch()
          to label %3268 unwind label %3254

.critedge1088:                                    ; preds = %3233, %3237
  store ptr @.str.377, ptr %595, align 8, !tbaa !5
  br label %.thread1118

3251:                                             ; preds = %3246
  store ptr @.str.376, ptr %595, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1118 unwind label %3252

3252:                                             ; preds = %3251
  %3253 = landingpad { ptr, i32 }
          cleanup
  br label %3277

3254:                                             ; preds = %3250
  %3255 = landingpad { ptr, i32 }
          cleanup
  br label %3277

.thread1118:                                      ; preds = %3251, %.critedge1088, %3229
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %598) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %598)
          to label %3256 unwind label %3260

3256:                                             ; preds = %.thread1118
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %599) #11
  %3257 = load ptr, ptr %595, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %599, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 404, ptr noundef %3257)
          to label %3258 unwind label %3262

3258:                                             ; preds = %3256
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %599, ptr noundef nonnull align 8 dereferenceable(8) %598)
          to label %3259 unwind label %3264

3259:                                             ; preds = %3258
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %599) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %599) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %598) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %598) #11
  br label %3268

3260:                                             ; preds = %.thread1118
  %3261 = landingpad { ptr, i32 }
          cleanup
  br label %3267

3262:                                             ; preds = %3256
  %3263 = landingpad { ptr, i32 }
          cleanup
  br label %3266

3264:                                             ; preds = %3258
  %3265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %599) #11
  br label %3266

3266:                                             ; preds = %3264, %3262
  %.pn1042 = phi { ptr, i32 } [ %3265, %3264 ], [ %3263, %3262 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %599) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %598) #11
  br label %3267

3267:                                             ; preds = %3266, %3260
  %.pn1042.pn = phi { ptr, i32 } [ %.pn1042, %3266 ], [ %3261, %3260 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %598) #11
  br label %3277

3268:                                             ; preds = %3250, %3259
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %595) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %600) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %600, ptr noundef nonnull @.str.27)
  %3269 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %600)
  br i1 %3269, label %3270, label %.thread1122

3270:                                             ; preds = %3268
  %3271 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3272 unwind label %3278

3272:                                             ; preds = %3270
  br i1 %3271, label %3273, label %.critedge1092

3273:                                             ; preds = %3272
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %601) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %602) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %601, ptr noundef nonnull @.str.378, ptr noundef nonnull align 1 dereferenceable(1) %602)
          to label %3274 unwind label %3280

3274:                                             ; preds = %3273
  %3275 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %601)
          to label %3276 unwind label %3282

3276:                                             ; preds = %3274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %602) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %601) #11
  br label %.critedge1092

3277:                                             ; preds = %3252, %3254, %3267
  %.pn1042.pn.pn = phi { ptr, i32 } [ %.pn1042.pn, %3267 ], [ %3255, %3254 ], [ %3253, %3252 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %595) #11
  br label %3348

3278:                                             ; preds = %3270
  %3279 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3285

3280:                                             ; preds = %3273
  %3281 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3284

3282:                                             ; preds = %3274
  %3283 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %601) #11
  br label %3284

3284:                                             ; preds = %3282, %3280
  %.pn1046 = phi { ptr, i32 } [ %3283, %3282 ], [ %3281, %3280 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %602) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %602) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %601) #11
  br label %3285

3285:                                             ; preds = %3284, %3278
  %.pn1046.pn = phi { ptr, i32 } [ %.pn1046, %3284 ], [ %3279, %3278 ]
  %.379 = extractvalue { ptr, i32 } %.pn1046.pn, 0
  %.379478 = extractvalue { ptr, i32 } %.pn1046.pn, 1
  %3286 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3287 = icmp eq i32 %.379478, %3286
  %3288 = call ptr @__cxa_begin_catch(ptr %.379) #11
  br i1 %3287, label %3289, label %3290

3289:                                             ; preds = %3285
  invoke void @__cxa_end_catch()
          to label %3307 unwind label %3293

.critedge1092:                                    ; preds = %3272, %3276
  store ptr @.str.380, ptr %600, align 8, !tbaa !5
  br label %.thread1122

3290:                                             ; preds = %3285
  store ptr @.str.379, ptr %600, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1122 unwind label %3291

3291:                                             ; preds = %3290
  %3292 = landingpad { ptr, i32 }
          cleanup
  br label %3316

3293:                                             ; preds = %3289
  %3294 = landingpad { ptr, i32 }
          cleanup
  br label %3316

.thread1122:                                      ; preds = %3290, %.critedge1092, %3268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %603) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %603)
          to label %3295 unwind label %3299

3295:                                             ; preds = %.thread1122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %604) #11
  %3296 = load ptr, ptr %600, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %604, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 405, ptr noundef %3296)
          to label %3297 unwind label %3301

3297:                                             ; preds = %3295
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef nonnull align 8 dereferenceable(8) %603)
          to label %3298 unwind label %3303

3298:                                             ; preds = %3297
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %604) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %604) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %603) #11
  br label %3307

3299:                                             ; preds = %.thread1122
  %3300 = landingpad { ptr, i32 }
          cleanup
  br label %3306

3301:                                             ; preds = %3295
  %3302 = landingpad { ptr, i32 }
          cleanup
  br label %3305

3303:                                             ; preds = %3297
  %3304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %604) #11
  br label %3305

3305:                                             ; preds = %3303, %3301
  %.pn1051 = phi { ptr, i32 } [ %3304, %3303 ], [ %3302, %3301 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %604) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #11
  br label %3306

3306:                                             ; preds = %3305, %3299
  %.pn1051.pn = phi { ptr, i32 } [ %.pn1051, %3305 ], [ %3300, %3299 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %603) #11
  br label %3316

3307:                                             ; preds = %3289, %3298
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %600) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %605) #11
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef nonnull @.str.27)
  %3308 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %605)
  br i1 %3308, label %3309, label %.thread1126

3309:                                             ; preds = %3307
  %3310 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3311 unwind label %3317

3311:                                             ; preds = %3309
  br i1 %3310, label %3312, label %.critedge1096

3312:                                             ; preds = %3311
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %606) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %607) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %606, ptr noundef nonnull @.str.381, ptr noundef nonnull align 1 dereferenceable(1) %607)
          to label %3313 unwind label %3319

3313:                                             ; preds = %3312
  %3314 = invoke { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32) %606, ptr noundef nonnull %578)
          to label %3315 unwind label %3321

3315:                                             ; preds = %3313
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %607) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %606) #11
  br label %.critedge1096

3316:                                             ; preds = %3291, %3293, %3306
  %.pn1051.pn.pn = phi { ptr, i32 } [ %.pn1051.pn, %3306 ], [ %3294, %3293 ], [ %3292, %3291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %600) #11
  br label %3348

3317:                                             ; preds = %3309
  %3318 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3324

3319:                                             ; preds = %3312
  %3320 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3323

3321:                                             ; preds = %3313
  %3322 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %606) #11
  br label %3323

3323:                                             ; preds = %3321, %3319
  %.pn1055 = phi { ptr, i32 } [ %3322, %3321 ], [ %3320, %3319 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %607) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %607) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %606) #11
  br label %3324

3324:                                             ; preds = %3323, %3317
  %.pn1055.pn = phi { ptr, i32 } [ %.pn1055, %3323 ], [ %3318, %3317 ]
  %.385 = extractvalue { ptr, i32 } %.pn1055.pn, 0
  %.385484 = extractvalue { ptr, i32 } %.pn1055.pn, 1
  %3325 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %3326 = icmp eq i32 %.385484, %3325
  %3327 = call ptr @__cxa_begin_catch(ptr %.385) #11
  br i1 %3326, label %3328, label %3329

3328:                                             ; preds = %3324
  invoke void @__cxa_end_catch()
          to label %3346 unwind label %3332

.critedge1096:                                    ; preds = %3311, %3315
  store ptr @.str.383, ptr %605, align 8, !tbaa !5
  br label %.thread1126

3329:                                             ; preds = %3324
  store ptr @.str.382, ptr %605, align 8, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %.thread1126 unwind label %3330

3330:                                             ; preds = %3329
  %3331 = landingpad { ptr, i32 }
          cleanup
  br label %3347

3332:                                             ; preds = %3328
  %3333 = landingpad { ptr, i32 }
          cleanup
  br label %3347

.thread1126:                                      ; preds = %3329, %.critedge1096, %3307
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %608) #11
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %608)
          to label %3334 unwind label %3338

3334:                                             ; preds = %.thread1126
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %609) #11
  %3335 = load ptr, ptr %605, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %609, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 406, ptr noundef %3335)
          to label %3336 unwind label %3340

3336:                                             ; preds = %3334
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef nonnull align 8 dereferenceable(8) %608)
          to label %3337 unwind label %3342

3337:                                             ; preds = %3336
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %609) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %609) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %608) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %608) #11
  br label %3346

3338:                                             ; preds = %.thread1126
  %3339 = landingpad { ptr, i32 }
          cleanup
  br label %3345

3340:                                             ; preds = %3334
  %3341 = landingpad { ptr, i32 }
          cleanup
  br label %3344

3342:                                             ; preds = %3336
  %3343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %609) #11
  br label %3344

3344:                                             ; preds = %3342, %3340
  %.pn1060 = phi { ptr, i32 } [ %3343, %3342 ], [ %3341, %3340 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %609) #11
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %608) #11
  br label %3345

3345:                                             ; preds = %3344, %3338
  %.pn1060.pn = phi { ptr, i32 } [ %.pn1060, %3344 ], [ %3339, %3338 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %608) #11
  br label %3347

3346:                                             ; preds = %3328, %3337
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %605) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %578) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %320) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %297) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %219) #11
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %139) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #11
  ret void

3347:                                             ; preds = %3330, %3332, %3345
  %.pn1060.pn.pn = phi { ptr, i32 } [ %.pn1060.pn, %3345 ], [ %3333, %3332 ], [ %3331, %3330 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %605) #11
  br label %3348

3348:                                             ; preds = %3347, %3316, %3277, %3238, %3199, %3163
  %.pn1060.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn, %3347 ], [ %.pn1051.pn.pn, %3316 ], [ %.pn1042.pn.pn, %3277 ], [ %.pn1033.pn.pn, %3238 ], [ %.pn1024.pn.pn, %3199 ], [ %.pn1016.pn.pn, %3163 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %578) #11
  br label %3349

3349:                                             ; preds = %3348, %3125, %3097, %3072, %3047, %3022, %2997, %2972, %2947, %2922, %2897, %2872, %2847, %2822, %2797, %2772, %2747, %2722, %2697, %2667, %2638, %2610, %2583, %2553, %2524, %2494, %2465, %2435, %2406, %2376, %2347, %2317, %2288, %2258, %2229, %2201, %2174, %2146, %2119, %2093, %2067, %2041, %2015, %1989, %1966, %1938, %1910
  %.pn1060.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn, %3348 ], [ %.pn1007.pn.pn, %3125 ], [ %.pn1001.pn.pn, %3097 ], [ %.pn995.pn.pn, %3072 ], [ %.pn989.pn.pn, %3047 ], [ %.pn983.pn.pn, %3022 ], [ %.pn977.pn.pn, %2997 ], [ %.pn971.pn.pn, %2972 ], [ %.pn965.pn.pn, %2947 ], [ %.pn959.pn.pn, %2922 ], [ %.pn953.pn.pn, %2897 ], [ %.pn947.pn.pn, %2872 ], [ %.pn941.pn.pn, %2847 ], [ %.pn935.pn.pn, %2822 ], [ %.pn929.pn.pn, %2797 ], [ %.pn923.pn.pn, %2772 ], [ %.pn917.pn.pn, %2747 ], [ %.pn910.pn.pn.pn, %2722 ], [ %.pn905.pn.pn.pn, %2697 ], [ %.pn900.pn.pn.pn, %2667 ], [ %.pn895.pn.pn.pn, %2638 ], [ %.pn890.pn.pn.pn, %2610 ], [ %.pn885.pn.pn.pn, %2583 ], [ %.pn880.pn.pn.pn, %2553 ], [ %.pn875.pn.pn.pn, %2524 ], [ %.pn870.pn.pn.pn, %2494 ], [ %.pn865.pn.pn.pn, %2465 ], [ %.pn860.pn.pn.pn, %2435 ], [ %.pn855.pn.pn.pn, %2406 ], [ %.pn850.pn.pn.pn, %2376 ], [ %.pn845.pn.pn.pn, %2347 ], [ %.pn840.pn.pn.pn, %2317 ], [ %.pn835.pn.pn.pn, %2288 ], [ %.pn830.pn.pn.pn, %2258 ], [ %.pn825.pn.pn.pn, %2229 ], [ %.pn820.pn.pn.pn, %2201 ], [ %.pn815.pn.pn.pn, %2174 ], [ %.pn811.pn.pn, %2146 ], [ %.pn805.pn.pn, %2119 ], [ %.pn799.pn.pn, %2093 ], [ %.pn793.pn.pn, %2067 ], [ %.pn787.pn.pn, %2041 ], [ %.pn781.pn.pn, %2015 ], [ %.pn775.pn.pn, %1989 ], [ %.pn771.pn.pn, %1966 ], [ %.pn767.pn.pn, %1938 ], [ %.pn763.pn.pn, %1910 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %320) #11
  br label %3350

3350:                                             ; preds = %3349, %1882, %1854, %1831, %1808
  %.pn1060.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn.pn, %3349 ], [ %.pn759.pn.pn, %1882 ], [ %.pn755.pn.pn, %1854 ], [ %.pn751.pn.pn, %1831 ], [ %.pn747.pn.pn, %1808 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %297) #11
  br label %3351

3351:                                             ; preds = %3350, %1785, %1756, %1731, %1706, %1675, %1644, %1613, %1582, %1551, %1520, %1489, %1461, %1429
  %.pn1060.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn.pn.pn, %3350 ], [ %.pn743.pn.pn, %1785 ], [ %.pn737.pn.pn, %1756 ], [ %.pn731.pn.pn, %1731 ], [ %.pn725.pn.pn, %1706 ], [ %.pn719.pn.pn, %1675 ], [ %.pn713.pn.pn, %1644 ], [ %.pn707.pn.pn, %1613 ], [ %.pn701.pn.pn, %1582 ], [ %.pn695.pn.pn, %1551 ], [ %.pn689.pn.pn, %1520 ], [ %.pn683.pn.pn, %1489 ], [ %.pn679.pn.pn, %1461 ], [ %.pn671.pn.pn, %1429 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %219) #11
  br label %3352

3352:                                             ; preds = %3351, %1397, %1372, %1351, %1330, %1309, %1288, %1268, %1248, %1225, %1209, %1195, %1171, %1157, %1137, %1116, %1092
  %.pn1060.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn.pn.pn.pn, %3351 ], [ %.pn664.pn.pn, %1397 ], [ %.pn660.pn.pn, %1372 ], [ %.pn656.pn.pn, %1351 ], [ %.pn652.pn.pn, %1330 ], [ %.pn648.pn.pn, %1309 ], [ %.pn644.pn.pn, %1288 ], [ %.pn640.pn.pn, %1268 ], [ %.pn636.pn.pn, %1248 ], [ %.pn633.pn, %1225 ], [ %.pn630.pn, %1209 ], [ %.pn626.pn.pn, %1195 ], [ %.pn623.pn, %1171 ], [ %.pn619.pn.pn, %1157 ], [ %.pn615.pn.pn, %1137 ], [ %.pn611.pn.pn, %1116 ], [ %.pn607.pn.pn, %1092 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %139) #11
  br label %3353

3353:                                             ; preds = %3352, %1071, %1045, %1028, %996, %980
  %.pn1060.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn.pn.pn.pn.pn, %3352 ], [ %.pn605, %1071 ], [ %.pn601, %1045 ], [ %.pn597.pn.pn, %1028 ], [ %.pn592.pn, %996 ], [ %.pn589.pn, %980 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #11
  br label %3354

3354:                                             ; preds = %3353, %966, %941, %912, %886, %861, %836, %806, %790, %774, %758, %742, %726, %710, %696, %671, %640, %624
  %.pn1060.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1060.pn.pn.pn.pn.pn.pn.pn.pn, %3353 ], [ %.pn585.pn.pn, %966 ], [ %.pn578.pn.pn, %941 ], [ %.pn571.pn.pn, %912 ], [ %.pn565.pn.pn, %886 ], [ %.pn559.pn.pn, %861 ], [ %.pn553.pn.pn, %836 ], [ %.pn548.pn, %806 ], [ %.pn545.pn, %790 ], [ %.pn542.pn, %774 ], [ %.pn539.pn, %758 ], [ %.pn536.pn, %742 ], [ %.pn533.pn, %726 ], [ %.pn530.pn, %710 ], [ %.pn526.pn.pn, %696 ], [ %.pn519.pn.pn, %671 ], [ %.pn514.pn, %640 ], [ %.pn.pn, %624 ]
  resume { ptr, i32 } %.pn1060.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEhj(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef zeroext, i32 noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3

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

declare void @_ZN4chen11ip_version6C1EPKh(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(24)) unnamed_addr #3

declare void @_ZN4chen11ip_version6C1EPKhh(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef, i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen11ip_version6C1EPKhRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen10ip_address6isIPv6Ev(ptr noundef nonnull align 4 dereferenceable(28)) 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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA25_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(25), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version6E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA3_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(3), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA21_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(21), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA40_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(40), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare noundef nonnull align 4 dereferenceable(24) ptr @_ZN4chen10ip_address2v6Ev(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3

declare void @_ZNK4chen11ip_version68expandedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA30_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(30), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare void @_ZNK4chen11ip_version610suppressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare void @_ZNK4chen11ip_version610compressedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA19_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(19), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare void @_ZNK4chen11ip_version65mixedB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare void @_ZN4chen12inet_adapter5scopeB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EENS_15AssertionResultEPKcSC_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

declare void @_ZNK4chen11ip_version63strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen11ip_version4ES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2 align 2

declare i64 @_ZNK4chen11ip_version68embeddedEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIhLm16EE4dataEv(ptr noundef nonnull align 1 dereferenceable(16)) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareISt5arrayIhLm16EES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16)) local_unnamed_addr #2 align 2

declare noundef nonnull align 1 dereferenceable(16) ptr @_ZNK4chen11ip_version64addrEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare { i64, i64 } @_ZNK4chen11ip_version67netmaskEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare { i64, i64 } @_ZNK4chen11ip_version68wildcardEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA20_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(20), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA43_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(43), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare noundef zeroext i1 @_ZNK4chen11ip_version615isGlobalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version618isLinkLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version618isSiteLocalUnicastEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version616isIPv4CompatibleEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version612isIPv4MappedEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version623isIPv4EmbeddedWellKnownEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #3

declare { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare { i64, i64 } @_ZN4chen11ip_version67toBytesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN7testing8internal12ConstCharPtrE", !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !11, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !8, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !8, i64 0}
!16 = !{!8, !8, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass