; LLVM IR from chensoft/libsocket :: test/src/ip/ip_address.ll (ZN23IPAddressTest_IPv4_Test8TestBodyEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.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 }
%"struct.std::array" = type { [16 x 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 }
%"class.chen::ip_version4" = type { %"class.chen::ip_version", i32 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 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.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.62 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [133 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 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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23IPAddressTest_IPv4_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_version4", align 4
  %49 = alloca %"class.chen::ip_address", align 4
  %50 = alloca %"class.testing::Message", align 8
  %51 = alloca %"class.testing::internal::AssertHelper", align 8
  %52 = alloca %"class.testing::AssertionResult", align 8
  %53 = alloca %"class.chen::ip_address", align 4
  %54 = alloca %"class.chen::ip_version4", 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_version4", align 4
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator", align 1
  %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 %"struct.testing::internal::ConstCharPtr", align 8
  %67 = alloca i8, align 1
  %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 i32, align 4
  %72 = alloca ptr, align 8
  %73 = alloca %"class.testing::Message", align 8
  %74 = alloca %"class.testing::internal::AssertHelper", align 8
  %75 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %76 = alloca i8, align 1
  %77 = alloca %"class.chen::ip_address", align 4
  %78 = alloca %"class.chen::ip_version4", align 4
  %79 = alloca ptr, align 8
  %80 = alloca %"class.testing::Message", align 8
  %81 = alloca %"class.testing::internal::AssertHelper", align 8
  %82 = alloca %"class.chen::ip_address", align 4
  %83 = alloca %"class.testing::AssertionResult", align 8
  %84 = alloca i8, align 1
  %85 = alloca %"class.testing::Message", align 8
  %86 = alloca %"class.testing::internal::AssertHelper", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.testing::AssertionResult", align 8
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.testing::Message", align 8
  %91 = alloca %"class.testing::internal::AssertHelper", align 8
  %92 = alloca %"class.testing::AssertionResult", align 8
  %93 = alloca i32, align 4
  %94 = alloca i64, align 8
  %95 = alloca %"class.std::vector", align 8
  %96 = alloca %"class.testing::Message", align 8
  %97 = alloca %"class.testing::internal::AssertHelper", align 8
  %98 = alloca %"class.testing::AssertionResult", align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.testing::Message", align 8
  %101 = alloca %"class.testing::internal::AssertHelper", align 8
  %102 = alloca %"class.testing::AssertionResult", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.testing::Message", align 8
  %105 = alloca %"class.testing::internal::AssertHelper", align 8
  %106 = alloca %"class.testing::AssertionResult", align 8
  %107 = alloca i32, align 4
  %108 = alloca i8, align 1
  %109 = alloca %"class.testing::Message", align 8
  %110 = alloca %"class.testing::internal::AssertHelper", align 8
  %111 = alloca %"class.chen::ip_version4", align 4
  %112 = alloca %"class.testing::AssertionResult", align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.testing::Message", align 8
  %115 = alloca %"class.testing::internal::AssertHelper", align 8
  %116 = alloca %"class.testing::AssertionResult", align 8
  %117 = alloca i32, align 4
  %118 = alloca i8, align 1
  %119 = alloca %"class.testing::Message", align 8
  %120 = alloca %"class.testing::internal::AssertHelper", align 8
  %121 = alloca %"class.testing::AssertionResult", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.chen::ip_address", align 4
  %124 = alloca %"class.testing::Message", align 8
  %125 = alloca %"class.testing::internal::AssertHelper", align 8
  %126 = alloca %"class.testing::AssertionResult", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.chen::ip_address", align 4
  %129 = alloca %"class.testing::Message", align 8
  %130 = alloca %"class.testing::internal::AssertHelper", align 8
  %131 = alloca %"class.testing::AssertionResult", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.chen::ip_address", align 4
  %134 = alloca %"class.testing::Message", align 8
  %135 = alloca %"class.testing::internal::AssertHelper", align 8
  %136 = alloca %"class.testing::AssertionResult", align 8
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca %"class.chen::ip_address", align 4
  %139 = alloca %"class.chen::ip_version4", align 4
  %140 = alloca %"class.testing::Message", align 8
  %141 = alloca %"class.testing::internal::AssertHelper", align 8
  %142 = alloca %"class.testing::AssertionResult", align 8
  %143 = alloca %"class.std::__cxx11::basic_string", align 8
  %144 = alloca %"class.chen::ip_address", align 4
  %145 = alloca %"class.testing::Message", align 8
  %146 = alloca %"class.testing::internal::AssertHelper", align 8
  %147 = alloca %"class.testing::AssertionResult", align 8
  %148 = alloca %"class.std::__cxx11::basic_string", align 8
  %149 = alloca %"class.chen::ip_address", align 4
  %150 = alloca %"class.testing::Message", align 8
  %151 = alloca %"class.testing::internal::AssertHelper", align 8
  %152 = alloca %"class.testing::AssertionResult", align 8
  %153 = alloca %"class.std::__cxx11::basic_string", align 8
  %154 = alloca %"class.chen::ip_address", align 4
  %155 = alloca %"class.chen::ip_version4", align 4
  %156 = alloca %"class.testing::Message", align 8
  %157 = alloca %"class.testing::internal::AssertHelper", align 8
  %158 = alloca %"class.testing::AssertionResult", align 8
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.chen::ip_address", align 4
  %161 = alloca %"class.std::__cxx11::basic_string", align 8
  %162 = alloca %"class.std::allocator", align 1
  %163 = alloca %"class.testing::Message", align 8
  %164 = alloca %"class.testing::internal::AssertHelper", align 8
  %165 = alloca %"class.testing::AssertionResult", align 8
  %166 = alloca i32, align 4
  %167 = alloca i8, align 1
  %168 = alloca %"class.chen::ip_address", align 4
  %169 = alloca %"class.testing::Message", align 8
  %170 = alloca %"class.testing::internal::AssertHelper", align 8
  %171 = alloca %"class.testing::AssertionResult", align 8
  %172 = alloca i32, align 4
  %173 = alloca i8, align 1
  %174 = alloca %"class.chen::ip_address", align 4
  %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.chen::ip_address", align 4
  %181 = alloca %"class.testing::Message", align 8
  %182 = alloca %"class.testing::internal::AssertHelper", align 8
  %183 = alloca %"class.testing::AssertionResult", align 8
  %184 = alloca i32, align 4
  %185 = alloca i8, align 1
  %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 i32, align 4
  %191 = alloca %"class.chen::ip_address", align 4
  %192 = alloca i32, align 4
  %193 = alloca %"class.chen::ip_address", align 4
  %194 = alloca %"class.testing::Message", align 8
  %195 = alloca %"class.testing::internal::AssertHelper", align 8
  %196 = alloca %"class.testing::AssertionResult", align 8
  %197 = alloca i32, align 4
  %198 = alloca %"class.chen::ip_address", align 4
  %199 = alloca i32, align 4
  %200 = alloca %"class.chen::ip_address", align 4
  %201 = alloca %"class.testing::Message", align 8
  %202 = alloca %"class.testing::internal::AssertHelper", align 8
  %203 = alloca %"class.testing::AssertionResult", align 8
  %204 = alloca %"class.std::__cxx11::basic_string", align 8
  %205 = alloca %"class.chen::ip_address", align 4
  %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.chen::ip_address", align 4
  %213 = alloca %"class.testing::Message", align 8
  %214 = alloca %"class.testing::internal::AssertHelper", align 8
  %215 = alloca %"class.testing::AssertionResult", align 8
  %216 = alloca %"class.std::__cxx11::basic_string", align 8
  %217 = alloca %"class.chen::ip_address", align 4
  %218 = alloca %"class.chen::ip_address", align 4
  %219 = alloca %"class.testing::Message", align 8
  %220 = alloca %"class.testing::internal::AssertHelper", align 8
  %221 = alloca %"class.testing::AssertionResult", align 8
  %222 = alloca %"class.std::__cxx11::basic_string", align 8
  %223 = alloca %"class.chen::ip_version4", align 4
  %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.testing::AssertionResult", align 8
  %228 = alloca i32, align 4
  %229 = alloca i64, 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 i8, align 1
  %235 = alloca %"class.chen::ip_address", align 4
  %236 = alloca %"class.testing::Message", align 8
  %237 = alloca %"class.testing::internal::AssertHelper", align 8
  %238 = alloca %"class.std::__cxx11::basic_string", align 8
  %239 = alloca %"class.testing::AssertionResult", align 8
  %240 = alloca i8, align 1
  %241 = alloca %"class.chen::ip_address", align 4
  %242 = alloca %"class.testing::Message", align 8
  %243 = alloca %"class.testing::internal::AssertHelper", align 8
  %244 = alloca %"class.std::__cxx11::basic_string", align 8
  %245 = alloca %"class.testing::AssertionResult", align 8
  %246 = alloca i8, align 1
  %247 = alloca %"class.chen::ip_address", align 4
  %248 = alloca %"class.testing::Message", align 8
  %249 = alloca %"class.testing::internal::AssertHelper", align 8
  %250 = alloca %"class.std::__cxx11::basic_string", align 8
  %251 = alloca %"class.testing::AssertionResult", align 8
  %252 = alloca i8, align 1
  %253 = alloca %"class.chen::ip_address", align 4
  %254 = alloca %"class.testing::Message", align 8
  %255 = alloca %"class.testing::internal::AssertHelper", align 8
  %256 = alloca %"class.std::__cxx11::basic_string", align 8
  %257 = alloca %"class.testing::AssertionResult", align 8
  %258 = alloca i8, align 1
  %259 = alloca %"class.chen::ip_address", align 4
  %260 = alloca %"class.testing::Message", align 8
  %261 = alloca %"class.testing::internal::AssertHelper", align 8
  %262 = alloca %"class.std::__cxx11::basic_string", align 8
  %263 = alloca %"class.testing::AssertionResult", align 8
  %264 = alloca i8, align 1
  %265 = alloca %"class.chen::ip_address", align 4
  %266 = alloca %"class.testing::Message", align 8
  %267 = alloca %"class.testing::internal::AssertHelper", align 8
  %268 = alloca %"class.std::__cxx11::basic_string", align 8
  %269 = alloca %"class.testing::AssertionResult", align 8
  %270 = alloca i8, align 1
  %271 = alloca %"class.chen::ip_address", align 4
  %272 = alloca %"class.testing::Message", align 8
  %273 = alloca %"class.testing::internal::AssertHelper", align 8
  %274 = alloca %"class.std::__cxx11::basic_string", align 8
  %275 = alloca %"class.testing::AssertionResult", align 8
  %276 = alloca i8, align 1
  %277 = alloca %"class.chen::ip_address", align 4
  %278 = alloca %"class.testing::Message", align 8
  %279 = alloca %"class.testing::internal::AssertHelper", align 8
  %280 = alloca %"class.std::__cxx11::basic_string", align 8
  %281 = alloca %"class.testing::AssertionResult", align 8
  %282 = alloca i8, align 1
  %283 = alloca %"class.chen::ip_address", align 4
  %284 = alloca %"class.testing::Message", align 8
  %285 = alloca %"class.testing::internal::AssertHelper", align 8
  %286 = alloca %"class.std::__cxx11::basic_string", align 8
  %287 = alloca %"class.testing::AssertionResult", align 8
  %288 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %293 = alloca %"class.testing::AssertionResult", align 8
  %294 = alloca i8, align 1
  %295 = alloca %"class.chen::ip_address", align 4
  %296 = alloca %"class.testing::Message", align 8
  %297 = alloca %"class.testing::internal::AssertHelper", align 8
  %298 = alloca %"class.std::__cxx11::basic_string", align 8
  %299 = alloca %"class.testing::AssertionResult", align 8
  %300 = alloca i8, align 1
  %301 = alloca %"class.chen::ip_address", align 4
  %302 = alloca %"class.testing::Message", align 8
  %303 = alloca %"class.testing::internal::AssertHelper", align 8
  %304 = alloca %"class.std::__cxx11::basic_string", align 8
  %305 = alloca %"class.testing::AssertionResult", align 8
  %306 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %311 = alloca %"class.testing::AssertionResult", align 8
  %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.std::__cxx11::basic_string", align 8
  %317 = alloca %"class.testing::AssertionResult", align 8
  %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.std::__cxx11::basic_string", align 8
  %323 = alloca %"class.testing::AssertionResult", align 8
  %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 %"class.std::__cxx11::basic_string", align 8
  %329 = alloca %"class.testing::AssertionResult", align 8
  %330 = alloca i8, align 1
  %331 = alloca %"class.chen::ip_address", align 4
  %332 = alloca %"class.testing::Message", align 8
  %333 = alloca %"class.testing::internal::AssertHelper", align 8
  %334 = alloca %"class.std::__cxx11::basic_string", align 8
  %335 = alloca %"class.testing::AssertionResult", align 8
  %336 = alloca i8, 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 %"class.std::__cxx11::basic_string", align 8
  %341 = alloca %"class.testing::AssertionResult", align 8
  %342 = alloca i8, align 1
  %343 = alloca %"class.chen::ip_address", align 4
  %344 = alloca %"class.testing::Message", align 8
  %345 = alloca %"class.testing::internal::AssertHelper", align 8
  %346 = alloca %"class.std::__cxx11::basic_string", align 8
  %347 = alloca %"class.testing::AssertionResult", align 8
  %348 = alloca i8, 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.std::__cxx11::basic_string", align 8
  %353 = alloca %"class.testing::AssertionResult", align 8
  %354 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %359 = alloca %"class.testing::AssertionResult", align 8
  %360 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %365 = alloca %"class.testing::AssertionResult", align 8
  %366 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %371 = alloca %"class.testing::AssertionResult", align 8
  %372 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %377 = alloca %"class.testing::AssertionResult", align 8
  %378 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %383 = alloca %"class.testing::AssertionResult", align 8
  %384 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %389 = alloca %"class.testing::AssertionResult", align 8
  %390 = alloca i8, align 1
  %391 = alloca %"class.chen::ip_address", align 4
  %392 = alloca %"class.testing::Message", align 8
  %393 = alloca %"class.testing::internal::AssertHelper", align 8
  %394 = alloca %"class.std::__cxx11::basic_string", align 8
  %395 = alloca %"class.testing::AssertionResult", align 8
  %396 = alloca i8, align 1
  %397 = alloca %"class.chen::ip_address", align 4
  %398 = alloca %"class.testing::Message", align 8
  %399 = alloca %"class.testing::internal::AssertHelper", align 8
  %400 = alloca %"class.std::__cxx11::basic_string", align 8
  %401 = alloca %"class.testing::AssertionResult", align 8
  %402 = alloca i8, align 1
  %403 = alloca %"class.chen::ip_address", align 4
  %404 = alloca %"class.testing::Message", align 8
  %405 = alloca %"class.testing::internal::AssertHelper", align 8
  %406 = alloca %"class.std::__cxx11::basic_string", align 8
  %407 = alloca %"class.testing::AssertionResult", align 8
  %408 = alloca i8, align 1
  %409 = alloca %"class.chen::ip_address", align 4
  %410 = alloca %"class.testing::Message", align 8
  %411 = alloca %"class.testing::internal::AssertHelper", align 8
  %412 = alloca %"class.std::__cxx11::basic_string", align 8
  %413 = alloca %"class.testing::AssertionResult", align 8
  %414 = alloca i8, align 1
  %415 = alloca %"class.chen::ip_address", align 4
  %416 = alloca %"class.testing::Message", align 8
  %417 = alloca %"class.testing::internal::AssertHelper", align 8
  %418 = alloca %"class.std::__cxx11::basic_string", align 8
  %419 = alloca %"class.testing::AssertionResult", align 8
  %420 = alloca i8, align 1
  %421 = alloca %"class.chen::ip_address", align 4
  %422 = alloca %"class.testing::Message", align 8
  %423 = alloca %"class.testing::internal::AssertHelper", align 8
  %424 = alloca %"class.std::__cxx11::basic_string", align 8
  %425 = alloca %"class.testing::AssertionResult", align 8
  %426 = alloca i8, align 1
  %427 = alloca %"class.chen::ip_address", align 4
  %428 = alloca %"class.testing::Message", align 8
  %429 = alloca %"class.testing::internal::AssertHelper", align 8
  %430 = alloca %"class.std::__cxx11::basic_string", align 8
  %431 = alloca %"class.testing::AssertionResult", align 8
  %432 = alloca i8, align 1
  %433 = alloca %"class.chen::ip_address", align 4
  %434 = alloca %"class.testing::Message", align 8
  %435 = alloca %"class.testing::internal::AssertHelper", align 8
  %436 = alloca %"class.std::__cxx11::basic_string", align 8
  %437 = alloca %"class.testing::AssertionResult", align 8
  %438 = alloca i8, align 1
  %439 = alloca %"class.chen::ip_address", align 4
  %440 = alloca %"class.testing::Message", align 8
  %441 = alloca %"class.testing::internal::AssertHelper", align 8
  %442 = alloca %"class.std::__cxx11::basic_string", align 8
  %443 = alloca %"class.testing::AssertionResult", align 8
  %444 = alloca i8, align 1
  %445 = alloca %"class.chen::ip_address", align 4
  %446 = alloca %"class.testing::Message", align 8
  %447 = alloca %"class.testing::internal::AssertHelper", align 8
  %448 = alloca %"class.std::__cxx11::basic_string", align 8
  %449 = alloca %"class.testing::AssertionResult", align 8
  %450 = alloca i8, align 1
  %451 = alloca %"class.chen::ip_address", align 4
  %452 = alloca %"class.testing::Message", align 8
  %453 = alloca %"class.testing::internal::AssertHelper", align 8
  %454 = alloca %"class.std::__cxx11::basic_string", align 8
  %455 = alloca %"class.testing::AssertionResult", align 8
  %456 = alloca i8, align 1
  %457 = alloca %"class.chen::ip_address", align 4
  %458 = alloca %"class.testing::Message", align 8
  %459 = alloca %"class.testing::internal::AssertHelper", align 8
  %460 = alloca %"class.std::__cxx11::basic_string", align 8
  %461 = alloca %"class.testing::AssertionResult", align 8
  %462 = alloca i8, align 1
  %463 = alloca %"class.chen::ip_address", align 4
  %464 = alloca %"class.testing::Message", align 8
  %465 = alloca %"class.testing::internal::AssertHelper", align 8
  %466 = alloca %"class.std::__cxx11::basic_string", align 8
  %467 = alloca %"class.testing::AssertionResult", align 8
  %468 = alloca i8, align 1
  %469 = alloca %"class.chen::ip_address", align 4
  %470 = alloca %"class.testing::Message", align 8
  %471 = alloca %"class.testing::internal::AssertHelper", align 8
  %472 = alloca %"class.std::__cxx11::basic_string", align 8
  %473 = alloca %"class.testing::AssertionResult", align 8
  %474 = alloca i8, align 1
  %475 = alloca %"class.chen::ip_address", align 4
  %476 = alloca %"class.testing::Message", align 8
  %477 = alloca %"class.testing::internal::AssertHelper", align 8
  %478 = alloca %"class.std::__cxx11::basic_string", align 8
  %479 = alloca %"class.testing::AssertionResult", align 8
  %480 = alloca i8, align 1
  %481 = alloca %"class.chen::ip_address", align 4
  %482 = alloca %"class.testing::Message", align 8
  %483 = alloca %"class.testing::internal::AssertHelper", align 8
  %484 = alloca %"class.std::__cxx11::basic_string", align 8
  %485 = alloca %"class.testing::AssertionResult", align 8
  %486 = alloca i8, align 1
  %487 = alloca %"class.chen::ip_address", align 4
  %488 = alloca %"class.testing::Message", align 8
  %489 = alloca %"class.testing::internal::AssertHelper", align 8
  %490 = alloca %"class.std::__cxx11::basic_string", align 8
  %491 = alloca %"class.testing::AssertionResult", align 8
  %492 = alloca i8, align 1
  %493 = alloca %"class.chen::ip_address", align 4
  %494 = alloca %"class.testing::Message", align 8
  %495 = alloca %"class.testing::internal::AssertHelper", align 8
  %496 = alloca %"class.std::__cxx11::basic_string", align 8
  %497 = alloca %"class.testing::AssertionResult", align 8
  %498 = alloca i8, align 1
  %499 = alloca %"class.chen::ip_address", align 4
  %500 = alloca %"class.testing::Message", align 8
  %501 = alloca %"class.testing::internal::AssertHelper", align 8
  %502 = alloca %"class.std::__cxx11::basic_string", align 8
  %503 = alloca %"class.testing::AssertionResult", align 8
  %504 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %509 = alloca %"class.testing::AssertionResult", align 8
  %510 = alloca i8, align 1
  %511 = alloca %"class.chen::ip_address", align 4
  %512 = alloca %"class.testing::Message", align 8
  %513 = alloca %"class.testing::internal::AssertHelper", align 8
  %514 = alloca %"class.std::__cxx11::basic_string", align 8
  %515 = alloca %"class.testing::AssertionResult", align 8
  %516 = alloca i8, align 1
  %517 = alloca %"class.chen::ip_address", align 4
  %518 = alloca %"class.testing::Message", align 8
  %519 = alloca %"class.testing::internal::AssertHelper", align 8
  %520 = alloca %"class.std::__cxx11::basic_string", align 8
  %521 = alloca %"class.testing::AssertionResult", align 8
  %522 = alloca i8, align 1
  %523 = alloca %"class.chen::ip_address", align 4
  %524 = alloca %"class.testing::Message", align 8
  %525 = alloca %"class.testing::internal::AssertHelper", align 8
  %526 = alloca %"class.std::__cxx11::basic_string", align 8
  %527 = alloca %"class.testing::AssertionResult", align 8
  %528 = alloca i8, align 1
  %529 = alloca %"class.chen::ip_address", align 4
  %530 = alloca %"class.testing::Message", align 8
  %531 = alloca %"class.testing::internal::AssertHelper", align 8
  %532 = alloca %"class.std::__cxx11::basic_string", align 8
  %533 = alloca %"class.testing::AssertionResult", align 8
  %534 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %539 = alloca %"class.testing::AssertionResult", align 8
  %540 = alloca i8, align 1
  %541 = alloca %"class.chen::ip_address", align 4
  %542 = alloca %"class.testing::Message", align 8
  %543 = alloca %"class.testing::internal::AssertHelper", align 8
  %544 = alloca %"class.std::__cxx11::basic_string", align 8
  %545 = alloca %"class.testing::AssertionResult", align 8
  %546 = alloca i8, align 1
  %547 = alloca %"class.chen::ip_address", align 4
  %548 = alloca %"class.testing::Message", align 8
  %549 = alloca %"class.testing::internal::AssertHelper", align 8
  %550 = alloca %"class.std::__cxx11::basic_string", align 8
  %551 = alloca %"class.testing::AssertionResult", align 8
  %552 = alloca i8, align 1
  %553 = alloca %"class.chen::ip_address", align 4
  %554 = alloca %"class.testing::Message", align 8
  %555 = alloca %"class.testing::internal::AssertHelper", align 8
  %556 = alloca %"class.std::__cxx11::basic_string", align 8
  %557 = alloca %"class.testing::AssertionResult", align 8
  %558 = alloca i8, align 1
  %559 = alloca %"class.chen::ip_address", align 4
  %560 = alloca %"class.testing::Message", align 8
  %561 = alloca %"class.testing::internal::AssertHelper", align 8
  %562 = alloca %"class.std::__cxx11::basic_string", align 8
  %563 = alloca %"class.testing::AssertionResult", align 8
  %564 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %569 = alloca %"class.testing::AssertionResult", align 8
  %570 = alloca i8, align 1
  %571 = alloca %"class.chen::ip_address", align 4
  %572 = alloca %"class.testing::Message", align 8
  %573 = alloca %"class.testing::internal::AssertHelper", align 8
  %574 = alloca %"class.std::__cxx11::basic_string", align 8
  %575 = alloca %"class.testing::AssertionResult", align 8
  %576 = alloca i8, align 1
  %577 = alloca %"class.chen::ip_address", align 4
  %578 = alloca %"class.testing::Message", align 8
  %579 = alloca %"class.testing::internal::AssertHelper", align 8
  %580 = alloca %"class.std::__cxx11::basic_string", align 8
  %581 = alloca %"class.testing::AssertionResult", align 8
  %582 = alloca i8, align 1
  %583 = alloca %"class.chen::ip_address", align 4
  %584 = alloca %"class.testing::Message", align 8
  %585 = alloca %"class.testing::internal::AssertHelper", align 8
  %586 = alloca %"class.std::__cxx11::basic_string", align 8
  %587 = alloca %"class.testing::AssertionResult", align 8
  %588 = alloca %"class.chen::ip_address", align 4
  %589 = alloca %"class.chen::ip_address", align 4
  %590 = alloca %"class.testing::Message", align 8
  %591 = alloca %"class.testing::internal::AssertHelper", align 8
  %592 = alloca %"class.testing::AssertionResult", align 8
  %593 = alloca %"class.chen::ip_address", align 4
  %594 = alloca %"class.chen::ip_address", align 4
  %595 = alloca %"class.testing::Message", align 8
  %596 = alloca %"class.testing::internal::AssertHelper", align 8
  %597 = alloca %"class.testing::AssertionResult", align 8
  %598 = alloca %"class.chen::ip_address", align 4
  %599 = alloca %"class.chen::ip_address", align 4
  %600 = alloca %"class.testing::Message", align 8
  %601 = alloca %"class.testing::internal::AssertHelper", align 8
  %602 = alloca %"class.testing::AssertionResult", align 8
  %603 = alloca %"class.chen::ip_address", align 4
  %604 = alloca %"class.chen::ip_address", align 4
  %605 = alloca %"class.testing::Message", align 8
  %606 = alloca %"class.testing::internal::AssertHelper", align 8
  %607 = alloca %"class.testing::AssertionResult", align 8
  %608 = alloca %"class.chen::ip_address", align 4
  %609 = alloca %"class.chen::ip_address", align 4
  %610 = alloca %"class.testing::Message", align 8
  %611 = alloca %"class.testing::internal::AssertHelper", align 8
  %612 = alloca %"class.testing::AssertionResult", align 8
  %613 = alloca %"class.chen::ip_address", align 4
  %614 = alloca %"class.chen::ip_address", align 4
  %615 = alloca %"class.testing::Message", align 8
  %616 = alloca %"class.testing::internal::AssertHelper", align 8
  %617 = alloca %"class.testing::AssertionResult", align 8
  %618 = alloca %"class.chen::ip_address", align 4
  %619 = alloca %"class.chen::ip_address", align 4
  %620 = alloca %"class.testing::Message", align 8
  %621 = alloca %"class.testing::internal::AssertHelper", align 8
  %622 = alloca %"class.testing::AssertionResult", align 8
  %623 = alloca %"class.chen::ip_address", align 4
  %624 = alloca %"class.chen::ip_address", align 4
  %625 = alloca %"class.testing::Message", align 8
  %626 = alloca %"class.testing::internal::AssertHelper", align 8
  %627 = alloca %"class.testing::AssertionResult", align 8
  %628 = alloca %"class.chen::ip_address", align 4
  %629 = alloca %"class.chen::ip_address", align 4
  %630 = alloca %"class.testing::Message", align 8
  %631 = alloca %"class.testing::internal::AssertHelper", align 8
  %632 = alloca %"class.testing::AssertionResult", align 8
  %633 = alloca %"class.chen::ip_address", align 4
  %634 = alloca %"class.chen::ip_address", align 4
  %635 = alloca %"class.testing::Message", align 8
  %636 = alloca %"class.testing::internal::AssertHelper", align 8
  %637 = alloca %"class.testing::AssertionResult", align 8
  %638 = alloca %"class.chen::ip_address", align 4
  %639 = alloca %"class.chen::ip_address", align 4
  %640 = alloca %"class.testing::Message", align 8
  %641 = alloca %"class.testing::internal::AssertHelper", align 8
  %642 = alloca %"class.testing::AssertionResult", align 8
  %643 = alloca %"class.chen::ip_address", align 4
  %644 = alloca %"class.chen::ip_address", align 4
  %645 = alloca %"class.testing::Message", align 8
  %646 = alloca %"class.testing::internal::AssertHelper", align 8
  %647 = alloca %"class.testing::AssertionResult", align 8
  %648 = alloca %"class.chen::ip_address", align 4
  %649 = alloca %"class.chen::ip_address", align 4
  %650 = alloca %"class.testing::Message", align 8
  %651 = alloca %"class.testing::internal::AssertHelper", align 8
  %652 = alloca %"class.testing::AssertionResult", align 8
  %653 = alloca %"class.chen::ip_address", align 4
  %654 = alloca %"class.chen::ip_address", align 4
  %655 = alloca %"class.testing::Message", align 8
  %656 = alloca %"class.testing::internal::AssertHelper", align 8
  %657 = alloca %"class.testing::AssertionResult", align 8
  %658 = alloca %"class.std::__cxx11::basic_string", align 8
  %659 = alloca %"class.chen::ip_address", align 4
  %660 = alloca %"class.testing::Message", align 8
  %661 = alloca %"class.testing::internal::AssertHelper", align 8
  %662 = alloca %"class.testing::AssertionResult", align 8
  %663 = alloca %"class.std::__cxx11::basic_string", align 8
  %664 = alloca %"class.chen::ip_address", align 4
  %665 = alloca %"class.testing::Message", align 8
  %666 = alloca %"class.testing::internal::AssertHelper", align 8
  %667 = alloca i8, align 1
  %668 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %669 = alloca i8, align 1
  %670 = alloca %"class.std::__cxx11::basic_string", align 8
  %671 = alloca %"class.std::allocator", align 1
  %672 = alloca ptr, align 8
  %673 = alloca %"class.testing::Message", align 8
  %674 = alloca %"class.testing::internal::AssertHelper", align 8
  %675 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %676 = alloca i8, align 1
  %677 = alloca %"class.std::__cxx11::basic_string", align 8
  %678 = alloca %"class.std::allocator", align 1
  %679 = alloca ptr, align 8
  %680 = alloca %"class.testing::Message", align 8
  %681 = alloca %"class.testing::internal::AssertHelper", align 8
  %682 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %683 = alloca i8, align 1
  %684 = alloca %"class.std::__cxx11::basic_string", align 8
  %685 = alloca %"class.std::allocator", align 1
  %686 = alloca ptr, align 8
  %687 = alloca %"class.testing::Message", align 8
  %688 = alloca %"class.testing::internal::AssertHelper", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %689 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %4) #7
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %4, i8 noundef zeroext 2)
  call void @llvm.lifetime.start.p0(i64 28, ptr %5) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %5, ptr noundef @.str.43)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %3, ptr noundef @.str.35, ptr noundef @.str.42, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %4) #7
  %690 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %691 unwind label %693

691:                                              ; preds = %1
  br i1 %690, label %692, label %697

692:                                              ; preds = %691
  br label %717

693:                                              ; preds = %1
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %6, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %7, align 4
  br label %721

697:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %698 unwind label %703

698:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %699 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %700 unwind label %707

700:                                              ; preds = %698
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef 1, ptr noundef @.str.4, i32 noundef 58, ptr noundef %699)
          to label %701 unwind label %707

701:                                              ; preds = %700
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %702 unwind label %711

702:                                              ; preds = %701
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %717

703:                                              ; preds = %697
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %6, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %7, align 4
  br label %716

707:                                              ; preds = %700, %698
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %6, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %7, align 4
  br label %715

711:                                              ; preds = %701
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %6, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br label %715

715:                                              ; preds = %711, %707
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %716

716:                                              ; preds = %715, %703
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %721

717:                                              ; preds = %702, %692
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %11) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %11, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %12) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %12, ptr noundef @.str.45)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %10, ptr noundef @.str.44, ptr noundef @.str.44, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %11) #7
  %718 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %719 unwind label %722

719:                                              ; preds = %717
  br i1 %718, label %720, label %726

720:                                              ; preds = %719
  br label %746

721:                                              ; preds = %716, %693
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  br label %4919

722:                                              ; preds = %717
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %6, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %7, align 4
  br label %753

726:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %727 unwind label %732

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %728 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %729 unwind label %736

729:                                              ; preds = %727
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 1, ptr noundef @.str.4, i32 noundef 60, ptr noundef %728)
          to label %730 unwind label %736

730:                                              ; preds = %729
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %731 unwind label %740

731:                                              ; preds = %730
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %746

732:                                              ; preds = %726
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %6, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %7, align 4
  br label %745

736:                                              ; preds = %729, %727
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %6, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %7, align 4
  br label %744

740:                                              ; preds = %730
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %6, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %744

744:                                              ; preds = %740, %736
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br label %745

745:                                              ; preds = %744, %732
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %753

746:                                              ; preds = %731, %720
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %16) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %16, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %747 unwind label %754

747:                                              ; preds = %746
  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 8)
          to label %748 unwind label %758

748:                                              ; preds = %747
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %15, ptr noundef @.str.44, ptr noundef @.str.46, ptr noundef nonnull align 4 dereferenceable(28) %16, ptr noundef nonnull align 4 dereferenceable(28) %17)
          to label %749 unwind label %758

749:                                              ; preds = %748
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %16) #7
  %750 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %751 unwind label %763

751:                                              ; preds = %749
  br i1 %750, label %752, label %767

752:                                              ; preds = %751
  br label %787

753:                                              ; preds = %745, %722
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  br label %4919

754:                                              ; preds = %746
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %6, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %7, align 4
  br label %762

758:                                              ; preds = %748, %747
  %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
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %762

762:                                              ; preds = %758, %754
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %16) #7
  br label %796

763:                                              ; preds = %749
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %6, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %7, align 4
  br label %795

767:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %768 unwind label %773

768:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %769 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %770 unwind label %777

770:                                              ; preds = %768
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %21, i32 noundef 1, ptr noundef @.str.4, i32 noundef 61, ptr noundef %769)
          to label %771 unwind label %777

771:                                              ; preds = %770
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %772 unwind label %781

772:                                              ; preds = %771
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %787

773:                                              ; preds = %767
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %6, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %7, align 4
  br label %786

777:                                              ; preds = %770, %768
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %6, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %7, align 4
  br label %785

781:                                              ; preds = %771
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %6, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br label %785

785:                                              ; preds = %781, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br label %786

786:                                              ; preds = %785, %773
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %795

787:                                              ; preds = %772, %752
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %23) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %23, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %788 unwind label %797

788:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %789 unwind label %801

789:                                              ; preds = %788
  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 %790 unwind label %805

790:                                              ; preds = %789
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %22, ptr noundef @.str.44, ptr noundef @.str.47, ptr noundef nonnull align 4 dereferenceable(28) %23, ptr noundef nonnull align 4 dereferenceable(28) %24)
          to label %791 unwind label %805

791:                                              ; preds = %790
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %23) #7
  %792 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %793 unwind label %811

793:                                              ; preds = %791
  br i1 %792, label %794, label %815

794:                                              ; preds = %793
  br label %835

795:                                              ; preds = %786, %763
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  br label %796

796:                                              ; preds = %795, %762
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  br label %4919

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

801:                                              ; preds = %788
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %6, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %7, align 4
  br label %809

805:                                              ; preds = %790, %789
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %6, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %809

809:                                              ; preds = %805, %801
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %810

810:                                              ; preds = %809, %797
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %23) #7
  br label %840

811:                                              ; preds = %791
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %6, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %7, align 4
  br label %839

815:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %816 unwind label %821

816:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %817 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %818 unwind label %825

818:                                              ; preds = %816
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 1, ptr noundef @.str.4, i32 noundef 62, ptr noundef %817)
          to label %819 unwind label %825

819:                                              ; preds = %818
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %820 unwind label %829

820:                                              ; preds = %819
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %835

821:                                              ; preds = %815
  %822 = landingpad { ptr, i32 }
          cleanup
  %823 = extractvalue { ptr, i32 } %822, 0
  store ptr %823, ptr %6, align 8
  %824 = extractvalue { ptr, i32 } %822, 1
  store i32 %824, ptr %7, align 4
  br label %834

825:                                              ; preds = %818, %816
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %6, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %7, align 4
  br label %833

829:                                              ; preds = %819
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %6, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %833

833:                                              ; preds = %829, %825
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br label %834

834:                                              ; preds = %833, %821
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %839

835:                                              ; preds = %820, %794
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %32) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %32, ptr noundef @.str.17)
  call void @llvm.lifetime.start.p0(i64 28, ptr %33) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %33, ptr noundef @.str.51)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %31, ptr noundef @.str.49, ptr noundef @.str.50, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %32) #7
  %836 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %837 unwind label %841

837:                                              ; preds = %835
  br i1 %836, label %838, label %845

838:                                              ; preds = %837
  br label %865

839:                                              ; preds = %834, %811
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %840

840:                                              ; preds = %839, %810
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br label %4919

841:                                              ; preds = %835
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %6, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %7, align 4
  br label %869

845:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %846 unwind label %851

846:                                              ; preds = %845
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %847 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %848 unwind label %855

848:                                              ; preds = %846
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef 1, ptr noundef @.str.4, i32 noundef 64, ptr noundef %847)
          to label %849 unwind label %855

849:                                              ; preds = %848
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %850 unwind label %859

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

851:                                              ; preds = %845
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %6, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %7, align 4
  br label %864

855:                                              ; preds = %848, %846
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %6, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %7, align 4
  br label %863

859:                                              ; preds = %849
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %6, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %863

863:                                              ; preds = %859, %855
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  br label %864

864:                                              ; preds = %863, %851
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %869

865:                                              ; preds = %850, %838
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %37) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %37, ptr noundef @.str.54)
  call void @llvm.lifetime.start.p0(i64 28, ptr %38) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %38, ptr noundef @.str.7)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %36, ptr noundef @.str.52, ptr noundef @.str.53, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %37) #7
  %866 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %867 unwind label %870

867:                                              ; preds = %865
  br i1 %866, label %868, label %874

868:                                              ; preds = %867
  br label %894

869:                                              ; preds = %864, %841
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #7
  br label %4919

870:                                              ; preds = %865
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %6, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %7, align 4
  br label %898

874:                                              ; preds = %867
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %875 unwind label %880

875:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %876 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %877 unwind label %884

877:                                              ; preds = %875
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 1, ptr noundef @.str.4, i32 noundef 65, ptr noundef %876)
          to label %878 unwind label %884

878:                                              ; preds = %877
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %879 unwind label %888

879:                                              ; preds = %878
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %894

880:                                              ; preds = %874
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %6, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %7, align 4
  br label %893

884:                                              ; preds = %877, %875
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %6, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %7, align 4
  br label %892

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

892:                                              ; preds = %888, %884
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %893

893:                                              ; preds = %892, %880
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %898

894:                                              ; preds = %879, %868
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %42) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %42, ptr noundef @.str.57)
  call void @llvm.lifetime.start.p0(i64 28, ptr %43) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %43, ptr noundef @.str.58)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %41, ptr noundef @.str.55, ptr noundef @.str.56, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %42) #7
  %895 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %896 unwind label %899

896:                                              ; preds = %894
  br i1 %895, label %897, label %903

897:                                              ; preds = %896
  br label %923

898:                                              ; preds = %893, %870
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  br label %4919

899:                                              ; preds = %894
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %6, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %7, align 4
  br label %927

903:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %904 unwind label %909

904:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %905 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %906 unwind label %913

906:                                              ; preds = %904
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 1, ptr noundef @.str.4, i32 noundef 66, ptr noundef %905)
          to label %907 unwind label %913

907:                                              ; preds = %906
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %908 unwind label %917

908:                                              ; preds = %907
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %923

909:                                              ; preds = %903
  %910 = landingpad { ptr, i32 }
          cleanup
  %911 = extractvalue { ptr, i32 } %910, 0
  store ptr %911, ptr %6, align 8
  %912 = extractvalue { ptr, i32 } %910, 1
  store i32 %912, ptr %7, align 4
  br label %922

913:                                              ; preds = %906, %904
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %6, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %7, align 4
  br label %921

917:                                              ; preds = %907
  %918 = landingpad { ptr, i32 }
          cleanup
  %919 = extractvalue { ptr, i32 } %918, 0
  store ptr %919, ptr %6, align 8
  %920 = extractvalue { ptr, i32 } %918, 1
  store i32 %920, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br label %921

921:                                              ; preds = %917, %913
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br label %922

922:                                              ; preds = %921, %909
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %927

923:                                              ; preds = %908, %897
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef 2130706433)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %47, ptr noundef nonnull align 4 dereferenceable(8) %48)
  call void @llvm.lifetime.start.p0(i64 28, ptr %49) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %49, ptr noundef @.str.7)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %46, ptr noundef @.str.59, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %47, ptr noundef nonnull align 4 dereferenceable(28) %49)
  call void @llvm.lifetime.end.p0(i64 28, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %47) #7
  %924 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %925 unwind label %928

925:                                              ; preds = %923
  br i1 %924, label %926, label %932

926:                                              ; preds = %925
  br label %952

927:                                              ; preds = %922, %899
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  br label %4919

928:                                              ; preds = %923
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %6, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %7, align 4
  br label %956

932:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %933 unwind label %938

933:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %934 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %935 unwind label %942

935:                                              ; preds = %933
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %51, i32 noundef 1, ptr noundef @.str.4, i32 noundef 68, ptr noundef %934)
          to label %936 unwind label %942

936:                                              ; preds = %935
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %937 unwind label %946

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

938:                                              ; preds = %932
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %6, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %7, align 4
  br label %951

942:                                              ; preds = %935, %933
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %6, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %7, align 4
  br label %950

946:                                              ; preds = %936
  %947 = landingpad { ptr, i32 }
          cleanup
  %948 = extractvalue { ptr, i32 } %947, 0
  store ptr %948, ptr %6, align 8
  %949 = extractvalue { ptr, i32 } %947, 1
  store i32 %949, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  br label %950

950:                                              ; preds = %946, %942
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br label %951

951:                                              ; preds = %950, %938
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br label %956

952:                                              ; preds = %937, %926
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  call void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %54, i32 noundef 2130706433, i8 noundef zeroext 8)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %53, ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.start.p0(i64 28, ptr %55) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %55, ptr noundef @.str.45)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %52, ptr noundef @.str.60, ptr noundef @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %53, ptr noundef nonnull align 4 dereferenceable(28) %55)
  call void @llvm.lifetime.end.p0(i64 28, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %53) #7
  %953 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %954 unwind label %957

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

955:                                              ; preds = %954
  br label %981

956:                                              ; preds = %951, %928
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  br label %4919

957:                                              ; preds = %952
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %6, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %7, align 4
  br label %990

961:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %962 unwind label %967

962:                                              ; preds = %961
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %963 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %964 unwind label %971

964:                                              ; preds = %962
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %57, i32 noundef 1, ptr noundef @.str.4, i32 noundef 69, ptr noundef %963)
          to label %965 unwind label %971

965:                                              ; preds = %964
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %966 unwind label %975

966:                                              ; preds = %965
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %981

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

971:                                              ; preds = %964, %962
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %6, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %7, align 4
  br label %979

975:                                              ; preds = %965
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %6, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br label %979

979:                                              ; preds = %975, %971
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br label %980

980:                                              ; preds = %979, %967
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %990

981:                                              ; preds = %966, %955
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %982 unwind label %991

982:                                              ; preds = %981
  invoke void @_ZN4chen11ip_version4C1EjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(8) %60, i32 noundef 2130706433, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %983 unwind label %995

983:                                              ; preds = %982
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %59, ptr noundef nonnull align 4 dereferenceable(8) %60)
          to label %984 unwind label %995

984:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 28, ptr %63) #7
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %63, ptr noundef @.str.45)
          to label %985 unwind label %999

985:                                              ; preds = %984
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %58, ptr noundef @.str.61, ptr noundef @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %59, ptr noundef nonnull align 4 dereferenceable(28) %63)
          to label %986 unwind label %999

986:                                              ; preds = %985
  call void @llvm.lifetime.end.p0(i64 28, ptr %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %59) #7
  %987 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %988 unwind label %1005

988:                                              ; preds = %986
  br i1 %987, label %989, label %1009

989:                                              ; preds = %988
  br label %1029

990:                                              ; preds = %980, %957
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  br label %4919

991:                                              ; preds = %981
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %6, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %7, align 4
  br label %1004

995:                                              ; preds = %983, %982
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %6, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %7, align 4
  br label %1003

999:                                              ; preds = %985, %984
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %6, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %63) #7
  br label %1003

1003:                                             ; preds = %999, %995
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %1004

1004:                                             ; preds = %1003, %991
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %59) #7
  br label %1038

1005:                                             ; preds = %986
  %1006 = landingpad { ptr, i32 }
          cleanup
  %1007 = extractvalue { ptr, i32 } %1006, 0
  store ptr %1007, ptr %6, align 8
  %1008 = extractvalue { ptr, i32 } %1006, 1
  store i32 %1008, ptr %7, align 4
  br label %1037

1009:                                             ; preds = %988
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %1010 unwind label %1015

1010:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %1011 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %1012 unwind label %1019

1012:                                             ; preds = %1010
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef 1, ptr noundef @.str.4, i32 noundef 70, ptr noundef %1011)
          to label %1013 unwind label %1019

1013:                                             ; preds = %1012
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %1014 unwind label %1023

1014:                                             ; preds = %1013
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %1029

1015:                                             ; preds = %1009
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %6, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %7, align 4
  br label %1028

1019:                                             ; preds = %1012, %1010
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %6, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %7, align 4
  br label %1027

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

1027:                                             ; preds = %1023, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  br label %1028

1028:                                             ; preds = %1027, %1015
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %1037

1029:                                             ; preds = %1014, %989
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef @.str.27)
  %1030 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
  br i1 %1030, label %1031, label %1073

1031:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #7
  store i8 0, ptr %67, align 1, !tbaa !9
  %1032 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1033 unwind label %1039

1033:                                             ; preds = %1031
  br i1 %1032, label %1034, label %1068

1034:                                             ; preds = %1033
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %1035 unwind label %1043

1035:                                             ; preds = %1034
  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 33)
          to label %1036 unwind label %1047

1036:                                             ; preds = %1035
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  br label %1068

1037:                                             ; preds = %1028, %1005
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  br label %1038

1038:                                             ; preds = %1037, %1004
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %4919

1039:                                             ; preds = %1031
  %1040 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %6, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %7, align 4
  br label %1052

1043:                                             ; preds = %1034
  %1044 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1045 = extractvalue { ptr, i32 } %1044, 0
  store ptr %1045, ptr %6, align 8
  %1046 = extractvalue { ptr, i32 } %1044, 1
  store i32 %1046, ptr %7, align 4
  br label %1051

1047:                                             ; preds = %1035
  %1048 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1049 = extractvalue { ptr, i32 } %1048, 0
  store ptr %1049, ptr %6, align 8
  %1050 = extractvalue { ptr, i32 } %1048, 1
  store i32 %1050, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %1051

1051:                                             ; preds = %1047, %1043
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  br label %1052

1052:                                             ; preds = %1051, %1039
  %1053 = load i32, ptr %7, align 4
  %1054 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #7
  %1055 = icmp eq i32 %1053, %1054
  br i1 %1055, label %1056, label %1064

1056:                                             ; preds = %1052
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %1057 = load ptr, ptr %6, align 8
  %1058 = call ptr @__cxa_begin_catch(ptr %1057) #7
  store ptr %1058, ptr %72, align 8
  store i8 1, ptr %67, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %1059

1059:                                             ; preds = %1068, %1056
  %1060 = load i8, ptr %67, align 1, !tbaa !9, !range !11, !noundef !12
  %1061 = trunc i8 %1060 to i1
  br i1 %1061, label %1069, label %1062

1062:                                             ; preds = %1059
  %1063 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %66, i32 0, i32 0
  store ptr @.str.63, ptr %1063, align 8, !tbaa !13
  store i32 2, ptr %71, align 4
  br label %1070

1064:                                             ; preds = %1052
  %1065 = load ptr, ptr %6, align 8
  %1066 = call ptr @__cxa_begin_catch(ptr %1065) #7
  %1067 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %66, i32 0, i32 0
  store ptr @.str.62, ptr %1067, align 8, !tbaa !13
  store i32 2, ptr %71, align 4
  call void @__cxa_end_catch()
  br label %1070

1068:                                             ; preds = %1036, %1033
  br label %1059

1069:                                             ; preds = %1059
  store i32 0, ptr %71, align 4
  br label %1070

1070:                                             ; preds = %1069, %1064, %1062
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  %1071 = load i32, ptr %71, align 4
  switch i32 %1071, label %4924 [
    i32 0, label %1072
    i32 2, label %1074
  ]

1072:                                             ; preds = %1070
  br label %1088

1073:                                             ; preds = %1029
  br label %1074

1074:                                             ; preds = %1073, %1070
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73)
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %1075 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %66, i32 0, i32 0
  %1076 = load ptr, ptr %1075, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %74, i32 noundef 1, ptr noundef @.str.4, i32 noundef 72, ptr noundef %1076)
          to label %1077 unwind label %1079

1077:                                             ; preds = %1074
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %1078 unwind label %1083

1078:                                             ; preds = %1077
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  br label %1088

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

1083:                                             ; preds = %1077
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %6, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  br label %1087

1087:                                             ; preds = %1083, %1079
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  br label %4919

1088:                                             ; preds = %1078, %1072
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef @.str.27)
  %1089 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %75)
  br i1 %1089, label %1090, label %1125

1090:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #7
  store i8 0, ptr %76, align 1, !tbaa !9
  %1091 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %1092 unwind label %1096

1092:                                             ; preds = %1090
  br i1 %1091, label %1093, label %1120

1093:                                             ; preds = %1092
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  invoke void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %78, i32 noundef 2130706433, i8 noundef zeroext 33)
          to label %1094 unwind label %1100

1094:                                             ; preds = %1093
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %77, ptr noundef nonnull align 4 dereferenceable(8) %78)
          to label %1095 unwind label %1100

1095:                                             ; preds = %1094
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %1120

1096:                                             ; preds = %1090
  %1097 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1098 = extractvalue { ptr, i32 } %1097, 0
  store ptr %1098, ptr %6, align 8
  %1099 = extractvalue { ptr, i32 } %1097, 1
  store i32 %1099, ptr %7, align 4
  br label %1104

1100:                                             ; preds = %1094, %1093
  %1101 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %1102 = extractvalue { ptr, i32 } %1101, 0
  store ptr %1102, ptr %6, align 8
  %1103 = extractvalue { ptr, i32 } %1101, 1
  store i32 %1103, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %1104

1104:                                             ; preds = %1100, %1096
  %1105 = load i32, ptr %7, align 4
  %1106 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #7
  %1107 = icmp eq i32 %1105, %1106
  br i1 %1107, label %1108, label %1116

1108:                                             ; preds = %1104
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  %1109 = load ptr, ptr %6, align 8
  %1110 = call ptr @__cxa_begin_catch(ptr %1109) #7
  store ptr %1110, ptr %79, align 8
  store i8 1, ptr %76, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %1111

1111:                                             ; preds = %1120, %1108
  %1112 = load i8, ptr %76, align 1, !tbaa !9, !range !11, !noundef !12
  %1113 = trunc i8 %1112 to i1
  br i1 %1113, label %1121, label %1114

1114:                                             ; preds = %1111
  %1115 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %75, i32 0, i32 0
  store ptr @.str.65, ptr %1115, align 8, !tbaa !13
  store i32 3, ptr %71, align 4
  br label %1122

1116:                                             ; preds = %1104
  %1117 = load ptr, ptr %6, align 8
  %1118 = call ptr @__cxa_begin_catch(ptr %1117) #7
  %1119 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %75, i32 0, i32 0
  store ptr @.str.64, ptr %1119, align 8, !tbaa !13
  store i32 3, ptr %71, align 4
  call void @__cxa_end_catch()
  br label %1122

1120:                                             ; preds = %1095, %1092
  br label %1111

1121:                                             ; preds = %1111
  store i32 0, ptr %71, align 4
  br label %1122

1122:                                             ; preds = %1121, %1116, %1114
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  %1123 = load i32, ptr %71, align 4
  switch i32 %1123, label %4924 [
    i32 0, label %1124
    i32 3, label %1126
  ]

1124:                                             ; preds = %1122
  br label %1140

1125:                                             ; preds = %1088
  br label %1126

1126:                                             ; preds = %1125, %1122
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80)
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %1127 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %75, i32 0, i32 0
  %1128 = load ptr, ptr %1127, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef 1, ptr noundef @.str.4, i32 noundef 73, ptr noundef %1128)
          to label %1129 unwind label %1131

1129:                                             ; preds = %1126
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %1130 unwind label %1135

1130:                                             ; preds = %1129
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  br label %1140

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

1135:                                             ; preds = %1129
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %6, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  br label %1139

1139:                                             ; preds = %1135, %1131
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %4919

1140:                                             ; preds = %1130, %1124
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %82) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %82, ptr noundef @.str.17)
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #7
  %1141 = call noundef zeroext i1 @_ZNK4chen10ip_address6isIPv4Ev(ptr noundef nonnull align 4 dereferenceable(28) %82)
  %1142 = zext i1 %1141 to i8
  store i8 %1142, ptr %84, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 1 dereferenceable(1) %84, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #7
  %1143 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %1144 unwind label %1146

1144:                                             ; preds = %1140
  br i1 %1143, label %1145, label %1150

1145:                                             ; preds = %1144
  br label %1175

1146:                                             ; preds = %1140
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %6, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %7, align 4
  br label %1180

1150:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1151 unwind label %1156

1151:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef @.str.66, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %1152 unwind label %1160

1152:                                             ; preds = %1151
  %1153 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 1, ptr noundef @.str.4, i32 noundef 76, ptr noundef %1153)
          to label %1154 unwind label %1164

1154:                                             ; preds = %1152
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1155 unwind label %1168

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

1156:                                             ; preds = %1150
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %6, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %7, align 4
  br label %1174

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

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

1168:                                             ; preds = %1154
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %6, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #7
  br label %1172

1172:                                             ; preds = %1168, %1164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  br label %1173

1173:                                             ; preds = %1172, %1160
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #7
  br label %1174

1174:                                             ; preds = %1173, %1156
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %1180

1175:                                             ; preds = %1155, %1145
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 4 dereferenceable(28) %82, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %88, ptr noundef @.str.67, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(10) @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %1176 unwind label %1181

1176:                                             ; preds = %1175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  %1177 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %1178 unwind label %1185

1178:                                             ; preds = %1176
  br i1 %1177, label %1179, label %1189

1179:                                             ; preds = %1178
  br label %1209

1180:                                             ; preds = %1174, %1146
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #7
  br label %4918

1181:                                             ; preds = %1175
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %6, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  br label %1216

1185:                                             ; preds = %1176
  %1186 = landingpad { ptr, i32 }
          cleanup
  %1187 = extractvalue { ptr, i32 } %1186, 0
  store ptr %1187, ptr %6, align 8
  %1188 = extractvalue { ptr, i32 } %1186, 1
  store i32 %1188, ptr %7, align 4
  br label %1215

1189:                                             ; preds = %1178
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %1190 unwind label %1195

1190:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %1191 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %1192 unwind label %1199

1192:                                             ; preds = %1190
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %91, i32 noundef 1, ptr noundef @.str.4, i32 noundef 77, ptr noundef %1191)
          to label %1193 unwind label %1199

1193:                                             ; preds = %1192
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %1194 unwind label %1203

1194:                                             ; preds = %1193
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %1209

1195:                                             ; preds = %1189
  %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
  br label %1208

1199:                                             ; preds = %1192, %1190
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %6, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %7, align 4
  br label %1207

1203:                                             ; preds = %1193
  %1204 = landingpad { ptr, i32 }
          cleanup
  %1205 = extractvalue { ptr, i32 } %1204, 0
  store ptr %1205, ptr %6, align 8
  %1206 = extractvalue { ptr, i32 } %1204, 1
  store i32 %1206, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  br label %1207

1207:                                             ; preds = %1203, %1199
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #7
  br label %1208

1208:                                             ; preds = %1207, %1195
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %1215

1209:                                             ; preds = %1194, %1179
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #7
  store i32 4, ptr %93, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %95) #7
  call void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %95, ptr noundef nonnull align 4 dereferenceable(28) %82)
  %1210 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  store i64 %1210, ptr %94, align 8, !tbaa !17
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %92, ptr noundef @.str.69, ptr noundef @.str.70, ptr noundef nonnull align 4 dereferenceable(4) %93, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %1211 unwind label %1217

1211:                                             ; preds = %1209
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  %1212 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %92)
          to label %1213 unwind label %1221

1213:                                             ; preds = %1211
  br i1 %1212, label %1214, label %1225

1214:                                             ; preds = %1213
  br label %1245

1215:                                             ; preds = %1208, %1185
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #7
  br label %1216

1216:                                             ; preds = %1215, %1181
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #7
  br label %4918

1217:                                             ; preds = %1209
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %6, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %7, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  br label %1252

1221:                                             ; preds = %1211
  %1222 = landingpad { ptr, i32 }
          cleanup
  %1223 = extractvalue { ptr, i32 } %1222, 0
  store ptr %1223, ptr %6, align 8
  %1224 = extractvalue { ptr, i32 } %1222, 1
  store i32 %1224, ptr %7, align 4
  br label %1251

1225:                                             ; preds = %1213
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1226 unwind label %1231

1226:                                             ; preds = %1225
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1227 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %92)
          to label %1228 unwind label %1235

1228:                                             ; preds = %1226
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %97, i32 noundef 1, ptr noundef @.str.4, i32 noundef 78, ptr noundef %1227)
          to label %1229 unwind label %1235

1229:                                             ; preds = %1228
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1230 unwind label %1239

1230:                                             ; preds = %1229
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %1245

1231:                                             ; preds = %1225
  %1232 = landingpad { ptr, i32 }
          cleanup
  %1233 = extractvalue { ptr, i32 } %1232, 0
  store ptr %1233, ptr %6, align 8
  %1234 = extractvalue { ptr, i32 } %1232, 1
  store i32 %1234, ptr %7, align 4
  br label %1244

1235:                                             ; preds = %1228, %1226
  %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 %1243

1239:                                             ; preds = %1229
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  br label %1243

1243:                                             ; preds = %1239, %1235
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  br label %1244

1244:                                             ; preds = %1243, %1231
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %1251

1245:                                             ; preds = %1230, %1214
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #7
  %1246 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %82, i8 noundef zeroext 2)
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef nonnull align 4 dereferenceable(28) %82, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %98, ptr noundef @.str.71, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(8) @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %1247 unwind label %1253

1247:                                             ; preds = %1245
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #7
  %1248 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1249 unwind label %1257

1249:                                             ; preds = %1247
  br i1 %1248, label %1250, label %1261

1250:                                             ; preds = %1249
  br label %1281

1251:                                             ; preds = %1244, %1221
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #7
  br label %1252

1252:                                             ; preds = %1251, %1217
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #7
  br label %4918

1253:                                             ; preds = %1245
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %6, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #7
  br label %1288

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

1261:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1262 unwind label %1267

1262:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #7
  %1263 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1264 unwind label %1271

1264:                                             ; preds = %1262
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %101, i32 noundef 1, ptr noundef @.str.4, i32 noundef 81, ptr noundef %1263)
          to label %1265 unwind label %1271

1265:                                             ; preds = %1264
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1266 unwind label %1275

1266:                                             ; preds = %1265
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  br label %1281

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

1271:                                             ; preds = %1264, %1262
  %1272 = landingpad { ptr, i32 }
          cleanup
  %1273 = extractvalue { ptr, i32 } %1272, 0
  store ptr %1273, ptr %6, align 8
  %1274 = extractvalue { ptr, i32 } %1272, 1
  store i32 %1274, ptr %7, align 4
  br label %1279

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

1279:                                             ; preds = %1275, %1271
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  br label %1280

1280:                                             ; preds = %1279, %1267
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  br label %1287

1281:                                             ; preds = %1266, %1250
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #7
  %1282 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28) %82, ptr noundef @.str.72)
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %103, ptr noundef nonnull align 4 dereferenceable(28) %82, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %102, ptr noundef @.str.73, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(15) @.str.72, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1283 unwind label %1289

1283:                                             ; preds = %1281
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  %1284 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %102)
          to label %1285 unwind label %1293

1285:                                             ; preds = %1283
  br i1 %1284, label %1286, label %1297

1286:                                             ; preds = %1285
  br label %1317

1287:                                             ; preds = %1280, %1257
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #7
  br label %1288

1288:                                             ; preds = %1287, %1253
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #7
  br label %4918

1289:                                             ; preds = %1281
  %1290 = landingpad { ptr, i32 }
          cleanup
  %1291 = extractvalue { ptr, i32 } %1290, 0
  store ptr %1291, ptr %6, align 8
  %1292 = extractvalue { ptr, i32 } %1290, 1
  store i32 %1292, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  br label %1323

1293:                                             ; preds = %1283
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %6, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %7, align 4
  br label %1322

1297:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1298 unwind label %1303

1298:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %1299 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %102)
          to label %1300 unwind label %1307

1300:                                             ; preds = %1298
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 1, ptr noundef @.str.4, i32 noundef 84, ptr noundef %1299)
          to label %1301 unwind label %1307

1301:                                             ; preds = %1300
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1302 unwind label %1311

1302:                                             ; preds = %1301
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br label %1317

1303:                                             ; preds = %1297
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %6, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %7, align 4
  br label %1316

1307:                                             ; preds = %1300, %1298
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %6, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %7, align 4
  br label %1315

1311:                                             ; preds = %1301
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %6, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  br label %1315

1315:                                             ; preds = %1311, %1307
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #7
  br label %1316

1316:                                             ; preds = %1315, %1303
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br label %1322

1317:                                             ; preds = %1302, %1286
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #7
  store i32 24, ptr %107, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #7
  %1318 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %82)
  store i8 %1318, ptr %108, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %106, ptr noundef @.str.75, ptr noundef @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %107, ptr noundef nonnull align 1 dereferenceable(1) %108)
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #7
  %1319 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %1320 unwind label %1324

1320:                                             ; preds = %1317
  br i1 %1319, label %1321, label %1328

1321:                                             ; preds = %1320
  br label %1348

1322:                                             ; preds = %1316, %1293
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #7
  br label %1323

1323:                                             ; preds = %1322, %1289
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #7
  br label %4918

1324:                                             ; preds = %1317
  %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
  br label %1354

1328:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109)
          to label %1329 unwind label %1334

1329:                                             ; preds = %1328
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #7
  %1330 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %1331 unwind label %1338

1331:                                             ; preds = %1329
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %110, i32 noundef 1, ptr noundef @.str.4, i32 noundef 85, ptr noundef %1330)
          to label %1332 unwind label %1338

1332:                                             ; preds = %1331
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %109)
          to label %1333 unwind label %1342

1333:                                             ; preds = %1332
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  br label %1348

1334:                                             ; preds = %1328
  %1335 = landingpad { ptr, i32 }
          cleanup
  %1336 = extractvalue { ptr, i32 } %1335, 0
  store ptr %1336, ptr %6, align 8
  %1337 = extractvalue { ptr, i32 } %1335, 1
  store i32 %1337, ptr %7, align 4
  br label %1347

1338:                                             ; preds = %1331, %1329
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %6, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %7, align 4
  br label %1346

1342:                                             ; preds = %1332
  %1343 = landingpad { ptr, i32 }
          cleanup
  %1344 = extractvalue { ptr, i32 } %1343, 0
  store ptr %1344, ptr %6, align 8
  %1345 = extractvalue { ptr, i32 } %1343, 1
  store i32 %1345, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #7
  br label %1346

1346:                                             ; preds = %1342, %1338
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #7
  br label %1347

1347:                                             ; preds = %1346, %1334
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  br label %1354

1348:                                             ; preds = %1333, %1321
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %111, i32 noundef 2130706433)
  %1349 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %82, ptr noundef nonnull align 4 dereferenceable(8) %111)
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 4 dereferenceable(28) %82, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %112, ptr noundef @.str.77, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %1350 unwind label %1355

1350:                                             ; preds = %1348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  %1351 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %1352 unwind label %1359

1352:                                             ; preds = %1350
  br i1 %1351, label %1353, label %1363

1353:                                             ; preds = %1352
  br label %1383

1354:                                             ; preds = %1347, %1324
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #7
  br label %4918

1355:                                             ; preds = %1348
  %1356 = landingpad { ptr, i32 }
          cleanup
  %1357 = extractvalue { ptr, i32 } %1356, 0
  store ptr %1357, ptr %6, align 8
  %1358 = extractvalue { ptr, i32 } %1356, 1
  store i32 %1358, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  br label %1389

1359:                                             ; preds = %1350
  %1360 = landingpad { ptr, i32 }
          cleanup
  %1361 = extractvalue { ptr, i32 } %1360, 0
  store ptr %1361, ptr %6, align 8
  %1362 = extractvalue { ptr, i32 } %1360, 1
  store i32 %1362, ptr %7, align 4
  br label %1388

1363:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1364 unwind label %1369

1364:                                             ; preds = %1363
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #7
  %1365 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %1366 unwind label %1373

1366:                                             ; preds = %1364
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef 1, ptr noundef @.str.4, i32 noundef 88, ptr noundef %1365)
          to label %1367 unwind label %1373

1367:                                             ; preds = %1366
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1368 unwind label %1377

1368:                                             ; preds = %1367
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #7
  br label %1383

1369:                                             ; preds = %1363
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %6, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %7, align 4
  br label %1382

1373:                                             ; preds = %1366, %1364
  %1374 = landingpad { ptr, i32 }
          cleanup
  %1375 = extractvalue { ptr, i32 } %1374, 0
  store ptr %1375, ptr %6, align 8
  %1376 = extractvalue { ptr, i32 } %1374, 1
  store i32 %1376, ptr %7, align 4
  br label %1381

1377:                                             ; preds = %1367
  %1378 = landingpad { ptr, i32 }
          cleanup
  %1379 = extractvalue { ptr, i32 } %1378, 0
  store ptr %1379, ptr %6, align 8
  %1380 = extractvalue { ptr, i32 } %1378, 1
  store i32 %1380, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  br label %1381

1381:                                             ; preds = %1377, %1373
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #7
  br label %1382

1382:                                             ; preds = %1381, %1369
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #7
  br label %1388

1383:                                             ; preds = %1368, %1353
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #7
  store i32 32, ptr %117, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #7
  %1384 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %82)
  store i8 %1384, ptr %118, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %116, ptr noundef @.str.78, ptr noundef @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %117, ptr noundef nonnull align 1 dereferenceable(1) %118)
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #7
  %1385 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %1386 unwind label %1390

1386:                                             ; preds = %1383
  br i1 %1385, label %1387, label %1394

1387:                                             ; preds = %1386
  br label %1414

1388:                                             ; preds = %1382, %1359
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #7
  br label %1389

1389:                                             ; preds = %1388, %1355
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #7
  br label %4918

1390:                                             ; preds = %1383
  %1391 = landingpad { ptr, i32 }
          cleanup
  %1392 = extractvalue { ptr, i32 } %1391, 0
  store ptr %1392, ptr %6, align 8
  %1393 = extractvalue { ptr, i32 } %1391, 1
  store i32 %1393, ptr %7, align 4
  br label %1419

1394:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %1395 unwind label %1400

1395:                                             ; preds = %1394
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #7
  %1396 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %1397 unwind label %1404

1397:                                             ; preds = %1395
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %120, i32 noundef 1, ptr noundef @.str.4, i32 noundef 89, ptr noundef %1396)
          to label %1398 unwind label %1404

1398:                                             ; preds = %1397
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %1399 unwind label %1408

1399:                                             ; preds = %1398
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #7
  br label %1414

1400:                                             ; preds = %1394
  %1401 = landingpad { ptr, i32 }
          cleanup
  %1402 = extractvalue { ptr, i32 } %1401, 0
  store ptr %1402, ptr %6, align 8
  %1403 = extractvalue { ptr, i32 } %1401, 1
  store i32 %1403, ptr %7, align 4
  br label %1413

1404:                                             ; preds = %1397, %1395
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %6, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %7, align 4
  br label %1412

1408:                                             ; preds = %1398
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %6, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #7
  br label %1412

1412:                                             ; preds = %1408, %1404
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #7
  br label %1413

1413:                                             ; preds = %1412, %1400
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #7
  br label %1419

1414:                                             ; preds = %1399, %1387
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %123) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %123, ptr noundef @.str.7)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 4 dereferenceable(28) %123, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %121, ptr noundef @.str.77, ptr noundef @.str.79, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %1415 unwind label %1420

1415:                                             ; preds = %1414
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  %1416 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %1417 unwind label %1424

1417:                                             ; preds = %1415
  br i1 %1416, label %1418, label %1428

1418:                                             ; preds = %1417
  br label %1448

1419:                                             ; preds = %1413, %1390
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #7
  br label %4918

1420:                                             ; preds = %1414
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %6, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  br label %1454

1424:                                             ; preds = %1415
  %1425 = landingpad { ptr, i32 }
          cleanup
  %1426 = extractvalue { ptr, i32 } %1425, 0
  store ptr %1426, ptr %6, align 8
  %1427 = extractvalue { ptr, i32 } %1425, 1
  store i32 %1427, ptr %7, align 4
  br label %1453

1428:                                             ; preds = %1417
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1429 unwind label %1434

1429:                                             ; preds = %1428
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #7
  %1430 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %1431 unwind label %1438

1431:                                             ; preds = %1429
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef 1, ptr noundef @.str.4, i32 noundef 92, ptr noundef %1430)
          to label %1432 unwind label %1438

1432:                                             ; preds = %1431
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1433 unwind label %1442

1433:                                             ; preds = %1432
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  br label %1448

1434:                                             ; preds = %1428
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %6, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %7, align 4
  br label %1447

1438:                                             ; preds = %1431, %1429
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %6, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %7, align 4
  br label %1446

1442:                                             ; preds = %1432
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %6, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #7
  br label %1446

1446:                                             ; preds = %1442, %1438
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #7
  br label %1447

1447:                                             ; preds = %1446, %1434
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  br label %1453

1448:                                             ; preds = %1433, %1418
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %128) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %128, ptr noundef @.str.81)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %127, ptr noundef nonnull align 4 dereferenceable(28) %128, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %126, ptr noundef @.str.77, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %1449 unwind label %1455

1449:                                             ; preds = %1448
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #7
  %1450 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
          to label %1451 unwind label %1459

1451:                                             ; preds = %1449
  br i1 %1450, label %1452, label %1463

1452:                                             ; preds = %1451
  br label %1483

1453:                                             ; preds = %1447, %1424
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #7
  br label %1454

1454:                                             ; preds = %1453, %1420
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #7
  br label %4918

1455:                                             ; preds = %1448
  %1456 = landingpad { ptr, i32 }
          cleanup
  %1457 = extractvalue { ptr, i32 } %1456, 0
  store ptr %1457, ptr %6, align 8
  %1458 = extractvalue { ptr, i32 } %1456, 1
  store i32 %1458, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #7
  br label %1489

1459:                                             ; preds = %1449
  %1460 = landingpad { ptr, i32 }
          cleanup
  %1461 = extractvalue { ptr, i32 } %1460, 0
  store ptr %1461, ptr %6, align 8
  %1462 = extractvalue { ptr, i32 } %1460, 1
  store i32 %1462, ptr %7, align 4
  br label %1488

1463:                                             ; preds = %1451
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1464 unwind label %1469

1464:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #7
  %1465 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
          to label %1466 unwind label %1473

1466:                                             ; preds = %1464
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %130, i32 noundef 1, ptr noundef @.str.4, i32 noundef 93, ptr noundef %1465)
          to label %1467 unwind label %1473

1467:                                             ; preds = %1466
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1468 unwind label %1477

1468:                                             ; preds = %1467
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #7
  br label %1483

1469:                                             ; preds = %1463
  %1470 = landingpad { ptr, i32 }
          cleanup
  %1471 = extractvalue { ptr, i32 } %1470, 0
  store ptr %1471, ptr %6, align 8
  %1472 = extractvalue { ptr, i32 } %1470, 1
  store i32 %1472, ptr %7, align 4
  br label %1482

1473:                                             ; preds = %1466, %1464
  %1474 = landingpad { ptr, i32 }
          cleanup
  %1475 = extractvalue { ptr, i32 } %1474, 0
  store ptr %1475, ptr %6, align 8
  %1476 = extractvalue { ptr, i32 } %1474, 1
  store i32 %1476, ptr %7, align 4
  br label %1481

1477:                                             ; preds = %1467
  %1478 = landingpad { ptr, i32 }
          cleanup
  %1479 = extractvalue { ptr, i32 } %1478, 0
  store ptr %1479, ptr %6, align 8
  %1480 = extractvalue { ptr, i32 } %1478, 1
  store i32 %1480, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #7
  br label %1481

1481:                                             ; preds = %1477, %1473
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #7
  br label %1482

1482:                                             ; preds = %1481, %1469
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #7
  br label %1488

1483:                                             ; preds = %1468, %1452
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %132) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %133) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %133, ptr noundef @.str.54)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %132, ptr noundef nonnull align 4 dereferenceable(28) %133, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %131, ptr noundef @.str.77, ptr noundef @.str.82, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %132)
          to label %1484 unwind label %1490

1484:                                             ; preds = %1483
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %133) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #7
  %1485 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1486 unwind label %1494

1486:                                             ; preds = %1484
  br i1 %1485, label %1487, label %1498

1487:                                             ; preds = %1486
  br label %1518

1488:                                             ; preds = %1482, %1459
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #7
  br label %1489

1489:                                             ; preds = %1488, %1455
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #7
  br label %4918

1490:                                             ; preds = %1483
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %6, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %133) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #7
  br label %1524

1494:                                             ; preds = %1484
  %1495 = landingpad { ptr, i32 }
          cleanup
  %1496 = extractvalue { ptr, i32 } %1495, 0
  store ptr %1496, ptr %6, align 8
  %1497 = extractvalue { ptr, i32 } %1495, 1
  store i32 %1497, ptr %7, align 4
  br label %1523

1498:                                             ; preds = %1486
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1499 unwind label %1504

1499:                                             ; preds = %1498
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #7
  %1500 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1501 unwind label %1508

1501:                                             ; preds = %1499
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %135, i32 noundef 1, ptr noundef @.str.4, i32 noundef 94, ptr noundef %1500)
          to label %1502 unwind label %1508

1502:                                             ; preds = %1501
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1503 unwind label %1512

1503:                                             ; preds = %1502
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #7
  br label %1518

1504:                                             ; preds = %1498
  %1505 = landingpad { ptr, i32 }
          cleanup
  %1506 = extractvalue { ptr, i32 } %1505, 0
  store ptr %1506, ptr %6, align 8
  %1507 = extractvalue { ptr, i32 } %1505, 1
  store i32 %1507, ptr %7, align 4
  br label %1517

1508:                                             ; preds = %1501, %1499
  %1509 = landingpad { ptr, i32 }
          cleanup
  %1510 = extractvalue { ptr, i32 } %1509, 0
  store ptr %1510, ptr %6, align 8
  %1511 = extractvalue { ptr, i32 } %1509, 1
  store i32 %1511, ptr %7, align 4
  br label %1516

1512:                                             ; preds = %1502
  %1513 = landingpad { ptr, i32 }
          cleanup
  %1514 = extractvalue { ptr, i32 } %1513, 0
  store ptr %1514, ptr %6, align 8
  %1515 = extractvalue { ptr, i32 } %1513, 1
  store i32 %1515, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #7
  br label %1516

1516:                                             ; preds = %1512, %1508
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #7
  br label %1517

1517:                                             ; preds = %1516, %1504
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #7
  br label %1523

1518:                                             ; preds = %1503, %1487
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %136) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %138) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %139, i32 noundef 2130706433)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %138, ptr noundef nonnull align 4 dereferenceable(8) %139)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %137, ptr noundef nonnull align 4 dereferenceable(28) %138, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %136, ptr noundef @.str.77, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %137)
          to label %1519 unwind label %1525

1519:                                             ; preds = %1518
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %138) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #7
  %1520 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %136)
          to label %1521 unwind label %1529

1521:                                             ; preds = %1519
  br i1 %1520, label %1522, label %1533

1522:                                             ; preds = %1521
  br label %1553

1523:                                             ; preds = %1517, %1494
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #7
  br label %1524

1524:                                             ; preds = %1523, %1490
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #7
  br label %4918

1525:                                             ; preds = %1518
  %1526 = landingpad { ptr, i32 }
          cleanup
  %1527 = extractvalue { ptr, i32 } %1526, 0
  store ptr %1527, ptr %6, align 8
  %1528 = extractvalue { ptr, i32 } %1526, 1
  store i32 %1528, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %138) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #7
  br label %1559

1529:                                             ; preds = %1519
  %1530 = landingpad { ptr, i32 }
          cleanup
  %1531 = extractvalue { ptr, i32 } %1530, 0
  store ptr %1531, ptr %6, align 8
  %1532 = extractvalue { ptr, i32 } %1530, 1
  store i32 %1532, ptr %7, align 4
  br label %1558

1533:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %1534 unwind label %1539

1534:                                             ; preds = %1533
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #7
  %1535 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %136)
          to label %1536 unwind label %1543

1536:                                             ; preds = %1534
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %141, i32 noundef 1, ptr noundef @.str.4, i32 noundef 95, ptr noundef %1535)
          to label %1537 unwind label %1543

1537:                                             ; preds = %1536
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %1538 unwind label %1547

1538:                                             ; preds = %1537
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  br label %1553

1539:                                             ; preds = %1533
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %6, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %7, align 4
  br label %1552

1543:                                             ; preds = %1536, %1534
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %6, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %7, align 4
  br label %1551

1547:                                             ; preds = %1537
  %1548 = landingpad { ptr, i32 }
          cleanup
  %1549 = extractvalue { ptr, i32 } %1548, 0
  store ptr %1549, ptr %6, align 8
  %1550 = extractvalue { ptr, i32 } %1548, 1
  store i32 %1550, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #7
  br label %1551

1551:                                             ; preds = %1547, %1543
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #7
  br label %1552

1552:                                             ; preds = %1551, %1539
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  br label %1558

1553:                                             ; preds = %1538, %1522
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %143) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %144) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %144, ptr noundef @.str.7)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %143, ptr noundef nonnull align 4 dereferenceable(28) %144, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %142, ptr noundef @.str.77, ptr noundef @.str.79, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %1554 unwind label %1560

1554:                                             ; preds = %1553
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #7
  %1555 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %142)
          to label %1556 unwind label %1564

1556:                                             ; preds = %1554
  br i1 %1555, label %1557, label %1568

1557:                                             ; preds = %1556
  br label %1588

1558:                                             ; preds = %1552, %1529
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #7
  br label %1559

1559:                                             ; preds = %1558, %1525
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #7
  br label %4918

1560:                                             ; preds = %1553
  %1561 = landingpad { ptr, i32 }
          cleanup
  %1562 = extractvalue { ptr, i32 } %1561, 0
  store ptr %1562, ptr %6, align 8
  %1563 = extractvalue { ptr, i32 } %1561, 1
  store i32 %1563, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #7
  br label %1594

1564:                                             ; preds = %1554
  %1565 = landingpad { ptr, i32 }
          cleanup
  %1566 = extractvalue { ptr, i32 } %1565, 0
  store ptr %1566, ptr %6, align 8
  %1567 = extractvalue { ptr, i32 } %1565, 1
  store i32 %1567, ptr %7, align 4
  br label %1593

1568:                                             ; preds = %1556
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1569 unwind label %1574

1569:                                             ; preds = %1568
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #7
  %1570 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %142)
          to label %1571 unwind label %1578

1571:                                             ; preds = %1569
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef 1, ptr noundef @.str.4, i32 noundef 97, ptr noundef %1570)
          to label %1572 unwind label %1578

1572:                                             ; preds = %1571
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1573 unwind label %1582

1573:                                             ; preds = %1572
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  br label %1588

1574:                                             ; preds = %1568
  %1575 = landingpad { ptr, i32 }
          cleanup
  %1576 = extractvalue { ptr, i32 } %1575, 0
  store ptr %1576, ptr %6, align 8
  %1577 = extractvalue { ptr, i32 } %1575, 1
  store i32 %1577, ptr %7, align 4
  br label %1587

1578:                                             ; preds = %1571, %1569
  %1579 = landingpad { ptr, i32 }
          cleanup
  %1580 = extractvalue { ptr, i32 } %1579, 0
  store ptr %1580, ptr %6, align 8
  %1581 = extractvalue { ptr, i32 } %1579, 1
  store i32 %1581, ptr %7, align 4
  br label %1586

1582:                                             ; preds = %1572
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #7
  br label %1586

1586:                                             ; preds = %1582, %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #7
  br label %1587

1587:                                             ; preds = %1586, %1574
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  br label %1593

1588:                                             ; preds = %1573, %1557
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %148) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %149) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %149, ptr noundef @.str.45)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %148, ptr noundef nonnull align 4 dereferenceable(28) %149, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %147, ptr noundef @.str.84, ptr noundef @.str.85, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %148)
          to label %1589 unwind label %1595

1589:                                             ; preds = %1588
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %149) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #7
  %1590 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %147)
          to label %1591 unwind label %1599

1591:                                             ; preds = %1589
  br i1 %1590, label %1592, label %1603

1592:                                             ; preds = %1591
  br label %1623

1593:                                             ; preds = %1587, %1564
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #7
  br label %1594

1594:                                             ; preds = %1593, %1560
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #7
  br label %4918

1595:                                             ; preds = %1588
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %6, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %149) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #7
  br label %1629

1599:                                             ; preds = %1589
  %1600 = landingpad { ptr, i32 }
          cleanup
  %1601 = extractvalue { ptr, i32 } %1600, 0
  store ptr %1601, ptr %6, align 8
  %1602 = extractvalue { ptr, i32 } %1600, 1
  store i32 %1602, ptr %7, align 4
  br label %1628

1603:                                             ; preds = %1591
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1604 unwind label %1609

1604:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  %1605 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %147)
          to label %1606 unwind label %1613

1606:                                             ; preds = %1604
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %151, i32 noundef 1, ptr noundef @.str.4, i32 noundef 98, ptr noundef %1605)
          to label %1607 unwind label %1613

1607:                                             ; preds = %1606
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1608 unwind label %1617

1608:                                             ; preds = %1607
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #7
  br label %1623

1609:                                             ; preds = %1603
  %1610 = landingpad { ptr, i32 }
          cleanup
  %1611 = extractvalue { ptr, i32 } %1610, 0
  store ptr %1611, ptr %6, align 8
  %1612 = extractvalue { ptr, i32 } %1610, 1
  store i32 %1612, ptr %7, align 4
  br label %1622

1613:                                             ; preds = %1606, %1604
  %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 %1621

1617:                                             ; preds = %1607
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #7
  br label %1621

1621:                                             ; preds = %1617, %1613
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #7
  br label %1622

1622:                                             ; preds = %1621, %1609
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #7
  br label %1628

1623:                                             ; preds = %1608, %1592
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %153) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %154) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #7
  call void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %155, i32 noundef 2130706433, i8 noundef zeroext 8)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %154, ptr noundef nonnull align 4 dereferenceable(8) %155)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %153, ptr noundef nonnull align 4 dereferenceable(28) %154, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %152, ptr noundef @.str.84, ptr noundef @.str.86, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %153)
          to label %1624 unwind label %1630

1624:                                             ; preds = %1623
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %154) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #7
  %1625 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %152)
          to label %1626 unwind label %1634

1626:                                             ; preds = %1624
  br i1 %1625, label %1627, label %1638

1627:                                             ; preds = %1626
  br label %1658

1628:                                             ; preds = %1622, %1599
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #7
  br label %1629

1629:                                             ; preds = %1628, %1595
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #7
  br label %4918

1630:                                             ; preds = %1623
  %1631 = landingpad { ptr, i32 }
          cleanup
  %1632 = extractvalue { ptr, i32 } %1631, 0
  store ptr %1632, ptr %6, align 8
  %1633 = extractvalue { ptr, i32 } %1631, 1
  store i32 %1633, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %154) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #7
  br label %1667

1634:                                             ; preds = %1624
  %1635 = landingpad { ptr, i32 }
          cleanup
  %1636 = extractvalue { ptr, i32 } %1635, 0
  store ptr %1636, ptr %6, align 8
  %1637 = extractvalue { ptr, i32 } %1635, 1
  store i32 %1637, ptr %7, align 4
  br label %1666

1638:                                             ; preds = %1626
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1639 unwind label %1644

1639:                                             ; preds = %1638
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #7
  %1640 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %152)
          to label %1641 unwind label %1648

1641:                                             ; preds = %1639
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %157, i32 noundef 1, ptr noundef @.str.4, i32 noundef 99, ptr noundef %1640)
          to label %1642 unwind label %1648

1642:                                             ; preds = %1641
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1643 unwind label %1652

1643:                                             ; preds = %1642
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #7
  br label %1658

1644:                                             ; preds = %1638
  %1645 = landingpad { ptr, i32 }
          cleanup
  %1646 = extractvalue { ptr, i32 } %1645, 0
  store ptr %1646, ptr %6, align 8
  %1647 = extractvalue { ptr, i32 } %1645, 1
  store i32 %1647, ptr %7, align 4
  br label %1657

1648:                                             ; preds = %1641, %1639
  %1649 = landingpad { ptr, i32 }
          cleanup
  %1650 = extractvalue { ptr, i32 } %1649, 0
  store ptr %1650, ptr %6, align 8
  %1651 = extractvalue { ptr, i32 } %1649, 1
  store i32 %1651, ptr %7, align 4
  br label %1656

1652:                                             ; preds = %1642
  %1653 = landingpad { ptr, i32 }
          cleanup
  %1654 = extractvalue { ptr, i32 } %1653, 0
  store ptr %1654, ptr %6, align 8
  %1655 = extractvalue { ptr, i32 } %1653, 1
  store i32 %1655, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #7
  br label %1656

1656:                                             ; preds = %1652, %1648
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #7
  br label %1657

1657:                                             ; preds = %1656, %1644
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #7
  br label %1666

1658:                                             ; preds = %1643, %1627
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %158) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %159) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %160) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %161) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %162) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %162)
          to label %1659 unwind label %1668

1659:                                             ; preds = %1658
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %160, ptr noundef nonnull align 8 dereferenceable(32) %161, i8 noundef zeroext 30)
          to label %1660 unwind label %1672

1660:                                             ; preds = %1659
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %159, ptr noundef nonnull align 4 dereferenceable(28) %160, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %1661 unwind label %1672

1661:                                             ; preds = %1660
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %158, ptr noundef @.str.87, ptr noundef @.str.88, ptr noundef nonnull align 1 dereferenceable(15) @.str.89, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %1662 unwind label %1676

1662:                                             ; preds = %1661
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #7
  %1663 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %1664 unwind label %1682

1664:                                             ; preds = %1662
  br i1 %1663, label %1665, label %1686

1665:                                             ; preds = %1664
  br label %1706

1666:                                             ; preds = %1657, %1634
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #7
  br label %1667

1667:                                             ; preds = %1666, %1630
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #7
  br label %4918

1668:                                             ; preds = %1658
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %6, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %7, align 4
  br label %1681

1672:                                             ; preds = %1660, %1659
  %1673 = landingpad { ptr, i32 }
          cleanup
  %1674 = extractvalue { ptr, i32 } %1673, 0
  store ptr %1674, ptr %6, align 8
  %1675 = extractvalue { ptr, i32 } %1673, 1
  store i32 %1675, ptr %7, align 4
  br label %1680

1676:                                             ; preds = %1661
  %1677 = landingpad { ptr, i32 }
          cleanup
  %1678 = extractvalue { ptr, i32 } %1677, 0
  store ptr %1678, ptr %6, align 8
  %1679 = extractvalue { ptr, i32 } %1677, 1
  store i32 %1679, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #7
  br label %1680

1680:                                             ; preds = %1676, %1672
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #7
  br label %1681

1681:                                             ; preds = %1680, %1668
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #7
  br label %1712

1682:                                             ; preds = %1662
  %1683 = landingpad { ptr, i32 }
          cleanup
  %1684 = extractvalue { ptr, i32 } %1683, 0
  store ptr %1684, ptr %6, align 8
  %1685 = extractvalue { ptr, i32 } %1683, 1
  store i32 %1685, ptr %7, align 4
  br label %1711

1686:                                             ; preds = %1664
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %1687 unwind label %1692

1687:                                             ; preds = %1686
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #7
  %1688 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %1689 unwind label %1696

1689:                                             ; preds = %1687
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %164, i32 noundef 1, ptr noundef @.str.4, i32 noundef 100, ptr noundef %1688)
          to label %1690 unwind label %1696

1690:                                             ; preds = %1689
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %1691 unwind label %1700

1691:                                             ; preds = %1690
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  br label %1706

1692:                                             ; preds = %1686
  %1693 = landingpad { ptr, i32 }
          cleanup
  %1694 = extractvalue { ptr, i32 } %1693, 0
  store ptr %1694, ptr %6, align 8
  %1695 = extractvalue { ptr, i32 } %1693, 1
  store i32 %1695, ptr %7, align 4
  br label %1705

1696:                                             ; preds = %1689, %1687
  %1697 = landingpad { ptr, i32 }
          cleanup
  %1698 = extractvalue { ptr, i32 } %1697, 0
  store ptr %1698, ptr %6, align 8
  %1699 = extractvalue { ptr, i32 } %1697, 1
  store i32 %1699, ptr %7, align 4
  br label %1704

1700:                                             ; preds = %1690
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %6, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #7
  br label %1704

1704:                                             ; preds = %1700, %1696
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #7
  br label %1705

1705:                                             ; preds = %1704, %1692
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  br label %1711

1706:                                             ; preds = %1691, %1665
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #7
  store i32 8, ptr %166, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %167) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %168) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %168, ptr noundef @.str.45)
  %1707 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %168)
  store i8 %1707, ptr %167, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %165, ptr noundef @.str.91, ptr noundef @.str.92, ptr noundef nonnull align 4 dereferenceable(4) %166, ptr noundef nonnull align 1 dereferenceable(1) %167)
  call void @llvm.lifetime.end.p0(i64 28, ptr %168) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #7
  %1708 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %1709 unwind label %1713

1709:                                             ; preds = %1706
  br i1 %1708, label %1710, label %1717

1710:                                             ; preds = %1709
  br label %1737

1711:                                             ; preds = %1705, %1682
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #7
  br label %1712

1712:                                             ; preds = %1711, %1681
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #7
  br label %4918

1713:                                             ; preds = %1706
  %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 %1742

1717:                                             ; preds = %1709
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %1718 unwind label %1723

1718:                                             ; preds = %1717
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #7
  %1719 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %1720 unwind label %1727

1720:                                             ; preds = %1718
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %170, i32 noundef 1, ptr noundef @.str.4, i32 noundef 103, ptr noundef %1719)
          to label %1721 unwind label %1727

1721:                                             ; preds = %1720
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %1722 unwind label %1731

1722:                                             ; preds = %1721
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #7
  br label %1737

1723:                                             ; preds = %1717
  %1724 = landingpad { ptr, i32 }
          cleanup
  %1725 = extractvalue { ptr, i32 } %1724, 0
  store ptr %1725, ptr %6, align 8
  %1726 = extractvalue { ptr, i32 } %1724, 1
  store i32 %1726, ptr %7, align 4
  br label %1736

1727:                                             ; preds = %1720, %1718
  %1728 = landingpad { ptr, i32 }
          cleanup
  %1729 = extractvalue { ptr, i32 } %1728, 0
  store ptr %1729, ptr %6, align 8
  %1730 = extractvalue { ptr, i32 } %1728, 1
  store i32 %1730, ptr %7, align 4
  br label %1735

1731:                                             ; preds = %1721
  %1732 = landingpad { ptr, i32 }
          cleanup
  %1733 = extractvalue { ptr, i32 } %1732, 0
  store ptr %1733, ptr %6, align 8
  %1734 = extractvalue { ptr, i32 } %1732, 1
  store i32 %1734, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #7
  br label %1735

1735:                                             ; preds = %1731, %1727
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #7
  br label %1736

1736:                                             ; preds = %1735, %1723
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #7
  br label %1742

1737:                                             ; preds = %1722, %1710
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #7
  store i32 16, ptr %172, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %173) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %174) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %174, ptr noundef @.str.95)
  %1738 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %174)
  store i8 %1738, ptr %173, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %171, ptr noundef @.str.93, ptr noundef @.str.94, ptr noundef nonnull align 4 dereferenceable(4) %172, ptr noundef nonnull align 1 dereferenceable(1) %173)
  call void @llvm.lifetime.end.p0(i64 28, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #7
  %1739 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %171)
          to label %1740 unwind label %1743

1740:                                             ; preds = %1737
  br i1 %1739, label %1741, label %1747

1741:                                             ; preds = %1740
  br label %1767

1742:                                             ; preds = %1736, %1713
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #7
  br label %4918

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 %1772

1747:                                             ; preds = %1740
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1748 unwind label %1753

1748:                                             ; preds = %1747
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #7
  %1749 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %171)
          to label %1750 unwind label %1757

1750:                                             ; preds = %1748
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef 1, ptr noundef @.str.4, i32 noundef 104, ptr noundef %1749)
          to label %1751 unwind label %1757

1751:                                             ; preds = %1750
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull align 8 dereferenceable(8) %175)
          to label %1752 unwind label %1761

1752:                                             ; preds = %1751
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #7
  br label %1767

1753:                                             ; preds = %1747
  %1754 = landingpad { ptr, i32 }
          cleanup
  %1755 = extractvalue { ptr, i32 } %1754, 0
  store ptr %1755, ptr %6, align 8
  %1756 = extractvalue { ptr, i32 } %1754, 1
  store i32 %1756, ptr %7, align 4
  br label %1766

1757:                                             ; preds = %1750, %1748
  %1758 = landingpad { ptr, i32 }
          cleanup
  %1759 = extractvalue { ptr, i32 } %1758, 0
  store ptr %1759, ptr %6, align 8
  %1760 = extractvalue { ptr, i32 } %1758, 1
  store i32 %1760, ptr %7, align 4
  br label %1765

1761:                                             ; preds = %1751
  %1762 = landingpad { ptr, i32 }
          cleanup
  %1763 = extractvalue { ptr, i32 } %1762, 0
  store ptr %1763, ptr %6, align 8
  %1764 = extractvalue { ptr, i32 } %1762, 1
  store i32 %1764, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #7
  br label %1765

1765:                                             ; preds = %1761, %1757
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #7
  br label %1766

1766:                                             ; preds = %1765, %1753
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #7
  br label %1772

1767:                                             ; preds = %1752, %1741
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #7
  store i32 24, ptr %178, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %180) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %180, ptr noundef @.str.97)
  %1768 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %180)
  store i8 %1768, 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.75, ptr noundef @.str.96, ptr noundef nonnull align 4 dereferenceable(4) %178, ptr noundef nonnull align 1 dereferenceable(1) %179)
  call void @llvm.lifetime.end.p0(i64 28, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #7
  %1769 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1770 unwind label %1773

1770:                                             ; preds = %1767
  br i1 %1769, label %1771, label %1777

1771:                                             ; preds = %1770
  br label %1797

1772:                                             ; preds = %1766, %1743
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #7
  br label %4918

1773:                                             ; preds = %1767
  %1774 = landingpad { ptr, i32 }
          cleanup
  %1775 = extractvalue { ptr, i32 } %1774, 0
  store ptr %1775, ptr %6, align 8
  %1776 = extractvalue { ptr, i32 } %1774, 1
  store i32 %1776, ptr %7, align 4
  br label %1802

1777:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %1778 unwind label %1783

1778:                                             ; preds = %1777
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #7
  %1779 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %1780 unwind label %1787

1780:                                             ; preds = %1778
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %182, i32 noundef 1, ptr noundef @.str.4, i32 noundef 105, ptr noundef %1779)
          to label %1781 unwind label %1787

1781:                                             ; preds = %1780
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %1782 unwind label %1791

1782:                                             ; preds = %1781
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #7
  br label %1797

1783:                                             ; preds = %1777
  %1784 = landingpad { ptr, i32 }
          cleanup
  %1785 = extractvalue { ptr, i32 } %1784, 0
  store ptr %1785, ptr %6, align 8
  %1786 = extractvalue { ptr, i32 } %1784, 1
  store i32 %1786, ptr %7, align 4
  br label %1796

1787:                                             ; preds = %1780, %1778
  %1788 = landingpad { ptr, i32 }
          cleanup
  %1789 = extractvalue { ptr, i32 } %1788, 0
  store ptr %1789, ptr %6, align 8
  %1790 = extractvalue { ptr, i32 } %1788, 1
  store i32 %1790, ptr %7, align 4
  br label %1795

1791:                                             ; preds = %1781
  %1792 = landingpad { ptr, i32 }
          cleanup
  %1793 = extractvalue { ptr, i32 } %1792, 0
  store ptr %1793, ptr %6, align 8
  %1794 = extractvalue { ptr, i32 } %1792, 1
  store i32 %1794, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #7
  br label %1795

1795:                                             ; preds = %1791, %1787
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #7
  br label %1796

1796:                                             ; preds = %1795, %1783
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #7
  br label %1802

1797:                                             ; preds = %1782, %1771
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %183) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #7
  store i32 26, ptr %184, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %186) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %186, ptr noundef @.str.100)
  %1798 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %186)
  store i8 %1798, ptr %185, align 1, !tbaa !19
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %183, ptr noundef @.str.98, ptr noundef @.str.99, ptr noundef nonnull align 4 dereferenceable(4) %184, ptr noundef nonnull align 1 dereferenceable(1) %185)
  call void @llvm.lifetime.end.p0(i64 28, ptr %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #7
  %1799 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %183)
          to label %1800 unwind label %1803

1800:                                             ; preds = %1797
  br i1 %1799, label %1801, label %1807

1801:                                             ; preds = %1800
  br label %1827

1802:                                             ; preds = %1796, %1773
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %177) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #7
  br label %4918

1803:                                             ; preds = %1797
  %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 %1835

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

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

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

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

1812:                                             ; preds = %1811
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #7
  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) %188) #7
  br label %1825

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

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

1827:                                             ; preds = %1812, %1801
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %183) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %189) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %191) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %191, ptr noundef @.str.48)
  %1828 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %191)
  %1829 = call noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8) %1828)
  store i32 %1829, ptr %190, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %193) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %193, ptr noundef @.str.45)
  %1830 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %193)
  %1831 = call noundef i32 @_ZNK4chen11ip_version47netmaskEv(ptr noundef nonnull align 4 dereferenceable(8) %1830)
  store i32 %1831, ptr %192, align 4, !tbaa !15
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %189, ptr noundef @.str.101, ptr noundef @.str.102, ptr noundef nonnull align 4 dereferenceable(4) %190, ptr noundef nonnull align 4 dereferenceable(4) %192)
  call void @llvm.lifetime.end.p0(i64 28, ptr %193) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %191) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #7
  %1832 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %1833 unwind label %1836

1833:                                             ; preds = %1827
  br i1 %1832, label %1834, label %1840

1834:                                             ; preds = %1833
  br label %1860

1835:                                             ; preds = %1826, %1803
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %183) #7
  br label %4918

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

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

1841:                                             ; preds = %1840
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #7
  %1842 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %1843 unwind label %1850

1843:                                             ; preds = %1841
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %195, i32 noundef 1, ptr noundef @.str.4, i32 noundef 108, ptr noundef %1842)
          to label %1844 unwind label %1850

1844:                                             ; preds = %1843
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %1845 unwind label %1854

1845:                                             ; preds = %1844
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #7
  br label %1860

1846:                                             ; preds = %1840
  %1847 = landingpad { ptr, i32 }
          cleanup
  %1848 = extractvalue { ptr, i32 } %1847, 0
  store ptr %1848, ptr %6, align 8
  %1849 = extractvalue { ptr, i32 } %1847, 1
  store i32 %1849, ptr %7, align 4
  br label %1859

1850:                                             ; preds = %1843, %1841
  %1851 = landingpad { ptr, i32 }
          cleanup
  %1852 = extractvalue { ptr, i32 } %1851, 0
  store ptr %1852, ptr %6, align 8
  %1853 = extractvalue { ptr, i32 } %1851, 1
  store i32 %1853, ptr %7, align 4
  br label %1858

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

1858:                                             ; preds = %1854, %1850
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #7
  br label %1859

1859:                                             ; preds = %1858, %1846
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #7
  br label %1868

1860:                                             ; preds = %1845, %1834
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %189) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %196) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %198) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %198, ptr noundef @.str.105)
  %1861 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %198)
  %1862 = call noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8) %1861)
  store i32 %1862, ptr %197, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %199) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %200) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %200, ptr noundef @.str.45)
  %1863 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %200)
  %1864 = call noundef i32 @_ZNK4chen11ip_version48wildcardEv(ptr noundef nonnull align 4 dereferenceable(8) %1863)
  store i32 %1864, ptr %199, align 4, !tbaa !15
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %196, ptr noundef @.str.103, ptr noundef @.str.104, ptr noundef nonnull align 4 dereferenceable(4) %197, ptr noundef nonnull align 4 dereferenceable(4) %199)
  call void @llvm.lifetime.end.p0(i64 28, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #7
  %1865 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %196)
          to label %1866 unwind label %1869

1866:                                             ; preds = %1860
  br i1 %1865, label %1867, label %1873

1867:                                             ; preds = %1866
  br label %1893

1868:                                             ; preds = %1859, %1836
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %189) #7
  br label %4918

1869:                                             ; preds = %1860
  %1870 = landingpad { ptr, i32 }
          cleanup
  %1871 = extractvalue { ptr, i32 } %1870, 0
  store ptr %1871, ptr %6, align 8
  %1872 = extractvalue { ptr, i32 } %1870, 1
  store i32 %1872, ptr %7, align 4
  br label %1898

1873:                                             ; preds = %1866
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1874 unwind label %1879

1874:                                             ; preds = %1873
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #7
  %1875 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %196)
          to label %1876 unwind label %1883

1876:                                             ; preds = %1874
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef 1, ptr noundef @.str.4, i32 noundef 109, ptr noundef %1875)
          to label %1877 unwind label %1883

1877:                                             ; preds = %1876
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %1878 unwind label %1887

1878:                                             ; preds = %1877
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #7
  br label %1893

1879:                                             ; preds = %1873
  %1880 = landingpad { ptr, i32 }
          cleanup
  %1881 = extractvalue { ptr, i32 } %1880, 0
  store ptr %1881, ptr %6, align 8
  %1882 = extractvalue { ptr, i32 } %1880, 1
  store i32 %1882, ptr %7, align 4
  br label %1892

1883:                                             ; preds = %1876, %1874
  %1884 = landingpad { ptr, i32 }
          cleanup
  %1885 = extractvalue { ptr, i32 } %1884, 0
  store ptr %1885, ptr %6, align 8
  %1886 = extractvalue { ptr, i32 } %1884, 1
  store i32 %1886, ptr %7, align 4
  br label %1891

1887:                                             ; preds = %1877
  %1888 = landingpad { ptr, i32 }
          cleanup
  %1889 = extractvalue { ptr, i32 } %1888, 0
  store ptr %1889, ptr %6, align 8
  %1890 = extractvalue { ptr, i32 } %1888, 1
  store i32 %1890, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #7
  br label %1891

1891:                                             ; preds = %1887, %1883
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #7
  br label %1892

1892:                                             ; preds = %1891, %1879
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #7
  br label %1898

1893:                                             ; preds = %1878, %1867
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %196) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %196) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %203) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %204) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %205) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %206) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %206, ptr noundef @.str.45)
  call void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %205, ptr noundef nonnull align 4 dereferenceable(28) %206)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %204, ptr noundef nonnull align 4 dereferenceable(28) %205, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %203, ptr noundef @.str.106, ptr noundef @.str.107, ptr noundef nonnull align 1 dereferenceable(12) @.str.108, ptr noundef nonnull align 8 dereferenceable(32) %204)
          to label %1894 unwind label %1899

1894:                                             ; preds = %1893
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  %1895 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %203)
          to label %1896 unwind label %1903

1896:                                             ; preds = %1894
  br i1 %1895, label %1897, label %1907

1897:                                             ; preds = %1896
  br label %1927

1898:                                             ; preds = %1892, %1869
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %196) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %196) #7
  br label %4918

1899:                                             ; preds = %1893
  %1900 = landingpad { ptr, i32 }
          cleanup
  %1901 = extractvalue { ptr, i32 } %1900, 0
  store ptr %1901, ptr %6, align 8
  %1902 = extractvalue { ptr, i32 } %1900, 1
  store i32 %1902, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  br label %1933

1903:                                             ; preds = %1894
  %1904 = landingpad { ptr, i32 }
          cleanup
  %1905 = extractvalue { ptr, i32 } %1904, 0
  store ptr %1905, ptr %6, align 8
  %1906 = extractvalue { ptr, i32 } %1904, 1
  store i32 %1906, ptr %7, align 4
  br label %1932

1907:                                             ; preds = %1896
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1908 unwind label %1913

1908:                                             ; preds = %1907
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #7
  %1909 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %203)
          to label %1910 unwind label %1917

1910:                                             ; preds = %1908
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %208, i32 noundef 1, ptr noundef @.str.4, i32 noundef 111, ptr noundef %1909)
          to label %1911 unwind label %1917

1911:                                             ; preds = %1910
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %1912 unwind label %1921

1912:                                             ; preds = %1911
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #7
  br label %1927

1913:                                             ; preds = %1907
  %1914 = landingpad { ptr, i32 }
          cleanup
  %1915 = extractvalue { ptr, i32 } %1914, 0
  store ptr %1915, ptr %6, align 8
  %1916 = extractvalue { ptr, i32 } %1914, 1
  store i32 %1916, ptr %7, align 4
  br label %1926

1917:                                             ; preds = %1910, %1908
  %1918 = landingpad { ptr, i32 }
          cleanup
  %1919 = extractvalue { ptr, i32 } %1918, 0
  store ptr %1919, ptr %6, align 8
  %1920 = extractvalue { ptr, i32 } %1918, 1
  store i32 %1920, ptr %7, align 4
  br label %1925

1921:                                             ; preds = %1911
  %1922 = landingpad { ptr, i32 }
          cleanup
  %1923 = extractvalue { ptr, i32 } %1922, 0
  store ptr %1923, ptr %6, align 8
  %1924 = extractvalue { ptr, i32 } %1922, 1
  store i32 %1924, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #7
  br label %1925

1925:                                             ; preds = %1921, %1917
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #7
  br label %1926

1926:                                             ; preds = %1925, %1913
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #7
  br label %1932

1927:                                             ; preds = %1912, %1897
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %203) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %209) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %210) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %211) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %212) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %212, ptr noundef @.str.45)
  call void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %211, ptr noundef nonnull align 4 dereferenceable(28) %212)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %210, ptr noundef nonnull align 4 dereferenceable(28) %211, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %209, ptr noundef @.str.84, ptr noundef @.str.109, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %1928 unwind label %1934

1928:                                             ; preds = %1927
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %212) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  %1929 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
          to label %1930 unwind label %1938

1930:                                             ; preds = %1928
  br i1 %1929, label %1931, label %1942

1931:                                             ; preds = %1930
  br label %1962

1932:                                             ; preds = %1926, %1903
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %203) #7
  br label %1933

1933:                                             ; preds = %1932, %1899
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #7
  br label %4918

1934:                                             ; preds = %1927
  %1935 = landingpad { ptr, i32 }
          cleanup
  %1936 = extractvalue { ptr, i32 } %1935, 0
  store ptr %1936, ptr %6, align 8
  %1937 = extractvalue { ptr, i32 } %1935, 1
  store i32 %1937, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %212) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  br label %1968

1938:                                             ; preds = %1928
  %1939 = landingpad { ptr, i32 }
          cleanup
  %1940 = extractvalue { ptr, i32 } %1939, 0
  store ptr %1940, ptr %6, align 8
  %1941 = extractvalue { ptr, i32 } %1939, 1
  store i32 %1941, ptr %7, align 4
  br label %1967

1942:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %1943 unwind label %1948

1943:                                             ; preds = %1942
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #7
  %1944 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
          to label %1945 unwind label %1952

1945:                                             ; preds = %1943
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %214, i32 noundef 1, ptr noundef @.str.4, i32 noundef 112, ptr noundef %1944)
          to label %1946 unwind label %1952

1946:                                             ; preds = %1945
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %1947 unwind label %1956

1947:                                             ; preds = %1946
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #7
  br label %1962

1948:                                             ; preds = %1942
  %1949 = landingpad { ptr, i32 }
          cleanup
  %1950 = extractvalue { ptr, i32 } %1949, 0
  store ptr %1950, ptr %6, align 8
  %1951 = extractvalue { ptr, i32 } %1949, 1
  store i32 %1951, ptr %7, align 4
  br label %1961

1952:                                             ; preds = %1945, %1943
  %1953 = landingpad { ptr, i32 }
          cleanup
  %1954 = extractvalue { ptr, i32 } %1953, 0
  store ptr %1954, ptr %6, align 8
  %1955 = extractvalue { ptr, i32 } %1953, 1
  store i32 %1955, ptr %7, align 4
  br label %1960

1956:                                             ; preds = %1946
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #7
  br label %1960

1960:                                             ; preds = %1956, %1952
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #7
  br label %1961

1961:                                             ; preds = %1960, %1948
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #7
  br label %1967

1962:                                             ; preds = %1947, %1931
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %215) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %216) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %217) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %218) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %218, ptr noundef @.str.45)
  call void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %217, ptr noundef nonnull align 4 dereferenceable(28) %218)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %216, ptr noundef nonnull align 4 dereferenceable(28) %217, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA18_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %215, ptr noundef @.str.110, ptr noundef @.str.111, ptr noundef nonnull align 1 dereferenceable(18) @.str.112, ptr noundef nonnull align 8 dereferenceable(32) %216)
          to label %1963 unwind label %1969

1963:                                             ; preds = %1962
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %218) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %217) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #7
  %1964 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %215)
          to label %1965 unwind label %1973

1965:                                             ; preds = %1963
  br i1 %1964, label %1966, label %1977

1966:                                             ; preds = %1965
  br label %1997

1967:                                             ; preds = %1961, %1938
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #7
  br label %1968

1968:                                             ; preds = %1967, %1934
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #7
  br label %4918

1969:                                             ; preds = %1962
  %1970 = landingpad { ptr, i32 }
          cleanup
  %1971 = extractvalue { ptr, i32 } %1970, 0
  store ptr %1971, ptr %6, align 8
  %1972 = extractvalue { ptr, i32 } %1970, 1
  store i32 %1972, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %218) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %217) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #7
  br label %2005

1973:                                             ; preds = %1963
  %1974 = landingpad { ptr, i32 }
          cleanup
  %1975 = extractvalue { ptr, i32 } %1974, 0
  store ptr %1975, ptr %6, align 8
  %1976 = extractvalue { ptr, i32 } %1974, 1
  store i32 %1976, ptr %7, align 4
  br label %2004

1977:                                             ; preds = %1965
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %1978 unwind label %1983

1978:                                             ; preds = %1977
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #7
  %1979 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %215)
          to label %1980 unwind label %1987

1980:                                             ; preds = %1978
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %220, i32 noundef 1, ptr noundef @.str.4, i32 noundef 113, ptr noundef %1979)
          to label %1981 unwind label %1987

1981:                                             ; preds = %1980
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %1982 unwind label %1991

1982:                                             ; preds = %1981
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #7
  br label %1997

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

1987:                                             ; preds = %1980, %1978
  %1988 = landingpad { ptr, i32 }
          cleanup
  %1989 = extractvalue { ptr, i32 } %1988, 0
  store ptr %1989, ptr %6, align 8
  %1990 = extractvalue { ptr, i32 } %1988, 1
  store i32 %1990, ptr %7, align 4
  br label %1995

1991:                                             ; preds = %1981
  %1992 = landingpad { ptr, i32 }
          cleanup
  %1993 = extractvalue { ptr, i32 } %1992, 0
  store ptr %1993, ptr %6, align 8
  %1994 = extractvalue { ptr, i32 } %1992, 1
  store i32 %1994, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  br label %1995

1995:                                             ; preds = %1991, %1987
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #7
  br label %1996

1996:                                             ; preds = %1995, %1983
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #7
  br label %2004

1997:                                             ; preds = %1982, %1966
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %215) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %221) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %222) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %224) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %224, ptr noundef @.str.45)
  %1998 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %224)
  %1999 = call i64 @_ZNK4chen11ip_version49broadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %1998)
  store i64 %1999, ptr %223, align 4
  call void @_ZNK4chen11ip_version43strB5cxx11Eb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %222, ptr noundef nonnull align 4 dereferenceable(8) %223, i1 noundef zeroext true)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA18_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %221, ptr noundef @.str.113, ptr noundef @.str.114, ptr noundef nonnull align 1 dereferenceable(18) @.str.115, ptr noundef nonnull align 8 dereferenceable(32) %222)
          to label %2000 unwind label %2006

2000:                                             ; preds = %1997
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %224) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %222) #7
  %2001 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
          to label %2002 unwind label %2010

2002:                                             ; preds = %2000
  br i1 %2001, label %2003, label %2014

2003:                                             ; preds = %2002
  br label %2034

2004:                                             ; preds = %1996, %1973
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #7
  br label %2005

2005:                                             ; preds = %2004, %1969
  call void @llvm.lifetime.end.p0(i64 16, ptr %215) #7
  br label %4918

2006:                                             ; preds = %1997
  %2007 = landingpad { ptr, i32 }
          cleanup
  %2008 = extractvalue { ptr, i32 } %2007, 0
  store ptr %2008, ptr %6, align 8
  %2009 = extractvalue { ptr, i32 } %2007, 1
  store i32 %2009, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %224) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %222) #7
  br label %2041

2010:                                             ; preds = %2000
  %2011 = landingpad { ptr, i32 }
          cleanup
  %2012 = extractvalue { ptr, i32 } %2011, 0
  store ptr %2012, ptr %6, align 8
  %2013 = extractvalue { ptr, i32 } %2011, 1
  store i32 %2013, ptr %7, align 4
  br label %2040

2014:                                             ; preds = %2002
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %2015 unwind label %2020

2015:                                             ; preds = %2014
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #7
  %2016 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
          to label %2017 unwind label %2024

2017:                                             ; preds = %2015
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %226, i32 noundef 1, ptr noundef @.str.4, i32 noundef 114, ptr noundef %2016)
          to label %2018 unwind label %2024

2018:                                             ; preds = %2017
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %2019 unwind label %2028

2019:                                             ; preds = %2018
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #7
  br label %2034

2020:                                             ; preds = %2014
  %2021 = landingpad { ptr, i32 }
          cleanup
  %2022 = extractvalue { ptr, i32 } %2021, 0
  store ptr %2022, ptr %6, align 8
  %2023 = extractvalue { ptr, i32 } %2021, 1
  store i32 %2023, ptr %7, align 4
  br label %2033

2024:                                             ; preds = %2017, %2015
  %2025 = landingpad { ptr, i32 }
          cleanup
  %2026 = extractvalue { ptr, i32 } %2025, 0
  store ptr %2026, ptr %6, align 8
  %2027 = extractvalue { ptr, i32 } %2025, 1
  store i32 %2027, ptr %7, align 4
  br label %2032

2028:                                             ; preds = %2018
  %2029 = landingpad { ptr, i32 }
          cleanup
  %2030 = extractvalue { ptr, i32 } %2029, 0
  store ptr %2030, ptr %6, align 8
  %2031 = extractvalue { ptr, i32 } %2029, 1
  store i32 %2031, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #7
  br label %2032

2032:                                             ; preds = %2028, %2024
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #7
  br label %2033

2033:                                             ; preds = %2032, %2020
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #7
  br label %2040

2034:                                             ; preds = %2019, %2003
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %227) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %228) #7
  store i32 16777214, ptr %228, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %230) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %230, ptr noundef @.str.45)
  %2035 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %230)
  %2036 = call noundef i64 @_ZNK4chen11ip_version45hostsEv(ptr noundef nonnull align 4 dereferenceable(8) %2035)
  store i64 %2036, ptr %229, align 8, !tbaa !17
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %227, ptr noundef @.str.116, ptr noundef @.str.117, ptr noundef nonnull align 4 dereferenceable(4) %228, ptr noundef nonnull align 8 dereferenceable(8) %229)
  call void @llvm.lifetime.end.p0(i64 28, ptr %230) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %228) #7
  %2037 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
          to label %2038 unwind label %2042

2038:                                             ; preds = %2034
  br i1 %2037, label %2039, label %2046

2039:                                             ; preds = %2038
  br label %2066

2040:                                             ; preds = %2033, %2010
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %221) #7
  br label %2041

2041:                                             ; preds = %2040, %2006
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #7
  br label %4918

2042:                                             ; preds = %2034
  %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 %2072

2046:                                             ; preds = %2038
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %2047 unwind label %2052

2047:                                             ; preds = %2046
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #7
  %2048 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
          to label %2049 unwind label %2056

2049:                                             ; preds = %2047
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %232, i32 noundef 1, ptr noundef @.str.4, i32 noundef 115, ptr noundef %2048)
          to label %2050 unwind label %2056

2050:                                             ; preds = %2049
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %2051 unwind label %2060

2051:                                             ; preds = %2050
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #7
  br label %2066

2052:                                             ; preds = %2046
  %2053 = landingpad { ptr, i32 }
          cleanup
  %2054 = extractvalue { ptr, i32 } %2053, 0
  store ptr %2054, ptr %6, align 8
  %2055 = extractvalue { ptr, i32 } %2053, 1
  store i32 %2055, ptr %7, align 4
  br label %2065

2056:                                             ; preds = %2049, %2047
  %2057 = landingpad { ptr, i32 }
          cleanup
  %2058 = extractvalue { ptr, i32 } %2057, 0
  store ptr %2058, ptr %6, align 8
  %2059 = extractvalue { ptr, i32 } %2057, 1
  store i32 %2059, ptr %7, align 4
  br label %2064

2060:                                             ; preds = %2050
  %2061 = landingpad { ptr, i32 }
          cleanup
  %2062 = extractvalue { ptr, i32 } %2061, 0
  store ptr %2062, ptr %6, align 8
  %2063 = extractvalue { ptr, i32 } %2061, 1
  store i32 %2063, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #7
  br label %2064

2064:                                             ; preds = %2060, %2056
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #7
  br label %2065

2065:                                             ; preds = %2064, %2052
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #7
  br label %2072

2066:                                             ; preds = %2051, %2039
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %227) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %233) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %234) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %235) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %235, ptr noundef @.str.43)
  %2067 = call noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %235)
  %2068 = zext i1 %2067 to i8
  store i8 %2068, ptr %234, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef nonnull align 1 dereferenceable(1) %234, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %235) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #7
  %2069 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %233)
          to label %2070 unwind label %2073

2070:                                             ; preds = %2066
  br i1 %2069, label %2071, label %2077

2071:                                             ; preds = %2070
  br label %2102

2072:                                             ; preds = %2065, %2042
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %227) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %227) #7
  br label %4918

2073:                                             ; preds = %2066
  %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 %2109

2077:                                             ; preds = %2070
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %2078 unwind label %2083

2078:                                             ; preds = %2077
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %238) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %238, ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef @.str.118, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2079 unwind label %2087

2079:                                             ; preds = %2078
  %2080 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %238) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %237, i32 noundef 1, ptr noundef @.str.4, i32 noundef 118, ptr noundef %2080)
          to label %2081 unwind label %2091

2081:                                             ; preds = %2079
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %2082 unwind label %2095

2082:                                             ; preds = %2081
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #7
  br label %2102

2083:                                             ; preds = %2077
  %2084 = landingpad { ptr, i32 }
          cleanup
  %2085 = extractvalue { ptr, i32 } %2084, 0
  store ptr %2085, ptr %6, align 8
  %2086 = extractvalue { ptr, i32 } %2084, 1
  store i32 %2086, ptr %7, align 4
  br label %2101

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

2091:                                             ; preds = %2079
  %2092 = landingpad { ptr, i32 }
          cleanup
  %2093 = extractvalue { ptr, i32 } %2092, 0
  store ptr %2093, ptr %6, align 8
  %2094 = extractvalue { ptr, i32 } %2092, 1
  store i32 %2094, ptr %7, align 4
  br label %2099

2095:                                             ; preds = %2081
  %2096 = landingpad { ptr, i32 }
          cleanup
  %2097 = extractvalue { ptr, i32 } %2096, 0
  store ptr %2097, ptr %6, align 8
  %2098 = extractvalue { ptr, i32 } %2096, 1
  store i32 %2098, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #7
  br label %2099

2099:                                             ; preds = %2095, %2091
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #7
  br label %2100

2100:                                             ; preds = %2099, %2087
  call void @llvm.lifetime.end.p0(i64 32, ptr %238) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #7
  br label %2101

2101:                                             ; preds = %2100, %2083
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #7
  br label %2109

2102:                                             ; preds = %2082, %2071
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %239) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %241) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %241, ptr noundef @.str.43)
  %2103 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %241)
  %2104 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2103)
  %2105 = zext i1 %2104 to i8
  store i8 %2105, ptr %240, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %239, ptr noundef nonnull align 1 dereferenceable(1) %240, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %241) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #7
  %2106 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %239)
          to label %2107 unwind label %2110

2107:                                             ; preds = %2102
  br i1 %2106, label %2108, label %2114

2108:                                             ; preds = %2107
  br label %2139

2109:                                             ; preds = %2101, %2073
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %233) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #7
  br label %4918

2110:                                             ; preds = %2102
  %2111 = landingpad { ptr, i32 }
          cleanup
  %2112 = extractvalue { ptr, i32 } %2111, 0
  store ptr %2112, ptr %6, align 8
  %2113 = extractvalue { ptr, i32 } %2111, 1
  store i32 %2113, ptr %7, align 4
  br label %2146

2114:                                             ; preds = %2107
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %242)
          to label %2115 unwind label %2120

2115:                                             ; preds = %2114
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %244) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %244, ptr noundef nonnull align 8 dereferenceable(16) %239, ptr noundef @.str.119, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2116 unwind label %2124

2116:                                             ; preds = %2115
  %2117 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %244) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %243, i32 noundef 1, ptr noundef @.str.4, i32 noundef 120, ptr noundef %2117)
          to label %2118 unwind label %2128

2118:                                             ; preds = %2116
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull align 8 dereferenceable(8) %242)
          to label %2119 unwind label %2132

2119:                                             ; preds = %2118
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %244) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #7
  br label %2139

2120:                                             ; preds = %2114
  %2121 = landingpad { ptr, i32 }
          cleanup
  %2122 = extractvalue { ptr, i32 } %2121, 0
  store ptr %2122, ptr %6, align 8
  %2123 = extractvalue { ptr, i32 } %2121, 1
  store i32 %2123, ptr %7, align 4
  br label %2138

2124:                                             ; preds = %2115
  %2125 = landingpad { ptr, i32 }
          cleanup
  %2126 = extractvalue { ptr, i32 } %2125, 0
  store ptr %2126, ptr %6, align 8
  %2127 = extractvalue { ptr, i32 } %2125, 1
  store i32 %2127, ptr %7, align 4
  br label %2137

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

2132:                                             ; preds = %2118
  %2133 = landingpad { ptr, i32 }
          cleanup
  %2134 = extractvalue { ptr, i32 } %2133, 0
  store ptr %2134, ptr %6, align 8
  %2135 = extractvalue { ptr, i32 } %2133, 1
  store i32 %2135, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #7
  br label %2136

2136:                                             ; preds = %2132, %2128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #7
  br label %2137

2137:                                             ; preds = %2136, %2124
  call void @llvm.lifetime.end.p0(i64 32, ptr %244) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #7
  br label %2138

2138:                                             ; preds = %2137, %2120
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #7
  br label %2146

2139:                                             ; preds = %2119, %2108
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %245) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %247) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %247, ptr noundef @.str.7)
  %2140 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %247)
  %2141 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2140)
  %2142 = zext i1 %2141 to i8
  store i8 %2142, ptr %246, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef nonnull align 1 dereferenceable(1) %246, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %247) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #7
  %2143 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
          to label %2144 unwind label %2147

2144:                                             ; preds = %2139
  br i1 %2143, label %2145, label %2151

2145:                                             ; preds = %2144
  br label %2176

2146:                                             ; preds = %2138, %2110
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %239) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #7
  br label %4918

2147:                                             ; preds = %2139
  %2148 = landingpad { ptr, i32 }
          cleanup
  %2149 = extractvalue { ptr, i32 } %2148, 0
  store ptr %2149, ptr %6, align 8
  %2150 = extractvalue { ptr, i32 } %2148, 1
  store i32 %2150, ptr %7, align 4
  br label %2183

2151:                                             ; preds = %2144
  call void @llvm.lifetime.start.p0(i64 8, ptr %248) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %248)
          to label %2152 unwind label %2157

2152:                                             ; preds = %2151
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %250) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %250, ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef @.str.120, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2153 unwind label %2161

2153:                                             ; preds = %2152
  %2154 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %250) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %249, i32 noundef 1, ptr noundef @.str.4, i32 noundef 121, ptr noundef %2154)
          to label %2155 unwind label %2165

2155:                                             ; preds = %2153
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(8) %248)
          to label %2156 unwind label %2169

2156:                                             ; preds = %2155
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %250) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #7
  br label %2176

2157:                                             ; preds = %2151
  %2158 = landingpad { ptr, i32 }
          cleanup
  %2159 = extractvalue { ptr, i32 } %2158, 0
  store ptr %2159, ptr %6, align 8
  %2160 = extractvalue { ptr, i32 } %2158, 1
  store i32 %2160, ptr %7, align 4
  br label %2175

2161:                                             ; preds = %2152
  %2162 = landingpad { ptr, i32 }
          cleanup
  %2163 = extractvalue { ptr, i32 } %2162, 0
  store ptr %2163, ptr %6, align 8
  %2164 = extractvalue { ptr, i32 } %2162, 1
  store i32 %2164, ptr %7, align 4
  br label %2174

2165:                                             ; preds = %2153
  %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 = %2155
  %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 @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #7
  br label %2173

2173:                                             ; preds = %2169, %2165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #7
  br label %2174

2174:                                             ; preds = %2173, %2161
  call void @llvm.lifetime.end.p0(i64 32, ptr %250) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #7
  br label %2175

2175:                                             ; preds = %2174, %2157
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #7
  br label %2183

2176:                                             ; preds = %2156, %2145
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %245) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %251) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %252) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %253) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %253, ptr noundef @.str.121)
  %2177 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %253)
  %2178 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2177)
  %2179 = zext i1 %2178 to i8
  store i8 %2179, ptr %252, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef nonnull align 1 dereferenceable(1) %252, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %253) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #7
  %2180 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %251)
          to label %2181 unwind label %2184

2181:                                             ; preds = %2176
  br i1 %2180, label %2182, label %2188

2182:                                             ; preds = %2181
  br label %2213

2183:                                             ; preds = %2175, %2147
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %245) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %245) #7
  br label %4918

2184:                                             ; preds = %2176
  %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 %2220

2188:                                             ; preds = %2181
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %2189 unwind label %2194

2189:                                             ; preds = %2188
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %256) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %256, ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef @.str.122, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2190 unwind label %2198

2190:                                             ; preds = %2189
  %2191 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %256) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %255, i32 noundef 1, ptr noundef @.str.4, i32 noundef 122, ptr noundef %2191)
          to label %2192 unwind label %2202

2192:                                             ; preds = %2190
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %2193 unwind label %2206

2193:                                             ; preds = %2192
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %256) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #7
  br label %2213

2194:                                             ; preds = %2188
  %2195 = landingpad { ptr, i32 }
          cleanup
  %2196 = extractvalue { ptr, i32 } %2195, 0
  store ptr %2196, ptr %6, align 8
  %2197 = extractvalue { ptr, i32 } %2195, 1
  store i32 %2197, ptr %7, align 4
  br label %2212

2198:                                             ; preds = %2189
  %2199 = landingpad { ptr, i32 }
          cleanup
  %2200 = extractvalue { ptr, i32 } %2199, 0
  store ptr %2200, ptr %6, align 8
  %2201 = extractvalue { ptr, i32 } %2199, 1
  store i32 %2201, ptr %7, align 4
  br label %2211

2202:                                             ; preds = %2190
  %2203 = landingpad { ptr, i32 }
          cleanup
  %2204 = extractvalue { ptr, i32 } %2203, 0
  store ptr %2204, ptr %6, align 8
  %2205 = extractvalue { ptr, i32 } %2203, 1
  store i32 %2205, ptr %7, align 4
  br label %2210

2206:                                             ; preds = %2192
  %2207 = landingpad { ptr, i32 }
          cleanup
  %2208 = extractvalue { ptr, i32 } %2207, 0
  store ptr %2208, ptr %6, align 8
  %2209 = extractvalue { ptr, i32 } %2207, 1
  store i32 %2209, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #7
  br label %2210

2210:                                             ; preds = %2206, %2202
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #7
  br label %2211

2211:                                             ; preds = %2210, %2198
  call void @llvm.lifetime.end.p0(i64 32, ptr %256) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %254) #7
  br label %2212

2212:                                             ; preds = %2211, %2194
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #7
  br label %2220

2213:                                             ; preds = %2193, %2182
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %251) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %257) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %258) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %259) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %259, ptr noundef @.str.123)
  %2214 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %259)
  %2215 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2214)
  %2216 = zext i1 %2215 to i8
  store i8 %2216, ptr %258, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef nonnull align 1 dereferenceable(1) %258, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %259) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %258) #7
  %2217 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %257)
          to label %2218 unwind label %2221

2218:                                             ; preds = %2213
  br i1 %2217, label %2219, label %2225

2219:                                             ; preds = %2218
  br label %2250

2220:                                             ; preds = %2212, %2184
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %251) #7
  br label %4918

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

2225:                                             ; preds = %2218
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %2226 unwind label %2231

2226:                                             ; preds = %2225
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %262) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %262, ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef @.str.124, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2227 unwind label %2235

2227:                                             ; preds = %2226
  %2228 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %262) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %261, i32 noundef 1, ptr noundef @.str.4, i32 noundef 123, ptr noundef %2228)
          to label %2229 unwind label %2239

2229:                                             ; preds = %2227
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %2230 unwind label %2243

2230:                                             ; preds = %2229
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #7
  br label %2250

2231:                                             ; preds = %2225
  %2232 = landingpad { ptr, i32 }
          cleanup
  %2233 = extractvalue { ptr, i32 } %2232, 0
  store ptr %2233, ptr %6, align 8
  %2234 = extractvalue { ptr, i32 } %2232, 1
  store i32 %2234, ptr %7, align 4
  br label %2249

2235:                                             ; preds = %2226
  %2236 = landingpad { ptr, i32 }
          cleanup
  %2237 = extractvalue { ptr, i32 } %2236, 0
  store ptr %2237, ptr %6, align 8
  %2238 = extractvalue { ptr, i32 } %2236, 1
  store i32 %2238, ptr %7, align 4
  br label %2248

2239:                                             ; preds = %2227
  %2240 = landingpad { ptr, i32 }
          cleanup
  %2241 = extractvalue { ptr, i32 } %2240, 0
  store ptr %2241, ptr %6, align 8
  %2242 = extractvalue { ptr, i32 } %2240, 1
  store i32 %2242, ptr %7, align 4
  br label %2247

2243:                                             ; preds = %2229
  %2244 = landingpad { ptr, i32 }
          cleanup
  %2245 = extractvalue { ptr, i32 } %2244, 0
  store ptr %2245, ptr %6, align 8
  %2246 = extractvalue { ptr, i32 } %2244, 1
  store i32 %2246, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #7
  br label %2247

2247:                                             ; preds = %2243, %2239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #7
  br label %2248

2248:                                             ; preds = %2247, %2235
  call void @llvm.lifetime.end.p0(i64 32, ptr %262) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #7
  br label %2249

2249:                                             ; preds = %2248, %2231
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #7
  br label %2257

2250:                                             ; preds = %2230, %2219
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %263) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %264) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %265) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %265, ptr noundef @.str.125)
  %2251 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %265)
  %2252 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2251)
  %2253 = zext i1 %2252 to i8
  store i8 %2253, ptr %264, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %263, ptr noundef nonnull align 1 dereferenceable(1) %264, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %265) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #7
  %2254 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %263)
          to label %2255 unwind label %2258

2255:                                             ; preds = %2250
  br i1 %2254, label %2256, label %2262

2256:                                             ; preds = %2255
  br label %2287

2257:                                             ; preds = %2249, %2221
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %257) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #7
  br label %4918

2258:                                             ; preds = %2250
  %2259 = landingpad { ptr, i32 }
          cleanup
  %2260 = extractvalue { ptr, i32 } %2259, 0
  store ptr %2260, ptr %6, align 8
  %2261 = extractvalue { ptr, i32 } %2259, 1
  store i32 %2261, ptr %7, align 4
  br label %2294

2262:                                             ; preds = %2255
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %2263 unwind label %2268

2263:                                             ; preds = %2262
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %268) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %268, ptr noundef nonnull align 8 dereferenceable(16) %263, ptr noundef @.str.126, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2264 unwind label %2272

2264:                                             ; preds = %2263
  %2265 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %268) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %267, i32 noundef 1, ptr noundef @.str.4, i32 noundef 124, ptr noundef %2265)
          to label %2266 unwind label %2276

2266:                                             ; preds = %2264
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %2267 unwind label %2280

2267:                                             ; preds = %2266
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %268) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #7
  br label %2287

2268:                                             ; preds = %2262
  %2269 = landingpad { ptr, i32 }
          cleanup
  %2270 = extractvalue { ptr, i32 } %2269, 0
  store ptr %2270, ptr %6, align 8
  %2271 = extractvalue { ptr, i32 } %2269, 1
  store i32 %2271, ptr %7, align 4
  br label %2286

2272:                                             ; preds = %2263
  %2273 = landingpad { ptr, i32 }
          cleanup
  %2274 = extractvalue { ptr, i32 } %2273, 0
  store ptr %2274, ptr %6, align 8
  %2275 = extractvalue { ptr, i32 } %2273, 1
  store i32 %2275, ptr %7, align 4
  br label %2285

2276:                                             ; preds = %2264
  %2277 = landingpad { ptr, i32 }
          cleanup
  %2278 = extractvalue { ptr, i32 } %2277, 0
  store ptr %2278, ptr %6, align 8
  %2279 = extractvalue { ptr, i32 } %2277, 1
  store i32 %2279, ptr %7, align 4
  br label %2284

2280:                                             ; preds = %2266
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #7
  br label %2284

2284:                                             ; preds = %2280, %2276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #7
  br label %2285

2285:                                             ; preds = %2284, %2272
  call void @llvm.lifetime.end.p0(i64 32, ptr %268) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %266) #7
  br label %2286

2286:                                             ; preds = %2285, %2268
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #7
  br label %2294

2287:                                             ; preds = %2267, %2256
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %263) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %269) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %270) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %271) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %271, ptr noundef @.str.127)
  %2288 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %271)
  %2289 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2288)
  %2290 = zext i1 %2289 to i8
  store i8 %2290, ptr %270, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %269, ptr noundef nonnull align 1 dereferenceable(1) %270, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %271) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #7
  %2291 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
          to label %2292 unwind label %2295

2292:                                             ; preds = %2287
  br i1 %2291, label %2293, label %2299

2293:                                             ; preds = %2292
  br label %2324

2294:                                             ; preds = %2286, %2258
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %263) #7
  br label %4918

2295:                                             ; preds = %2287
  %2296 = landingpad { ptr, i32 }
          cleanup
  %2297 = extractvalue { ptr, i32 } %2296, 0
  store ptr %2297, ptr %6, align 8
  %2298 = extractvalue { ptr, i32 } %2296, 1
  store i32 %2298, ptr %7, align 4
  br label %2331

2299:                                             ; preds = %2292
  call void @llvm.lifetime.start.p0(i64 8, ptr %272) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %272)
          to label %2300 unwind label %2305

2300:                                             ; preds = %2299
  call void @llvm.lifetime.start.p0(i64 8, ptr %273) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %274) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %274, ptr noundef nonnull align 8 dereferenceable(16) %269, ptr noundef @.str.128, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2301 unwind label %2309

2301:                                             ; preds = %2300
  %2302 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %274) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %273, i32 noundef 1, ptr noundef @.str.4, i32 noundef 125, ptr noundef %2302)
          to label %2303 unwind label %2313

2303:                                             ; preds = %2301
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull align 8 dereferenceable(8) %272)
          to label %2304 unwind label %2317

2304:                                             ; preds = %2303
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %274) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %272) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %272) #7
  br label %2324

2305:                                             ; preds = %2299
  %2306 = landingpad { ptr, i32 }
          cleanup
  %2307 = extractvalue { ptr, i32 } %2306, 0
  store ptr %2307, ptr %6, align 8
  %2308 = extractvalue { ptr, i32 } %2306, 1
  store i32 %2308, ptr %7, align 4
  br label %2323

2309:                                             ; preds = %2300
  %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 %2322

2313:                                             ; preds = %2301
  %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
  br label %2321

2317:                                             ; preds = %2303
  %2318 = landingpad { ptr, i32 }
          cleanup
  %2319 = extractvalue { ptr, i32 } %2318, 0
  store ptr %2319, ptr %6, align 8
  %2320 = extractvalue { ptr, i32 } %2318, 1
  store i32 %2320, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #7
  br label %2321

2321:                                             ; preds = %2317, %2313
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #7
  br label %2322

2322:                                             ; preds = %2321, %2309
  call void @llvm.lifetime.end.p0(i64 32, ptr %274) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %272) #7
  br label %2323

2323:                                             ; preds = %2322, %2305
  call void @llvm.lifetime.end.p0(i64 8, ptr %272) #7
  br label %2331

2324:                                             ; preds = %2304, %2293
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %269) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %275) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %276) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %277) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %277, ptr noundef @.str.129)
  %2325 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %277)
  %2326 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2325)
  %2327 = zext i1 %2326 to i8
  store i8 %2327, ptr %276, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef nonnull align 1 dereferenceable(1) %276, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %277) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %276) #7
  %2328 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %275)
          to label %2329 unwind label %2332

2329:                                             ; preds = %2324
  br i1 %2328, label %2330, label %2336

2330:                                             ; preds = %2329
  br label %2361

2331:                                             ; preds = %2323, %2295
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %269) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %269) #7
  br label %4918

2332:                                             ; preds = %2324
  %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 %2368

2336:                                             ; preds = %2329
  call void @llvm.lifetime.start.p0(i64 8, ptr %278) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %2337 unwind label %2342

2337:                                             ; preds = %2336
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %280) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %280, ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef @.str.130, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2338 unwind label %2346

2338:                                             ; preds = %2337
  %2339 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %280) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %279, i32 noundef 1, ptr noundef @.str.4, i32 noundef 126, ptr noundef %2339)
          to label %2340 unwind label %2350

2340:                                             ; preds = %2338
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %2341 unwind label %2354

2341:                                             ; preds = %2340
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #7
  br label %2361

2342:                                             ; preds = %2336
  %2343 = landingpad { ptr, i32 }
          cleanup
  %2344 = extractvalue { ptr, i32 } %2343, 0
  store ptr %2344, ptr %6, align 8
  %2345 = extractvalue { ptr, i32 } %2343, 1
  store i32 %2345, ptr %7, align 4
  br label %2360

2346:                                             ; preds = %2337
  %2347 = landingpad { ptr, i32 }
          cleanup
  %2348 = extractvalue { ptr, i32 } %2347, 0
  store ptr %2348, ptr %6, align 8
  %2349 = extractvalue { ptr, i32 } %2347, 1
  store i32 %2349, ptr %7, align 4
  br label %2359

2350:                                             ; preds = %2338
  %2351 = landingpad { ptr, i32 }
          cleanup
  %2352 = extractvalue { ptr, i32 } %2351, 0
  store ptr %2352, ptr %6, align 8
  %2353 = extractvalue { ptr, i32 } %2351, 1
  store i32 %2353, ptr %7, align 4
  br label %2358

2354:                                             ; preds = %2340
  %2355 = landingpad { ptr, i32 }
          cleanup
  %2356 = extractvalue { ptr, i32 } %2355, 0
  store ptr %2356, ptr %6, align 8
  %2357 = extractvalue { ptr, i32 } %2355, 1
  store i32 %2357, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #7
  br label %2358

2358:                                             ; preds = %2354, %2350
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #7
  br label %2359

2359:                                             ; preds = %2358, %2346
  call void @llvm.lifetime.end.p0(i64 32, ptr %280) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #7
  br label %2360

2360:                                             ; preds = %2359, %2342
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #7
  br label %2368

2361:                                             ; preds = %2341, %2330
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %281) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %282) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %283) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %283, ptr noundef @.str.131)
  %2362 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %283)
  %2363 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2362)
  %2364 = zext i1 %2363 to i8
  store i8 %2364, ptr %282, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %281, ptr noundef nonnull align 1 dereferenceable(1) %282, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %283) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #7
  %2365 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
          to label %2366 unwind label %2369

2366:                                             ; preds = %2361
  br i1 %2365, label %2367, label %2373

2367:                                             ; preds = %2366
  br label %2398

2368:                                             ; preds = %2360, %2332
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #7
  br label %4918

2369:                                             ; preds = %2361
  %2370 = landingpad { ptr, i32 }
          cleanup
  %2371 = extractvalue { ptr, i32 } %2370, 0
  store ptr %2371, ptr %6, align 8
  %2372 = extractvalue { ptr, i32 } %2370, 1
  store i32 %2372, ptr %7, align 4
  br label %2405

2373:                                             ; preds = %2366
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %2374 unwind label %2379

2374:                                             ; preds = %2373
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %286) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %286, ptr noundef nonnull align 8 dereferenceable(16) %281, ptr noundef @.str.132, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2375 unwind label %2383

2375:                                             ; preds = %2374
  %2376 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %286) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %285, i32 noundef 1, ptr noundef @.str.4, i32 noundef 127, ptr noundef %2376)
          to label %2377 unwind label %2387

2377:                                             ; preds = %2375
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %2378 unwind label %2391

2378:                                             ; preds = %2377
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %286) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #7
  br label %2398

2379:                                             ; preds = %2373
  %2380 = landingpad { ptr, i32 }
          cleanup
  %2381 = extractvalue { ptr, i32 } %2380, 0
  store ptr %2381, ptr %6, align 8
  %2382 = extractvalue { ptr, i32 } %2380, 1
  store i32 %2382, ptr %7, align 4
  br label %2397

2383:                                             ; preds = %2374
  %2384 = landingpad { ptr, i32 }
          cleanup
  %2385 = extractvalue { ptr, i32 } %2384, 0
  store ptr %2385, ptr %6, align 8
  %2386 = extractvalue { ptr, i32 } %2384, 1
  store i32 %2386, ptr %7, align 4
  br label %2396

2387:                                             ; preds = %2375
  %2388 = landingpad { ptr, i32 }
          cleanup
  %2389 = extractvalue { ptr, i32 } %2388, 0
  store ptr %2389, ptr %6, align 8
  %2390 = extractvalue { ptr, i32 } %2388, 1
  store i32 %2390, ptr %7, align 4
  br label %2395

2391:                                             ; preds = %2377
  %2392 = landingpad { ptr, i32 }
          cleanup
  %2393 = extractvalue { ptr, i32 } %2392, 0
  store ptr %2393, ptr %6, align 8
  %2394 = extractvalue { ptr, i32 } %2392, 1
  store i32 %2394, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #7
  br label %2395

2395:                                             ; preds = %2391, %2387
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #7
  br label %2396

2396:                                             ; preds = %2395, %2383
  call void @llvm.lifetime.end.p0(i64 32, ptr %286) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #7
  br label %2397

2397:                                             ; preds = %2396, %2379
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #7
  br label %2405

2398:                                             ; preds = %2378, %2367
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %281) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %281) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %287) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %288) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %289) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %289, ptr noundef @.str.133)
  %2399 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %289)
  %2400 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2399)
  %2401 = zext i1 %2400 to i8
  store i8 %2401, ptr %288, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %287, ptr noundef nonnull align 1 dereferenceable(1) %288, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %289) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #7
  %2402 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %287)
          to label %2403 unwind label %2406

2403:                                             ; preds = %2398
  br i1 %2402, label %2404, label %2410

2404:                                             ; preds = %2403
  br label %2435

2405:                                             ; preds = %2397, %2369
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %281) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %281) #7
  br label %4918

2406:                                             ; preds = %2398
  %2407 = landingpad { ptr, i32 }
          cleanup
  %2408 = extractvalue { ptr, i32 } %2407, 0
  store ptr %2408, ptr %6, align 8
  %2409 = extractvalue { ptr, i32 } %2407, 1
  store i32 %2409, ptr %7, align 4
  br label %2442

2410:                                             ; preds = %2403
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %2411 unwind label %2416

2411:                                             ; preds = %2410
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %292) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %292, ptr noundef nonnull align 8 dereferenceable(16) %287, ptr noundef @.str.134, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2412 unwind label %2420

2412:                                             ; preds = %2411
  %2413 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %292) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %291, i32 noundef 1, ptr noundef @.str.4, i32 noundef 128, ptr noundef %2413)
          to label %2414 unwind label %2424

2414:                                             ; preds = %2412
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %2415 unwind label %2428

2415:                                             ; preds = %2414
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %292) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #7
  br label %2435

2416:                                             ; preds = %2410
  %2417 = landingpad { ptr, i32 }
          cleanup
  %2418 = extractvalue { ptr, i32 } %2417, 0
  store ptr %2418, ptr %6, align 8
  %2419 = extractvalue { ptr, i32 } %2417, 1
  store i32 %2419, ptr %7, align 4
  br label %2434

2420:                                             ; preds = %2411
  %2421 = landingpad { ptr, i32 }
          cleanup
  %2422 = extractvalue { ptr, i32 } %2421, 0
  store ptr %2422, ptr %6, align 8
  %2423 = extractvalue { ptr, i32 } %2421, 1
  store i32 %2423, ptr %7, align 4
  br label %2433

2424:                                             ; preds = %2412
  %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 %2432

2428:                                             ; preds = %2414
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #7
  br label %2432

2432:                                             ; preds = %2428, %2424
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #7
  br label %2433

2433:                                             ; preds = %2432, %2420
  call void @llvm.lifetime.end.p0(i64 32, ptr %292) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #7
  br label %2434

2434:                                             ; preds = %2433, %2416
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #7
  br label %2442

2435:                                             ; preds = %2415, %2404
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %287) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %293) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %295) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %295, ptr noundef @.str.135)
  %2436 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %295)
  %2437 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2436)
  %2438 = zext i1 %2437 to i8
  store i8 %2438, ptr %294, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %293, ptr noundef nonnull align 1 dereferenceable(1) %294, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %295) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #7
  %2439 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %293)
          to label %2440 unwind label %2443

2440:                                             ; preds = %2435
  br i1 %2439, label %2441, label %2447

2441:                                             ; preds = %2440
  br label %2472

2442:                                             ; preds = %2434, %2406
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %287) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %287) #7
  br label %4918

2443:                                             ; preds = %2435
  %2444 = landingpad { ptr, i32 }
          cleanup
  %2445 = extractvalue { ptr, i32 } %2444, 0
  store ptr %2445, ptr %6, align 8
  %2446 = extractvalue { ptr, i32 } %2444, 1
  store i32 %2446, ptr %7, align 4
  br label %2479

2447:                                             ; preds = %2440
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %2448 unwind label %2453

2448:                                             ; preds = %2447
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %298) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %298, ptr noundef nonnull align 8 dereferenceable(16) %293, ptr noundef @.str.136, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2449 unwind label %2457

2449:                                             ; preds = %2448
  %2450 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %298) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %297, i32 noundef 1, ptr noundef @.str.4, i32 noundef 129, ptr noundef %2450)
          to label %2451 unwind label %2461

2451:                                             ; preds = %2449
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %2452 unwind label %2465

2452:                                             ; preds = %2451
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %298) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #7
  br label %2472

2453:                                             ; preds = %2447
  %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 %2471

2457:                                             ; preds = %2448
  %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
  br label %2470

2461:                                             ; preds = %2449
  %2462 = landingpad { ptr, i32 }
          cleanup
  %2463 = extractvalue { ptr, i32 } %2462, 0
  store ptr %2463, ptr %6, align 8
  %2464 = extractvalue { ptr, i32 } %2462, 1
  store i32 %2464, ptr %7, align 4
  br label %2469

2465:                                             ; preds = %2451
  %2466 = landingpad { ptr, i32 }
          cleanup
  %2467 = extractvalue { ptr, i32 } %2466, 0
  store ptr %2467, ptr %6, align 8
  %2468 = extractvalue { ptr, i32 } %2466, 1
  store i32 %2468, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #7
  br label %2469

2469:                                             ; preds = %2465, %2461
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #7
  br label %2470

2470:                                             ; preds = %2469, %2457
  call void @llvm.lifetime.end.p0(i64 32, ptr %298) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #7
  br label %2471

2471:                                             ; preds = %2470, %2453
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #7
  br label %2479

2472:                                             ; preds = %2452, %2441
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %293) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %299) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %300) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %301) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %301, ptr noundef @.str.137)
  %2473 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %301)
  %2474 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2473)
  %2475 = zext i1 %2474 to i8
  store i8 %2475, ptr %300, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %299, ptr noundef nonnull align 1 dereferenceable(1) %300, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %301) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %300) #7
  %2476 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %299)
          to label %2477 unwind label %2480

2477:                                             ; preds = %2472
  br i1 %2476, label %2478, label %2484

2478:                                             ; preds = %2477
  br label %2509

2479:                                             ; preds = %2471, %2443
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %293) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %293) #7
  br label %4918

2480:                                             ; preds = %2472
  %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
  br label %2516

2484:                                             ; preds = %2477
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %302)
          to label %2485 unwind label %2490

2485:                                             ; preds = %2484
  call void @llvm.lifetime.start.p0(i64 8, ptr %303) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %304) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %304, ptr noundef nonnull align 8 dereferenceable(16) %299, ptr noundef @.str.138, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2486 unwind label %2494

2486:                                             ; preds = %2485
  %2487 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %304) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %303, i32 noundef 1, ptr noundef @.str.4, i32 noundef 130, ptr noundef %2487)
          to label %2488 unwind label %2498

2488:                                             ; preds = %2486
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull align 8 dereferenceable(8) %302)
          to label %2489 unwind label %2502

2489:                                             ; preds = %2488
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %304) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #7
  br label %2509

2490:                                             ; preds = %2484
  %2491 = landingpad { ptr, i32 }
          cleanup
  %2492 = extractvalue { ptr, i32 } %2491, 0
  store ptr %2492, ptr %6, align 8
  %2493 = extractvalue { ptr, i32 } %2491, 1
  store i32 %2493, ptr %7, align 4
  br label %2508

2494:                                             ; preds = %2485
  %2495 = landingpad { ptr, i32 }
          cleanup
  %2496 = extractvalue { ptr, i32 } %2495, 0
  store ptr %2496, ptr %6, align 8
  %2497 = extractvalue { ptr, i32 } %2495, 1
  store i32 %2497, ptr %7, align 4
  br label %2507

2498:                                             ; preds = %2486
  %2499 = landingpad { ptr, i32 }
          cleanup
  %2500 = extractvalue { ptr, i32 } %2499, 0
  store ptr %2500, ptr %6, align 8
  %2501 = extractvalue { ptr, i32 } %2499, 1
  store i32 %2501, ptr %7, align 4
  br label %2506

2502:                                             ; preds = %2488
  %2503 = landingpad { ptr, i32 }
          cleanup
  %2504 = extractvalue { ptr, i32 } %2503, 0
  store ptr %2504, ptr %6, align 8
  %2505 = extractvalue { ptr, i32 } %2503, 1
  store i32 %2505, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #7
  br label %2506

2506:                                             ; preds = %2502, %2498
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %304) #7
  br label %2507

2507:                                             ; preds = %2506, %2494
  call void @llvm.lifetime.end.p0(i64 32, ptr %304) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #7
  br label %2508

2508:                                             ; preds = %2507, %2490
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #7
  br label %2516

2509:                                             ; preds = %2489, %2478
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %299) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %299) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %305) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %306) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %307) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %307, ptr noundef @.str.139)
  %2510 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %307)
  %2511 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2510)
  %2512 = zext i1 %2511 to i8
  store i8 %2512, ptr %306, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %305, ptr noundef nonnull align 1 dereferenceable(1) %306, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %307) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %306) #7
  %2513 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %305)
          to label %2514 unwind label %2517

2514:                                             ; preds = %2509
  br i1 %2513, label %2515, label %2521

2515:                                             ; preds = %2514
  br label %2546

2516:                                             ; preds = %2508, %2480
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %299) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %299) #7
  br label %4918

2517:                                             ; preds = %2509
  %2518 = landingpad { ptr, i32 }
          cleanup
  %2519 = extractvalue { ptr, i32 } %2518, 0
  store ptr %2519, ptr %6, align 8
  %2520 = extractvalue { ptr, i32 } %2518, 1
  store i32 %2520, ptr %7, align 4
  br label %2553

2521:                                             ; preds = %2514
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308)
          to label %2522 unwind label %2527

2522:                                             ; preds = %2521
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %310) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %310, ptr noundef nonnull align 8 dereferenceable(16) %305, ptr noundef @.str.140, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2523 unwind label %2531

2523:                                             ; preds = %2522
  %2524 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %310) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %309, i32 noundef 1, ptr noundef @.str.4, i32 noundef 131, ptr noundef %2524)
          to label %2525 unwind label %2535

2525:                                             ; preds = %2523
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull align 8 dereferenceable(8) %308)
          to label %2526 unwind label %2539

2526:                                             ; preds = %2525
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %310) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #7
  br label %2546

2527:                                             ; preds = %2521
  %2528 = landingpad { ptr, i32 }
          cleanup
  %2529 = extractvalue { ptr, i32 } %2528, 0
  store ptr %2529, ptr %6, align 8
  %2530 = extractvalue { ptr, i32 } %2528, 1
  store i32 %2530, ptr %7, align 4
  br label %2545

2531:                                             ; preds = %2522
  %2532 = landingpad { ptr, i32 }
          cleanup
  %2533 = extractvalue { ptr, i32 } %2532, 0
  store ptr %2533, ptr %6, align 8
  %2534 = extractvalue { ptr, i32 } %2532, 1
  store i32 %2534, ptr %7, align 4
  br label %2544

2535:                                             ; preds = %2523
  %2536 = landingpad { ptr, i32 }
          cleanup
  %2537 = extractvalue { ptr, i32 } %2536, 0
  store ptr %2537, ptr %6, align 8
  %2538 = extractvalue { ptr, i32 } %2536, 1
  store i32 %2538, ptr %7, align 4
  br label %2543

2539:                                             ; preds = %2525
  %2540 = landingpad { ptr, i32 }
          cleanup
  %2541 = extractvalue { ptr, i32 } %2540, 0
  store ptr %2541, ptr %6, align 8
  %2542 = extractvalue { ptr, i32 } %2540, 1
  store i32 %2542, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #7
  br label %2543

2543:                                             ; preds = %2539, %2535
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #7
  br label %2544

2544:                                             ; preds = %2543, %2531
  call void @llvm.lifetime.end.p0(i64 32, ptr %310) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #7
  br label %2545

2545:                                             ; preds = %2544, %2527
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #7
  br label %2553

2546:                                             ; preds = %2526, %2515
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %305) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %305) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %311) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %312) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %313) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %313, ptr noundef @.str.141)
  %2547 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %313)
  %2548 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2547)
  %2549 = zext i1 %2548 to i8
  store i8 %2549, ptr %312, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %311, ptr noundef nonnull align 1 dereferenceable(1) %312, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %313) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #7
  %2550 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %311)
          to label %2551 unwind label %2554

2551:                                             ; preds = %2546
  br i1 %2550, label %2552, label %2558

2552:                                             ; preds = %2551
  br label %2583

2553:                                             ; preds = %2545, %2517
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %305) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %305) #7
  br label %4918

2554:                                             ; preds = %2546
  %2555 = landingpad { ptr, i32 }
          cleanup
  %2556 = extractvalue { ptr, i32 } %2555, 0
  store ptr %2556, ptr %6, align 8
  %2557 = extractvalue { ptr, i32 } %2555, 1
  store i32 %2557, ptr %7, align 4
  br label %2590

2558:                                             ; preds = %2551
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %2559 unwind label %2564

2559:                                             ; preds = %2558
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %316) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %316, ptr noundef nonnull align 8 dereferenceable(16) %311, ptr noundef @.str.142, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2560 unwind label %2568

2560:                                             ; preds = %2559
  %2561 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %316) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %315, i32 noundef 1, ptr noundef @.str.4, i32 noundef 132, ptr noundef %2561)
          to label %2562 unwind label %2572

2562:                                             ; preds = %2560
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %2563 unwind label %2576

2563:                                             ; preds = %2562
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %316) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %316) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #7
  br label %2583

2564:                                             ; preds = %2558
  %2565 = landingpad { ptr, i32 }
          cleanup
  %2566 = extractvalue { ptr, i32 } %2565, 0
  store ptr %2566, ptr %6, align 8
  %2567 = extractvalue { ptr, i32 } %2565, 1
  store i32 %2567, ptr %7, align 4
  br label %2582

2568:                                             ; preds = %2559
  %2569 = landingpad { ptr, i32 }
          cleanup
  %2570 = extractvalue { ptr, i32 } %2569, 0
  store ptr %2570, ptr %6, align 8
  %2571 = extractvalue { ptr, i32 } %2569, 1
  store i32 %2571, ptr %7, align 4
  br label %2581

2572:                                             ; preds = %2560
  %2573 = landingpad { ptr, i32 }
          cleanup
  %2574 = extractvalue { ptr, i32 } %2573, 0
  store ptr %2574, ptr %6, align 8
  %2575 = extractvalue { ptr, i32 } %2573, 1
  store i32 %2575, ptr %7, align 4
  br label %2580

2576:                                             ; preds = %2562
  %2577 = landingpad { ptr, i32 }
          cleanup
  %2578 = extractvalue { ptr, i32 } %2577, 0
  store ptr %2578, ptr %6, align 8
  %2579 = extractvalue { ptr, i32 } %2577, 1
  store i32 %2579, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %315) #7
  br label %2580

2580:                                             ; preds = %2576, %2572
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %316) #7
  br label %2581

2581:                                             ; preds = %2580, %2568
  call void @llvm.lifetime.end.p0(i64 32, ptr %316) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #7
  br label %2582

2582:                                             ; preds = %2581, %2564
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #7
  br label %2590

2583:                                             ; preds = %2563, %2552
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %311) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %311) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %317) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %318) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %319) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %319, ptr noundef @.str.143)
  %2584 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %319)
  %2585 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2584)
  %2586 = zext i1 %2585 to i8
  store i8 %2586, ptr %318, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %317, ptr noundef nonnull align 1 dereferenceable(1) %318, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %319) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #7
  %2587 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %317)
          to label %2588 unwind label %2591

2588:                                             ; preds = %2583
  br i1 %2587, label %2589, label %2595

2589:                                             ; preds = %2588
  br label %2620

2590:                                             ; preds = %2582, %2554
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %311) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %311) #7
  br label %4918

2591:                                             ; preds = %2583
  %2592 = landingpad { ptr, i32 }
          cleanup
  %2593 = extractvalue { ptr, i32 } %2592, 0
  store ptr %2593, ptr %6, align 8
  %2594 = extractvalue { ptr, i32 } %2592, 1
  store i32 %2594, ptr %7, align 4
  br label %2627

2595:                                             ; preds = %2588
  call void @llvm.lifetime.start.p0(i64 8, ptr %320) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %320)
          to label %2596 unwind label %2601

2596:                                             ; preds = %2595
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %322) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %322, ptr noundef nonnull align 8 dereferenceable(16) %317, ptr noundef @.str.144, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2597 unwind label %2605

2597:                                             ; preds = %2596
  %2598 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %322) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %321, i32 noundef 1, ptr noundef @.str.4, i32 noundef 133, ptr noundef %2598)
          to label %2599 unwind label %2609

2599:                                             ; preds = %2597
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(8) %320)
          to label %2600 unwind label %2613

2600:                                             ; preds = %2599
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %322) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #7
  br label %2620

2601:                                             ; preds = %2595
  %2602 = landingpad { ptr, i32 }
          cleanup
  %2603 = extractvalue { ptr, i32 } %2602, 0
  store ptr %2603, ptr %6, align 8
  %2604 = extractvalue { ptr, i32 } %2602, 1
  store i32 %2604, ptr %7, align 4
  br label %2619

2605:                                             ; preds = %2596
  %2606 = landingpad { ptr, i32 }
          cleanup
  %2607 = extractvalue { ptr, i32 } %2606, 0
  store ptr %2607, ptr %6, align 8
  %2608 = extractvalue { ptr, i32 } %2606, 1
  store i32 %2608, ptr %7, align 4
  br label %2618

2609:                                             ; preds = %2597
  %2610 = landingpad { ptr, i32 }
          cleanup
  %2611 = extractvalue { ptr, i32 } %2610, 0
  store ptr %2611, ptr %6, align 8
  %2612 = extractvalue { ptr, i32 } %2610, 1
  store i32 %2612, ptr %7, align 4
  br label %2617

2613:                                             ; preds = %2599
  %2614 = landingpad { ptr, i32 }
          cleanup
  %2615 = extractvalue { ptr, i32 } %2614, 0
  store ptr %2615, ptr %6, align 8
  %2616 = extractvalue { ptr, i32 } %2614, 1
  store i32 %2616, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #7
  br label %2617

2617:                                             ; preds = %2613, %2609
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #7
  br label %2618

2618:                                             ; preds = %2617, %2605
  call void @llvm.lifetime.end.p0(i64 32, ptr %322) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #7
  br label %2619

2619:                                             ; preds = %2618, %2601
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #7
  br label %2627

2620:                                             ; preds = %2600, %2589
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %317) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %317) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %323) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %324) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %325) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %325, ptr noundef @.str.145)
  %2621 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %325)
  %2622 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %2621)
  %2623 = zext i1 %2622 to i8
  store i8 %2623, ptr %324, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %323, ptr noundef nonnull align 1 dereferenceable(1) %324, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %325) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %324) #7
  %2624 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %323)
          to label %2625 unwind label %2628

2625:                                             ; preds = %2620
  br i1 %2624, label %2626, label %2632

2626:                                             ; preds = %2625
  br label %2657

2627:                                             ; preds = %2619, %2591
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %317) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %317) #7
  br label %4918

2628:                                             ; preds = %2620
  %2629 = landingpad { ptr, i32 }
          cleanup
  %2630 = extractvalue { ptr, i32 } %2629, 0
  store ptr %2630, ptr %6, align 8
  %2631 = extractvalue { ptr, i32 } %2629, 1
  store i32 %2631, ptr %7, align 4
  br label %2664

2632:                                             ; preds = %2625
  call void @llvm.lifetime.start.p0(i64 8, ptr %326) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %2633 unwind label %2638

2633:                                             ; preds = %2632
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %328) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %328, ptr noundef nonnull align 8 dereferenceable(16) %323, ptr noundef @.str.146, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2634 unwind label %2642

2634:                                             ; preds = %2633
  %2635 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %328) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %327, i32 noundef 1, ptr noundef @.str.4, i32 noundef 134, ptr noundef %2635)
          to label %2636 unwind label %2646

2636:                                             ; preds = %2634
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %2637 unwind label %2650

2637:                                             ; preds = %2636
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #7
  br label %2657

2638:                                             ; preds = %2632
  %2639 = landingpad { ptr, i32 }
          cleanup
  %2640 = extractvalue { ptr, i32 } %2639, 0
  store ptr %2640, ptr %6, align 8
  %2641 = extractvalue { ptr, i32 } %2639, 1
  store i32 %2641, ptr %7, align 4
  br label %2656

2642:                                             ; preds = %2633
  %2643 = landingpad { ptr, i32 }
          cleanup
  %2644 = extractvalue { ptr, i32 } %2643, 0
  store ptr %2644, ptr %6, align 8
  %2645 = extractvalue { ptr, i32 } %2643, 1
  store i32 %2645, ptr %7, align 4
  br label %2655

2646:                                             ; preds = %2634
  %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 %2654

2650:                                             ; preds = %2636
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #7
  br label %2654

2654:                                             ; preds = %2650, %2646
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #7
  br label %2655

2655:                                             ; preds = %2654, %2642
  call void @llvm.lifetime.end.p0(i64 32, ptr %328) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #7
  br label %2656

2656:                                             ; preds = %2655, %2638
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #7
  br label %2664

2657:                                             ; preds = %2637, %2626
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %323) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %323) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %329) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %330) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %331) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %331, ptr noundef @.str.137)
  %2658 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %331)
  %2659 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %2658)
  %2660 = zext i1 %2659 to i8
  store i8 %2660, ptr %330, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %329, ptr noundef nonnull align 1 dereferenceable(1) %330, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %331) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %330) #7
  %2661 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %329)
          to label %2662 unwind label %2665

2662:                                             ; preds = %2657
  br i1 %2661, label %2663, label %2669

2663:                                             ; preds = %2662
  br label %2694

2664:                                             ; preds = %2656, %2628
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %323) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %323) #7
  br label %4918

2665:                                             ; preds = %2657
  %2666 = landingpad { ptr, i32 }
          cleanup
  %2667 = extractvalue { ptr, i32 } %2666, 0
  store ptr %2667, ptr %6, align 8
  %2668 = extractvalue { ptr, i32 } %2666, 1
  store i32 %2668, ptr %7, align 4
  br label %2701

2669:                                             ; preds = %2662
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332)
          to label %2670 unwind label %2675

2670:                                             ; preds = %2669
  call void @llvm.lifetime.start.p0(i64 8, ptr %333) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %334) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %334, ptr noundef nonnull align 8 dereferenceable(16) %329, ptr noundef @.str.147, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2671 unwind label %2679

2671:                                             ; preds = %2670
  %2672 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %334) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %333, i32 noundef 1, ptr noundef @.str.4, i32 noundef 136, ptr noundef %2672)
          to label %2673 unwind label %2683

2673:                                             ; preds = %2671
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef nonnull align 8 dereferenceable(8) %332)
          to label %2674 unwind label %2687

2674:                                             ; preds = %2673
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %334) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %334) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #7
  br label %2694

2675:                                             ; preds = %2669
  %2676 = landingpad { ptr, i32 }
          cleanup
  %2677 = extractvalue { ptr, i32 } %2676, 0
  store ptr %2677, ptr %6, align 8
  %2678 = extractvalue { ptr, i32 } %2676, 1
  store i32 %2678, ptr %7, align 4
  br label %2693

2679:                                             ; preds = %2670
  %2680 = landingpad { ptr, i32 }
          cleanup
  %2681 = extractvalue { ptr, i32 } %2680, 0
  store ptr %2681, ptr %6, align 8
  %2682 = extractvalue { ptr, i32 } %2680, 1
  store i32 %2682, ptr %7, align 4
  br label %2692

2683:                                             ; preds = %2671
  %2684 = landingpad { ptr, i32 }
          cleanup
  %2685 = extractvalue { ptr, i32 } %2684, 0
  store ptr %2685, ptr %6, align 8
  %2686 = extractvalue { ptr, i32 } %2684, 1
  store i32 %2686, ptr %7, align 4
  br label %2691

2687:                                             ; preds = %2673
  %2688 = landingpad { ptr, i32 }
          cleanup
  %2689 = extractvalue { ptr, i32 } %2688, 0
  store ptr %2689, ptr %6, align 8
  %2690 = extractvalue { ptr, i32 } %2688, 1
  store i32 %2690, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #7
  br label %2691

2691:                                             ; preds = %2687, %2683
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %334) #7
  br label %2692

2692:                                             ; preds = %2691, %2679
  call void @llvm.lifetime.end.p0(i64 32, ptr %334) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #7
  br label %2693

2693:                                             ; preds = %2692, %2675
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #7
  br label %2701

2694:                                             ; preds = %2674, %2663
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %329) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %335) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %336) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %337) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %337, ptr noundef @.str.139)
  %2695 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %337)
  %2696 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %2695)
  %2697 = zext i1 %2696 to i8
  store i8 %2697, ptr %336, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %335, ptr noundef nonnull align 1 dereferenceable(1) %336, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %337) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %336) #7
  %2698 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %335)
          to label %2699 unwind label %2702

2699:                                             ; preds = %2694
  br i1 %2698, label %2700, label %2706

2700:                                             ; preds = %2699
  br label %2731

2701:                                             ; preds = %2693, %2665
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %329) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #7
  br label %4918

2702:                                             ; preds = %2694
  %2703 = landingpad { ptr, i32 }
          cleanup
  %2704 = extractvalue { ptr, i32 } %2703, 0
  store ptr %2704, ptr %6, align 8
  %2705 = extractvalue { ptr, i32 } %2703, 1
  store i32 %2705, ptr %7, align 4
  br label %2738

2706:                                             ; preds = %2699
  call void @llvm.lifetime.start.p0(i64 8, ptr %338) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %338)
          to label %2707 unwind label %2712

2707:                                             ; preds = %2706
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %340) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %340, ptr noundef nonnull align 8 dereferenceable(16) %335, ptr noundef @.str.148, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2708 unwind label %2716

2708:                                             ; preds = %2707
  %2709 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %340) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %339, i32 noundef 1, ptr noundef @.str.4, i32 noundef 137, ptr noundef %2709)
          to label %2710 unwind label %2720

2710:                                             ; preds = %2708
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %338)
          to label %2711 unwind label %2724

2711:                                             ; preds = %2710
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %340) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %340) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #7
  br label %2731

2712:                                             ; preds = %2706
  %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 %2730

2716:                                             ; preds = %2707
  %2717 = landingpad { ptr, i32 }
          cleanup
  %2718 = extractvalue { ptr, i32 } %2717, 0
  store ptr %2718, ptr %6, align 8
  %2719 = extractvalue { ptr, i32 } %2717, 1
  store i32 %2719, ptr %7, align 4
  br label %2729

2720:                                             ; preds = %2708
  %2721 = landingpad { ptr, i32 }
          cleanup
  %2722 = extractvalue { ptr, i32 } %2721, 0
  store ptr %2722, ptr %6, align 8
  %2723 = extractvalue { ptr, i32 } %2721, 1
  store i32 %2723, ptr %7, align 4
  br label %2728

2724:                                             ; preds = %2710
  %2725 = landingpad { ptr, i32 }
          cleanup
  %2726 = extractvalue { ptr, i32 } %2725, 0
  store ptr %2726, ptr %6, align 8
  %2727 = extractvalue { ptr, i32 } %2725, 1
  store i32 %2727, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %339) #7
  br label %2728

2728:                                             ; preds = %2724, %2720
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %340) #7
  br label %2729

2729:                                             ; preds = %2728, %2716
  call void @llvm.lifetime.end.p0(i64 32, ptr %340) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #7
  br label %2730

2730:                                             ; preds = %2729, %2712
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #7
  br label %2738

2731:                                             ; preds = %2711, %2700
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %335) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %341) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %342) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %343) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %343, ptr noundef @.str.141)
  %2732 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %343)
  %2733 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %2732)
  %2734 = zext i1 %2733 to i8
  store i8 %2734, ptr %342, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %341, ptr noundef nonnull align 1 dereferenceable(1) %342, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %343) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %342) #7
  %2735 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %341)
          to label %2736 unwind label %2739

2736:                                             ; preds = %2731
  br i1 %2735, label %2737, label %2743

2737:                                             ; preds = %2736
  br label %2768

2738:                                             ; preds = %2730, %2702
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %335) #7
  br label %4918

2739:                                             ; preds = %2731
  %2740 = landingpad { ptr, i32 }
          cleanup
  %2741 = extractvalue { ptr, i32 } %2740, 0
  store ptr %2741, ptr %6, align 8
  %2742 = extractvalue { ptr, i32 } %2740, 1
  store i32 %2742, ptr %7, align 4
  br label %2775

2743:                                             ; preds = %2736
  call void @llvm.lifetime.start.p0(i64 8, ptr %344) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %344)
          to label %2744 unwind label %2749

2744:                                             ; preds = %2743
  call void @llvm.lifetime.start.p0(i64 8, ptr %345) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %346) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %346, ptr noundef nonnull align 8 dereferenceable(16) %341, ptr noundef @.str.149, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2745 unwind label %2753

2745:                                             ; preds = %2744
  %2746 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %346) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %345, i32 noundef 1, ptr noundef @.str.4, i32 noundef 138, ptr noundef %2746)
          to label %2747 unwind label %2757

2747:                                             ; preds = %2745
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %344)
          to label %2748 unwind label %2761

2748:                                             ; preds = %2747
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %346) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %346) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #7
  br label %2768

2749:                                             ; preds = %2743
  %2750 = landingpad { ptr, i32 }
          cleanup
  %2751 = extractvalue { ptr, i32 } %2750, 0
  store ptr %2751, ptr %6, align 8
  %2752 = extractvalue { ptr, i32 } %2750, 1
  store i32 %2752, ptr %7, align 4
  br label %2767

2753:                                             ; preds = %2744
  %2754 = landingpad { ptr, i32 }
          cleanup
  %2755 = extractvalue { ptr, i32 } %2754, 0
  store ptr %2755, ptr %6, align 8
  %2756 = extractvalue { ptr, i32 } %2754, 1
  store i32 %2756, ptr %7, align 4
  br label %2766

2757:                                             ; preds = %2745
  %2758 = landingpad { ptr, i32 }
          cleanup
  %2759 = extractvalue { ptr, i32 } %2758, 0
  store ptr %2759, ptr %6, align 8
  %2760 = extractvalue { ptr, i32 } %2758, 1
  store i32 %2760, ptr %7, align 4
  br label %2765

2761:                                             ; preds = %2747
  %2762 = landingpad { ptr, i32 }
          cleanup
  %2763 = extractvalue { ptr, i32 } %2762, 0
  store ptr %2763, ptr %6, align 8
  %2764 = extractvalue { ptr, i32 } %2762, 1
  store i32 %2764, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %345) #7
  br label %2765

2765:                                             ; preds = %2761, %2757
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %346) #7
  br label %2766

2766:                                             ; preds = %2765, %2753
  call void @llvm.lifetime.end.p0(i64 32, ptr %346) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %345) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #7
  br label %2767

2767:                                             ; preds = %2766, %2749
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #7
  br label %2775

2768:                                             ; preds = %2748, %2737
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %341) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %341) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %347) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %348) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %349) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %349, ptr noundef @.str.143)
  %2769 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %349)
  %2770 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %2769)
  %2771 = zext i1 %2770 to i8
  store i8 %2771, ptr %348, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %347, ptr noundef nonnull align 1 dereferenceable(1) %348, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %349) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %348) #7
  %2772 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
          to label %2773 unwind label %2776

2773:                                             ; preds = %2768
  br i1 %2772, label %2774, label %2780

2774:                                             ; preds = %2773
  br label %2805

2775:                                             ; preds = %2767, %2739
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %341) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %341) #7
  br label %4918

2776:                                             ; preds = %2768
  %2777 = landingpad { ptr, i32 }
          cleanup
  %2778 = extractvalue { ptr, i32 } %2777, 0
  store ptr %2778, ptr %6, align 8
  %2779 = extractvalue { ptr, i32 } %2777, 1
  store i32 %2779, ptr %7, align 4
  br label %2812

2780:                                             ; preds = %2773
  call void @llvm.lifetime.start.p0(i64 8, ptr %350) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %2781 unwind label %2786

2781:                                             ; preds = %2780
  call void @llvm.lifetime.start.p0(i64 8, ptr %351) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %352) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %352, ptr noundef nonnull align 8 dereferenceable(16) %347, ptr noundef @.str.150, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2782 unwind label %2790

2782:                                             ; preds = %2781
  %2783 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %352) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %351, i32 noundef 1, ptr noundef @.str.4, i32 noundef 139, ptr noundef %2783)
          to label %2784 unwind label %2794

2784:                                             ; preds = %2782
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %2785 unwind label %2798

2785:                                             ; preds = %2784
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #7
  br label %2805

2786:                                             ; preds = %2780
  %2787 = landingpad { ptr, i32 }
          cleanup
  %2788 = extractvalue { ptr, i32 } %2787, 0
  store ptr %2788, ptr %6, align 8
  %2789 = extractvalue { ptr, i32 } %2787, 1
  store i32 %2789, ptr %7, align 4
  br label %2804

2790:                                             ; preds = %2781
  %2791 = landingpad { ptr, i32 }
          cleanup
  %2792 = extractvalue { ptr, i32 } %2791, 0
  store ptr %2792, ptr %6, align 8
  %2793 = extractvalue { ptr, i32 } %2791, 1
  store i32 %2793, ptr %7, align 4
  br label %2803

2794:                                             ; preds = %2782
  %2795 = landingpad { ptr, i32 }
          cleanup
  %2796 = extractvalue { ptr, i32 } %2795, 0
  store ptr %2796, ptr %6, align 8
  %2797 = extractvalue { ptr, i32 } %2795, 1
  store i32 %2797, ptr %7, align 4
  br label %2802

2798:                                             ; preds = %2784
  %2799 = landingpad { ptr, i32 }
          cleanup
  %2800 = extractvalue { ptr, i32 } %2799, 0
  store ptr %2800, ptr %6, align 8
  %2801 = extractvalue { ptr, i32 } %2799, 1
  store i32 %2801, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #7
  br label %2802

2802:                                             ; preds = %2798, %2794
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #7
  br label %2803

2803:                                             ; preds = %2802, %2790
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #7
  br label %2804

2804:                                             ; preds = %2803, %2786
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #7
  br label %2812

2805:                                             ; preds = %2785, %2774
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %347) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %347) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %353) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %354) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %355) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %355, ptr noundef @.str.145)
  %2806 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %355)
  %2807 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %2806)
  %2808 = zext i1 %2807 to i8
  store i8 %2808, ptr %354, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef nonnull align 1 dereferenceable(1) %354, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %355) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %354) #7
  %2809 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %353)
          to label %2810 unwind label %2813

2810:                                             ; preds = %2805
  br i1 %2809, label %2811, label %2817

2811:                                             ; preds = %2810
  br label %2842

2812:                                             ; preds = %2804, %2776
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %347) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %347) #7
  br label %4918

2813:                                             ; preds = %2805
  %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
  br label %2848

2817:                                             ; preds = %2810
  call void @llvm.lifetime.start.p0(i64 8, ptr %356) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %2818 unwind label %2823

2818:                                             ; preds = %2817
  call void @llvm.lifetime.start.p0(i64 8, ptr %357) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %358) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %358, ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef @.str.151, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2819 unwind label %2827

2819:                                             ; preds = %2818
  %2820 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %358) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %357, i32 noundef 1, ptr noundef @.str.4, i32 noundef 140, ptr noundef %2820)
          to label %2821 unwind label %2831

2821:                                             ; preds = %2819
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %2822 unwind label %2835

2822:                                             ; preds = %2821
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %357) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #7
  br label %2842

2823:                                             ; preds = %2817
  %2824 = landingpad { ptr, i32 }
          cleanup
  %2825 = extractvalue { ptr, i32 } %2824, 0
  store ptr %2825, ptr %6, align 8
  %2826 = extractvalue { ptr, i32 } %2824, 1
  store i32 %2826, ptr %7, align 4
  br label %2841

2827:                                             ; preds = %2818
  %2828 = landingpad { ptr, i32 }
          cleanup
  %2829 = extractvalue { ptr, i32 } %2828, 0
  store ptr %2829, ptr %6, align 8
  %2830 = extractvalue { ptr, i32 } %2828, 1
  store i32 %2830, ptr %7, align 4
  br label %2840

2831:                                             ; preds = %2819
  %2832 = landingpad { ptr, i32 }
          cleanup
  %2833 = extractvalue { ptr, i32 } %2832, 0
  store ptr %2833, ptr %6, align 8
  %2834 = extractvalue { ptr, i32 } %2832, 1
  store i32 %2834, ptr %7, align 4
  br label %2839

2835:                                             ; preds = %2821
  %2836 = landingpad { ptr, i32 }
          cleanup
  %2837 = extractvalue { ptr, i32 } %2836, 0
  store ptr %2837, ptr %6, align 8
  %2838 = extractvalue { ptr, i32 } %2836, 1
  store i32 %2838, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #7
  br label %2839

2839:                                             ; preds = %2835, %2831
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #7
  br label %2840

2840:                                             ; preds = %2839, %2827
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %357) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #7
  br label %2841

2841:                                             ; preds = %2840, %2823
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #7
  br label %2848

2842:                                             ; preds = %2822, %2811
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %359) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %360) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %361) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %361, ptr noundef @.str.7)
  %2843 = call noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %361)
  %2844 = zext i1 %2843 to i8
  store i8 %2844, ptr %360, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %359, ptr noundef nonnull align 1 dereferenceable(1) %360, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %361) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %360) #7
  %2845 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %359)
          to label %2846 unwind label %2849

2846:                                             ; preds = %2842
  br i1 %2845, label %2847, label %2853

2847:                                             ; preds = %2846
  br label %2878

2848:                                             ; preds = %2841, %2813
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #7
  br label %4918

2849:                                             ; preds = %2842
  %2850 = landingpad { ptr, i32 }
          cleanup
  %2851 = extractvalue { ptr, i32 } %2850, 0
  store ptr %2851, ptr %6, align 8
  %2852 = extractvalue { ptr, i32 } %2850, 1
  store i32 %2852, ptr %7, align 4
  br label %2885

2853:                                             ; preds = %2846
  call void @llvm.lifetime.start.p0(i64 8, ptr %362) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %2854 unwind label %2859

2854:                                             ; preds = %2853
  call void @llvm.lifetime.start.p0(i64 8, ptr %363) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %364) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %364, ptr noundef nonnull align 8 dereferenceable(16) %359, ptr noundef @.str.152, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2855 unwind label %2863

2855:                                             ; preds = %2854
  %2856 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %364) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %363, i32 noundef 1, ptr noundef @.str.4, i32 noundef 142, ptr noundef %2856)
          to label %2857 unwind label %2867

2857:                                             ; preds = %2855
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %2858 unwind label %2871

2858:                                             ; preds = %2857
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %364) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %364) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %362) #7
  br label %2878

2859:                                             ; preds = %2853
  %2860 = landingpad { ptr, i32 }
          cleanup
  %2861 = extractvalue { ptr, i32 } %2860, 0
  store ptr %2861, ptr %6, align 8
  %2862 = extractvalue { ptr, i32 } %2860, 1
  store i32 %2862, ptr %7, align 4
  br label %2877

2863:                                             ; preds = %2854
  %2864 = landingpad { ptr, i32 }
          cleanup
  %2865 = extractvalue { ptr, i32 } %2864, 0
  store ptr %2865, ptr %6, align 8
  %2866 = extractvalue { ptr, i32 } %2864, 1
  store i32 %2866, ptr %7, align 4
  br label %2876

2867:                                             ; preds = %2855
  %2868 = landingpad { ptr, i32 }
          cleanup
  %2869 = extractvalue { ptr, i32 } %2868, 0
  store ptr %2869, ptr %6, align 8
  %2870 = extractvalue { ptr, i32 } %2868, 1
  store i32 %2870, ptr %7, align 4
  br label %2875

2871:                                             ; preds = %2857
  %2872 = landingpad { ptr, i32 }
          cleanup
  %2873 = extractvalue { ptr, i32 } %2872, 0
  store ptr %2873, ptr %6, align 8
  %2874 = extractvalue { ptr, i32 } %2872, 1
  store i32 %2874, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #7
  br label %2875

2875:                                             ; preds = %2871, %2867
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %364) #7
  br label %2876

2876:                                             ; preds = %2875, %2863
  call void @llvm.lifetime.end.p0(i64 32, ptr %364) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #7
  br label %2877

2877:                                             ; preds = %2876, %2859
  call void @llvm.lifetime.end.p0(i64 8, ptr %362) #7
  br label %2885

2878:                                             ; preds = %2858, %2847
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %359) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %359) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %365) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %366) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %367) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %367, ptr noundef @.str.58)
  %2879 = call noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %367)
  %2880 = xor i1 %2879, true
  %2881 = zext i1 %2880 to i8
  store i8 %2881, ptr %366, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %365, ptr noundef nonnull align 1 dereferenceable(1) %366, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %367) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %366) #7
  %2882 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %365)
          to label %2883 unwind label %2886

2883:                                             ; preds = %2878
  br i1 %2882, label %2884, label %2890

2884:                                             ; preds = %2883
  br label %2915

2885:                                             ; preds = %2877, %2849
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %359) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %359) #7
  br label %4918

2886:                                             ; preds = %2878
  %2887 = landingpad { ptr, i32 }
          cleanup
  %2888 = extractvalue { ptr, i32 } %2887, 0
  store ptr %2888, ptr %6, align 8
  %2889 = extractvalue { ptr, i32 } %2887, 1
  store i32 %2889, ptr %7, align 4
  br label %2922

2890:                                             ; preds = %2883
  call void @llvm.lifetime.start.p0(i64 8, ptr %368) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %2891 unwind label %2896

2891:                                             ; preds = %2890
  call void @llvm.lifetime.start.p0(i64 8, ptr %369) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %370) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %370, ptr noundef nonnull align 8 dereferenceable(16) %365, ptr noundef @.str.153, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %2892 unwind label %2900

2892:                                             ; preds = %2891
  %2893 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %370) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %369, i32 noundef 1, ptr noundef @.str.4, i32 noundef 143, ptr noundef %2893)
          to label %2894 unwind label %2904

2894:                                             ; preds = %2892
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %2895 unwind label %2908

2895:                                             ; preds = %2894
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %370) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %370) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #7
  br label %2915

2896:                                             ; preds = %2890
  %2897 = landingpad { ptr, i32 }
          cleanup
  %2898 = extractvalue { ptr, i32 } %2897, 0
  store ptr %2898, ptr %6, align 8
  %2899 = extractvalue { ptr, i32 } %2897, 1
  store i32 %2899, ptr %7, align 4
  br label %2914

2900:                                             ; preds = %2891
  %2901 = landingpad { ptr, i32 }
          cleanup
  %2902 = extractvalue { ptr, i32 } %2901, 0
  store ptr %2902, ptr %6, align 8
  %2903 = extractvalue { ptr, i32 } %2901, 1
  store i32 %2903, ptr %7, align 4
  br label %2913

2904:                                             ; preds = %2892
  %2905 = landingpad { ptr, i32 }
          cleanup
  %2906 = extractvalue { ptr, i32 } %2905, 0
  store ptr %2906, ptr %6, align 8
  %2907 = extractvalue { ptr, i32 } %2905, 1
  store i32 %2907, ptr %7, align 4
  br label %2912

2908:                                             ; preds = %2894
  %2909 = landingpad { ptr, i32 }
          cleanup
  %2910 = extractvalue { ptr, i32 } %2909, 0
  store ptr %2910, ptr %6, align 8
  %2911 = extractvalue { ptr, i32 } %2909, 1
  store i32 %2911, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %369) #7
  br label %2912

2912:                                             ; preds = %2908, %2904
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %370) #7
  br label %2913

2913:                                             ; preds = %2912, %2900
  call void @llvm.lifetime.end.p0(i64 32, ptr %370) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #7
  br label %2914

2914:                                             ; preds = %2913, %2896
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #7
  br label %2922

2915:                                             ; preds = %2895, %2884
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %365) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %371) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %372) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %373) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %373, ptr noundef @.str.121)
  %2916 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %373)
  %2917 = call noundef zeroext i1 @_ZNK4chen11ip_version411isLinkLocalEv(ptr noundef nonnull align 4 dereferenceable(8) %2916)
  %2918 = zext i1 %2917 to i8
  store i8 %2918, ptr %372, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %371, ptr noundef nonnull align 1 dereferenceable(1) %372, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %373) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %372) #7
  %2919 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %371)
          to label %2920 unwind label %2923

2920:                                             ; preds = %2915
  br i1 %2919, label %2921, label %2927

2921:                                             ; preds = %2920
  br label %2952

2922:                                             ; preds = %2914, %2886
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %365) #7
  br label %4918

2923:                                             ; preds = %2915
  %2924 = landingpad { ptr, i32 }
          cleanup
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %6, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %7, align 4
  br label %2958

2927:                                             ; preds = %2920
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %2928 unwind label %2933

2928:                                             ; preds = %2927
  call void @llvm.lifetime.start.p0(i64 8, ptr %375) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %376) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %376, ptr noundef nonnull align 8 dereferenceable(16) %371, ptr noundef @.str.154, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2929 unwind label %2937

2929:                                             ; preds = %2928
  %2930 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %376) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %375, i32 noundef 1, ptr noundef @.str.4, i32 noundef 145, ptr noundef %2930)
          to label %2931 unwind label %2941

2931:                                             ; preds = %2929
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %2932 unwind label %2945

2932:                                             ; preds = %2931
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %376) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #7
  br label %2952

2933:                                             ; preds = %2927
  %2934 = landingpad { ptr, i32 }
          cleanup
  %2935 = extractvalue { ptr, i32 } %2934, 0
  store ptr %2935, ptr %6, align 8
  %2936 = extractvalue { ptr, i32 } %2934, 1
  store i32 %2936, ptr %7, align 4
  br label %2951

2937:                                             ; preds = %2928
  %2938 = landingpad { ptr, i32 }
          cleanup
  %2939 = extractvalue { ptr, i32 } %2938, 0
  store ptr %2939, ptr %6, align 8
  %2940 = extractvalue { ptr, i32 } %2938, 1
  store i32 %2940, ptr %7, align 4
  br label %2950

2941:                                             ; preds = %2929
  %2942 = landingpad { ptr, i32 }
          cleanup
  %2943 = extractvalue { ptr, i32 } %2942, 0
  store ptr %2943, ptr %6, align 8
  %2944 = extractvalue { ptr, i32 } %2942, 1
  store i32 %2944, ptr %7, align 4
  br label %2949

2945:                                             ; preds = %2931
  %2946 = landingpad { ptr, i32 }
          cleanup
  %2947 = extractvalue { ptr, i32 } %2946, 0
  store ptr %2947, ptr %6, align 8
  %2948 = extractvalue { ptr, i32 } %2946, 1
  store i32 %2948, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %375) #7
  br label %2949

2949:                                             ; preds = %2945, %2941
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #7
  br label %2950

2950:                                             ; preds = %2949, %2937
  call void @llvm.lifetime.end.p0(i64 32, ptr %376) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #7
  br label %2951

2951:                                             ; preds = %2950, %2933
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #7
  br label %2958

2952:                                             ; preds = %2932, %2921
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %371) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %371) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %377) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %378) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %379) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %379, ptr noundef @.str.155)
  %2953 = call noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %379)
  %2954 = zext i1 %2953 to i8
  store i8 %2954, ptr %378, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %377, ptr noundef nonnull align 1 dereferenceable(1) %378, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %379) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %378) #7
  %2955 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %377)
          to label %2956 unwind label %2959

2956:                                             ; preds = %2952
  br i1 %2955, label %2957, label %2963

2957:                                             ; preds = %2956
  br label %2988

2958:                                             ; preds = %2951, %2923
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %371) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %371) #7
  br label %4918

2959:                                             ; preds = %2952
  %2960 = landingpad { ptr, i32 }
          cleanup
  %2961 = extractvalue { ptr, i32 } %2960, 0
  store ptr %2961, ptr %6, align 8
  %2962 = extractvalue { ptr, i32 } %2960, 1
  store i32 %2962, ptr %7, align 4
  br label %2995

2963:                                             ; preds = %2956
  call void @llvm.lifetime.start.p0(i64 8, ptr %380) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %2964 unwind label %2969

2964:                                             ; preds = %2963
  call void @llvm.lifetime.start.p0(i64 8, ptr %381) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %382) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %382, ptr noundef nonnull align 8 dereferenceable(16) %377, ptr noundef @.str.156, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %2965 unwind label %2973

2965:                                             ; preds = %2964
  %2966 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %382) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %381, i32 noundef 1, ptr noundef @.str.4, i32 noundef 147, ptr noundef %2966)
          to label %2967 unwind label %2977

2967:                                             ; preds = %2965
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %2968 unwind label %2981

2968:                                             ; preds = %2967
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #7
  br label %2988

2969:                                             ; preds = %2963
  %2970 = landingpad { ptr, i32 }
          cleanup
  %2971 = extractvalue { ptr, i32 } %2970, 0
  store ptr %2971, ptr %6, align 8
  %2972 = extractvalue { ptr, i32 } %2970, 1
  store i32 %2972, ptr %7, align 4
  br label %2987

2973:                                             ; preds = %2964
  %2974 = landingpad { ptr, i32 }
          cleanup
  %2975 = extractvalue { ptr, i32 } %2974, 0
  store ptr %2975, ptr %6, align 8
  %2976 = extractvalue { ptr, i32 } %2974, 1
  store i32 %2976, ptr %7, align 4
  br label %2986

2977:                                             ; preds = %2965
  %2978 = landingpad { ptr, i32 }
          cleanup
  %2979 = extractvalue { ptr, i32 } %2978, 0
  store ptr %2979, ptr %6, align 8
  %2980 = extractvalue { ptr, i32 } %2978, 1
  store i32 %2980, ptr %7, align 4
  br label %2985

2981:                                             ; preds = %2967
  %2982 = landingpad { ptr, i32 }
          cleanup
  %2983 = extractvalue { ptr, i32 } %2982, 0
  store ptr %2983, ptr %6, align 8
  %2984 = extractvalue { ptr, i32 } %2982, 1
  store i32 %2984, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #7
  br label %2985

2985:                                             ; preds = %2981, %2977
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #7
  br label %2986

2986:                                             ; preds = %2985, %2973
  call void @llvm.lifetime.end.p0(i64 32, ptr %382) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #7
  br label %2987

2987:                                             ; preds = %2986, %2969
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #7
  br label %2995

2988:                                             ; preds = %2968, %2957
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %377) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %377) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %383) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %384) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %385) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %385, ptr noundef @.str.157)
  %2989 = call noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %385)
  %2990 = xor i1 %2989, true
  %2991 = zext i1 %2990 to i8
  store i8 %2991, ptr %384, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %383, ptr noundef nonnull align 1 dereferenceable(1) %384, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %385) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %384) #7
  %2992 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %383)
          to label %2993 unwind label %2996

2993:                                             ; preds = %2988
  br i1 %2992, label %2994, label %3000

2994:                                             ; preds = %2993
  br label %3025

2995:                                             ; preds = %2987, %2959
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %377) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %377) #7
  br label %4918

2996:                                             ; preds = %2988
  %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 %3032

3000:                                             ; preds = %2993
  call void @llvm.lifetime.start.p0(i64 8, ptr %386) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %3001 unwind label %3006

3001:                                             ; preds = %3000
  call void @llvm.lifetime.start.p0(i64 8, ptr %387) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %388) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %388, ptr noundef nonnull align 8 dereferenceable(16) %383, ptr noundef @.str.158, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3002 unwind label %3010

3002:                                             ; preds = %3001
  %3003 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %388) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %387, i32 noundef 1, ptr noundef @.str.4, i32 noundef 148, ptr noundef %3003)
          to label %3004 unwind label %3014

3004:                                             ; preds = %3002
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %3005 unwind label %3018

3005:                                             ; preds = %3004
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #7
  br label %3025

3006:                                             ; preds = %3000
  %3007 = landingpad { ptr, i32 }
          cleanup
  %3008 = extractvalue { ptr, i32 } %3007, 0
  store ptr %3008, ptr %6, align 8
  %3009 = extractvalue { ptr, i32 } %3007, 1
  store i32 %3009, ptr %7, align 4
  br label %3024

3010:                                             ; preds = %3001
  %3011 = landingpad { ptr, i32 }
          cleanup
  %3012 = extractvalue { ptr, i32 } %3011, 0
  store ptr %3012, ptr %6, align 8
  %3013 = extractvalue { ptr, i32 } %3011, 1
  store i32 %3013, ptr %7, align 4
  br label %3023

3014:                                             ; preds = %3002
  %3015 = landingpad { ptr, i32 }
          cleanup
  %3016 = extractvalue { ptr, i32 } %3015, 0
  store ptr %3016, ptr %6, align 8
  %3017 = extractvalue { ptr, i32 } %3015, 1
  store i32 %3017, ptr %7, align 4
  br label %3022

3018:                                             ; preds = %3004
  %3019 = landingpad { ptr, i32 }
          cleanup
  %3020 = extractvalue { ptr, i32 } %3019, 0
  store ptr %3020, ptr %6, align 8
  %3021 = extractvalue { ptr, i32 } %3019, 1
  store i32 %3021, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %387) #7
  br label %3022

3022:                                             ; preds = %3018, %3014
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %388) #7
  br label %3023

3023:                                             ; preds = %3022, %3010
  call void @llvm.lifetime.end.p0(i64 32, ptr %388) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #7
  br label %3024

3024:                                             ; preds = %3023, %3006
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #7
  br label %3032

3025:                                             ; preds = %3005, %2994
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %383) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %383) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %389) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %390) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %391) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %391, ptr noundef @.str.159)
  %3026 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %391)
  %3027 = call noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %3026)
  %3028 = zext i1 %3027 to i8
  store i8 %3028, ptr %390, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %389, ptr noundef nonnull align 1 dereferenceable(1) %390, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %391) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %390) #7
  %3029 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %389)
          to label %3030 unwind label %3033

3030:                                             ; preds = %3025
  br i1 %3029, label %3031, label %3037

3031:                                             ; preds = %3030
  br label %3062

3032:                                             ; preds = %3024, %2996
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %383) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %383) #7
  br label %4918

3033:                                             ; preds = %3025
  %3034 = landingpad { ptr, i32 }
          cleanup
  %3035 = extractvalue { ptr, i32 } %3034, 0
  store ptr %3035, ptr %6, align 8
  %3036 = extractvalue { ptr, i32 } %3034, 1
  store i32 %3036, ptr %7, align 4
  br label %3070

3037:                                             ; preds = %3030
  call void @llvm.lifetime.start.p0(i64 8, ptr %392) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %392)
          to label %3038 unwind label %3043

3038:                                             ; preds = %3037
  call void @llvm.lifetime.start.p0(i64 8, ptr %393) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %394) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %394, ptr noundef nonnull align 8 dereferenceable(16) %389, ptr noundef @.str.160, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3039 unwind label %3047

3039:                                             ; preds = %3038
  %3040 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %394) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %393, i32 noundef 1, ptr noundef @.str.4, i32 noundef 150, ptr noundef %3040)
          to label %3041 unwind label %3051

3041:                                             ; preds = %3039
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %393, ptr noundef nonnull align 8 dereferenceable(8) %392)
          to label %3042 unwind label %3055

3042:                                             ; preds = %3041
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %394) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %393) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #7
  br label %3062

3043:                                             ; preds = %3037
  %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
  br label %3061

3047:                                             ; preds = %3038
  %3048 = landingpad { ptr, i32 }
          cleanup
  %3049 = extractvalue { ptr, i32 } %3048, 0
  store ptr %3049, ptr %6, align 8
  %3050 = extractvalue { ptr, i32 } %3048, 1
  store i32 %3050, ptr %7, align 4
  br label %3060

3051:                                             ; preds = %3039
  %3052 = landingpad { ptr, i32 }
          cleanup
  %3053 = extractvalue { ptr, i32 } %3052, 0
  store ptr %3053, ptr %6, align 8
  %3054 = extractvalue { ptr, i32 } %3052, 1
  store i32 %3054, ptr %7, align 4
  br label %3059

3055:                                             ; preds = %3041
  %3056 = landingpad { ptr, i32 }
          cleanup
  %3057 = extractvalue { ptr, i32 } %3056, 0
  store ptr %3057, ptr %6, align 8
  %3058 = extractvalue { ptr, i32 } %3056, 1
  store i32 %3058, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %393) #7
  br label %3059

3059:                                             ; preds = %3055, %3051
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #7
  br label %3060

3060:                                             ; preds = %3059, %3047
  call void @llvm.lifetime.end.p0(i64 32, ptr %394) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %393) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #7
  br label %3061

3061:                                             ; preds = %3060, %3043
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #7
  br label %3070

3062:                                             ; preds = %3042, %3031
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %389) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %389) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %395) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %396) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %397) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %397, ptr noundef @.str.97)
  %3063 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %397)
  %3064 = call noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %3063)
  %3065 = xor i1 %3064, true
  %3066 = zext i1 %3065 to i8
  store i8 %3066, ptr %396, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull align 1 dereferenceable(1) %396, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %397) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %396) #7
  %3067 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %395)
          to label %3068 unwind label %3071

3068:                                             ; preds = %3062
  br i1 %3067, label %3069, label %3075

3069:                                             ; preds = %3068
  br label %3100

3070:                                             ; preds = %3061, %3033
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %389) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %389) #7
  br label %4918

3071:                                             ; preds = %3062
  %3072 = landingpad { ptr, i32 }
          cleanup
  %3073 = extractvalue { ptr, i32 } %3072, 0
  store ptr %3073, ptr %6, align 8
  %3074 = extractvalue { ptr, i32 } %3072, 1
  store i32 %3074, ptr %7, align 4
  br label %3107

3075:                                             ; preds = %3068
  call void @llvm.lifetime.start.p0(i64 8, ptr %398) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %3076 unwind label %3081

3076:                                             ; preds = %3075
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %400) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %400, ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef @.str.161, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3077 unwind label %3085

3077:                                             ; preds = %3076
  %3078 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %400) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %399, i32 noundef 1, ptr noundef @.str.4, i32 noundef 151, ptr noundef %3078)
          to label %3079 unwind label %3089

3079:                                             ; preds = %3077
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %3080 unwind label %3093

3080:                                             ; preds = %3079
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %399) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %400) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #7
  br label %3100

3081:                                             ; preds = %3075
  %3082 = landingpad { ptr, i32 }
          cleanup
  %3083 = extractvalue { ptr, i32 } %3082, 0
  store ptr %3083, ptr %6, align 8
  %3084 = extractvalue { ptr, i32 } %3082, 1
  store i32 %3084, ptr %7, align 4
  br label %3099

3085:                                             ; preds = %3076
  %3086 = landingpad { ptr, i32 }
          cleanup
  %3087 = extractvalue { ptr, i32 } %3086, 0
  store ptr %3087, ptr %6, align 8
  %3088 = extractvalue { ptr, i32 } %3086, 1
  store i32 %3088, ptr %7, align 4
  br label %3098

3089:                                             ; preds = %3077
  %3090 = landingpad { ptr, i32 }
          cleanup
  %3091 = extractvalue { ptr, i32 } %3090, 0
  store ptr %3091, ptr %6, align 8
  %3092 = extractvalue { ptr, i32 } %3090, 1
  store i32 %3092, ptr %7, align 4
  br label %3097

3093:                                             ; preds = %3079
  %3094 = landingpad { ptr, i32 }
          cleanup
  %3095 = extractvalue { ptr, i32 } %3094, 0
  store ptr %3095, ptr %6, align 8
  %3096 = extractvalue { ptr, i32 } %3094, 1
  store i32 %3096, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %399) #7
  br label %3097

3097:                                             ; preds = %3093, %3089
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #7
  br label %3098

3098:                                             ; preds = %3097, %3085
  call void @llvm.lifetime.end.p0(i64 32, ptr %400) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #7
  br label %3099

3099:                                             ; preds = %3098, %3081
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #7
  br label %3107

3100:                                             ; preds = %3080, %3069
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %395) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %395) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %401) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %402) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %403) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %403, ptr noundef @.str.43)
  %3101 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %403)
  %3102 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3101)
  %3103 = zext i1 %3102 to i8
  store i8 %3103, ptr %402, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %401, ptr noundef nonnull align 1 dereferenceable(1) %402, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %403) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %402) #7
  %3104 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %401)
          to label %3105 unwind label %3108

3105:                                             ; preds = %3100
  br i1 %3104, label %3106, label %3112

3106:                                             ; preds = %3105
  br label %3137

3107:                                             ; preds = %3099, %3071
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %395) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %395) #7
  br label %4918

3108:                                             ; preds = %3100
  %3109 = landingpad { ptr, i32 }
          cleanup
  %3110 = extractvalue { ptr, i32 } %3109, 0
  store ptr %3110, ptr %6, align 8
  %3111 = extractvalue { ptr, i32 } %3109, 1
  store i32 %3111, ptr %7, align 4
  br label %3145

3112:                                             ; preds = %3105
  call void @llvm.lifetime.start.p0(i64 8, ptr %404) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %404)
          to label %3113 unwind label %3118

3113:                                             ; preds = %3112
  call void @llvm.lifetime.start.p0(i64 8, ptr %405) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %406) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %406, ptr noundef nonnull align 8 dereferenceable(16) %401, ptr noundef @.str.162, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3114 unwind label %3122

3114:                                             ; preds = %3113
  %3115 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %406) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %405, i32 noundef 1, ptr noundef @.str.4, i32 noundef 154, ptr noundef %3115)
          to label %3116 unwind label %3126

3116:                                             ; preds = %3114
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 8 dereferenceable(8) %404)
          to label %3117 unwind label %3130

3117:                                             ; preds = %3116
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %406) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #7
  br label %3137

3118:                                             ; preds = %3112
  %3119 = landingpad { ptr, i32 }
          cleanup
  %3120 = extractvalue { ptr, i32 } %3119, 0
  store ptr %3120, ptr %6, align 8
  %3121 = extractvalue { ptr, i32 } %3119, 1
  store i32 %3121, ptr %7, align 4
  br label %3136

3122:                                             ; preds = %3113
  %3123 = landingpad { ptr, i32 }
          cleanup
  %3124 = extractvalue { ptr, i32 } %3123, 0
  store ptr %3124, ptr %6, align 8
  %3125 = extractvalue { ptr, i32 } %3123, 1
  store i32 %3125, ptr %7, align 4
  br label %3135

3126:                                             ; preds = %3114
  %3127 = landingpad { ptr, i32 }
          cleanup
  %3128 = extractvalue { ptr, i32 } %3127, 0
  store ptr %3128, ptr %6, align 8
  %3129 = extractvalue { ptr, i32 } %3127, 1
  store i32 %3129, ptr %7, align 4
  br label %3134

3130:                                             ; preds = %3116
  %3131 = landingpad { ptr, i32 }
          cleanup
  %3132 = extractvalue { ptr, i32 } %3131, 0
  store ptr %3132, ptr %6, align 8
  %3133 = extractvalue { ptr, i32 } %3131, 1
  store i32 %3133, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #7
  br label %3134

3134:                                             ; preds = %3130, %3126
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #7
  br label %3135

3135:                                             ; preds = %3134, %3122
  call void @llvm.lifetime.end.p0(i64 32, ptr %406) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %404) #7
  br label %3136

3136:                                             ; preds = %3135, %3118
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #7
  br label %3145

3137:                                             ; preds = %3117, %3106
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %401) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %401) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %407) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %408) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %409) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %409, ptr noundef @.str.43)
  %3138 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %409)
  %3139 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3138)
  %3140 = xor i1 %3139, true
  %3141 = zext i1 %3140 to i8
  store i8 %3141, ptr %408, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %407, ptr noundef nonnull align 1 dereferenceable(1) %408, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %409) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %408) #7
  %3142 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %407)
          to label %3143 unwind label %3146

3143:                                             ; preds = %3137
  br i1 %3142, label %3144, label %3150

3144:                                             ; preds = %3143
  br label %3175

3145:                                             ; preds = %3136, %3108
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %401) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %401) #7
  br label %4918

3146:                                             ; preds = %3137
  %3147 = landingpad { ptr, i32 }
          cleanup
  %3148 = extractvalue { ptr, i32 } %3147, 0
  store ptr %3148, ptr %6, align 8
  %3149 = extractvalue { ptr, i32 } %3147, 1
  store i32 %3149, ptr %7, align 4
  br label %3183

3150:                                             ; preds = %3143
  call void @llvm.lifetime.start.p0(i64 8, ptr %410) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410)
          to label %3151 unwind label %3156

3151:                                             ; preds = %3150
  call void @llvm.lifetime.start.p0(i64 8, ptr %411) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %412) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %412, ptr noundef nonnull align 8 dereferenceable(16) %407, ptr noundef @.str.163, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3152 unwind label %3160

3152:                                             ; preds = %3151
  %3153 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %412) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %411, i32 noundef 1, ptr noundef @.str.4, i32 noundef 155, ptr noundef %3153)
          to label %3154 unwind label %3164

3154:                                             ; preds = %3152
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %411, ptr noundef nonnull align 8 dereferenceable(8) %410)
          to label %3155 unwind label %3168

3155:                                             ; preds = %3154
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %412) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #7
  br label %3175

3156:                                             ; preds = %3150
  %3157 = landingpad { ptr, i32 }
          cleanup
  %3158 = extractvalue { ptr, i32 } %3157, 0
  store ptr %3158, ptr %6, align 8
  %3159 = extractvalue { ptr, i32 } %3157, 1
  store i32 %3159, ptr %7, align 4
  br label %3174

3160:                                             ; preds = %3151
  %3161 = landingpad { ptr, i32 }
          cleanup
  %3162 = extractvalue { ptr, i32 } %3161, 0
  store ptr %3162, ptr %6, align 8
  %3163 = extractvalue { ptr, i32 } %3161, 1
  store i32 %3163, ptr %7, align 4
  br label %3173

3164:                                             ; preds = %3152
  %3165 = landingpad { ptr, i32 }
          cleanup
  %3166 = extractvalue { ptr, i32 } %3165, 0
  store ptr %3166, ptr %6, align 8
  %3167 = extractvalue { ptr, i32 } %3165, 1
  store i32 %3167, ptr %7, align 4
  br label %3172

3168:                                             ; preds = %3154
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #7
  br label %3172

3172:                                             ; preds = %3168, %3164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #7
  br label %3173

3173:                                             ; preds = %3172, %3160
  call void @llvm.lifetime.end.p0(i64 32, ptr %412) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #7
  br label %3174

3174:                                             ; preds = %3173, %3156
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #7
  br label %3183

3175:                                             ; preds = %3155, %3144
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %407) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %407) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %413) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %414) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %415) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %415, ptr noundef @.str.43)
  %3176 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %415)
  %3177 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3176)
  %3178 = xor i1 %3177, true
  %3179 = zext i1 %3178 to i8
  store i8 %3179, ptr %414, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %413, ptr noundef nonnull align 1 dereferenceable(1) %414, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %415) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %414) #7
  %3180 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %413)
          to label %3181 unwind label %3184

3181:                                             ; preds = %3175
  br i1 %3180, label %3182, label %3188

3182:                                             ; preds = %3181
  br label %3213

3183:                                             ; preds = %3174, %3146
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %407) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %407) #7
  br label %4918

3184:                                             ; preds = %3175
  %3185 = landingpad { ptr, i32 }
          cleanup
  %3186 = extractvalue { ptr, i32 } %3185, 0
  store ptr %3186, ptr %6, align 8
  %3187 = extractvalue { ptr, i32 } %3185, 1
  store i32 %3187, ptr %7, align 4
  br label %3220

3188:                                             ; preds = %3181
  call void @llvm.lifetime.start.p0(i64 8, ptr %416) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %416)
          to label %3189 unwind label %3194

3189:                                             ; preds = %3188
  call void @llvm.lifetime.start.p0(i64 8, ptr %417) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %418) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %418, ptr noundef nonnull align 8 dereferenceable(16) %413, ptr noundef @.str.164, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3190 unwind label %3198

3190:                                             ; preds = %3189
  %3191 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %418) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %417, i32 noundef 1, ptr noundef @.str.4, i32 noundef 156, ptr noundef %3191)
          to label %3192 unwind label %3202

3192:                                             ; preds = %3190
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef nonnull align 8 dereferenceable(8) %416)
          to label %3193 unwind label %3206

3193:                                             ; preds = %3192
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %418) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %418) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #7
  br label %3213

3194:                                             ; preds = %3188
  %3195 = landingpad { ptr, i32 }
          cleanup
  %3196 = extractvalue { ptr, i32 } %3195, 0
  store ptr %3196, ptr %6, align 8
  %3197 = extractvalue { ptr, i32 } %3195, 1
  store i32 %3197, ptr %7, align 4
  br label %3212

3198:                                             ; preds = %3189
  %3199 = landingpad { ptr, i32 }
          cleanup
  %3200 = extractvalue { ptr, i32 } %3199, 0
  store ptr %3200, ptr %6, align 8
  %3201 = extractvalue { ptr, i32 } %3199, 1
  store i32 %3201, ptr %7, align 4
  br label %3211

3202:                                             ; preds = %3190
  %3203 = landingpad { ptr, i32 }
          cleanup
  %3204 = extractvalue { ptr, i32 } %3203, 0
  store ptr %3204, ptr %6, align 8
  %3205 = extractvalue { ptr, i32 } %3203, 1
  store i32 %3205, ptr %7, align 4
  br label %3210

3206:                                             ; preds = %3192
  %3207 = landingpad { ptr, i32 }
          cleanup
  %3208 = extractvalue { ptr, i32 } %3207, 0
  store ptr %3208, ptr %6, align 8
  %3209 = extractvalue { ptr, i32 } %3207, 1
  store i32 %3209, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #7
  br label %3210

3210:                                             ; preds = %3206, %3202
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %418) #7
  br label %3211

3211:                                             ; preds = %3210, %3198
  call void @llvm.lifetime.end.p0(i64 32, ptr %418) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #7
  br label %3212

3212:                                             ; preds = %3211, %3194
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #7
  br label %3220

3213:                                             ; preds = %3193, %3182
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %413) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %413) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %419) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %420) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %421) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %421, ptr noundef @.str.137)
  %3214 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %421)
  %3215 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3214)
  %3216 = zext i1 %3215 to i8
  store i8 %3216, ptr %420, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %419, ptr noundef nonnull align 1 dereferenceable(1) %420, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %421) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %420) #7
  %3217 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %419)
          to label %3218 unwind label %3221

3218:                                             ; preds = %3213
  br i1 %3217, label %3219, label %3225

3219:                                             ; preds = %3218
  br label %3250

3220:                                             ; preds = %3212, %3184
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %413) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %413) #7
  br label %4918

3221:                                             ; preds = %3213
  %3222 = landingpad { ptr, i32 }
          cleanup
  %3223 = extractvalue { ptr, i32 } %3222, 0
  store ptr %3223, ptr %6, align 8
  %3224 = extractvalue { ptr, i32 } %3222, 1
  store i32 %3224, ptr %7, align 4
  br label %3258

3225:                                             ; preds = %3218
  call void @llvm.lifetime.start.p0(i64 8, ptr %422) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %422)
          to label %3226 unwind label %3231

3226:                                             ; preds = %3225
  call void @llvm.lifetime.start.p0(i64 8, ptr %423) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %424) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %424, ptr noundef nonnull align 8 dereferenceable(16) %419, ptr noundef @.str.165, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3227 unwind label %3235

3227:                                             ; preds = %3226
  %3228 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %424) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %423, i32 noundef 1, ptr noundef @.str.4, i32 noundef 158, ptr noundef %3228)
          to label %3229 unwind label %3239

3229:                                             ; preds = %3227
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull align 8 dereferenceable(8) %422)
          to label %3230 unwind label %3243

3230:                                             ; preds = %3229
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %423) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %424) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %424) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %423) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %422) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %422) #7
  br label %3250

3231:                                             ; preds = %3225
  %3232 = landingpad { ptr, i32 }
          cleanup
  %3233 = extractvalue { ptr, i32 } %3232, 0
  store ptr %3233, ptr %6, align 8
  %3234 = extractvalue { ptr, i32 } %3232, 1
  store i32 %3234, ptr %7, align 4
  br label %3249

3235:                                             ; preds = %3226
  %3236 = landingpad { ptr, i32 }
          cleanup
  %3237 = extractvalue { ptr, i32 } %3236, 0
  store ptr %3237, ptr %6, align 8
  %3238 = extractvalue { ptr, i32 } %3236, 1
  store i32 %3238, ptr %7, align 4
  br label %3248

3239:                                             ; preds = %3227
  %3240 = landingpad { ptr, i32 }
          cleanup
  %3241 = extractvalue { ptr, i32 } %3240, 0
  store ptr %3241, ptr %6, align 8
  %3242 = extractvalue { ptr, i32 } %3240, 1
  store i32 %3242, ptr %7, align 4
  br label %3247

3243:                                             ; preds = %3229
  %3244 = landingpad { ptr, i32 }
          cleanup
  %3245 = extractvalue { ptr, i32 } %3244, 0
  store ptr %3245, ptr %6, align 8
  %3246 = extractvalue { ptr, i32 } %3244, 1
  store i32 %3246, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %423) #7
  br label %3247

3247:                                             ; preds = %3243, %3239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %424) #7
  br label %3248

3248:                                             ; preds = %3247, %3235
  call void @llvm.lifetime.end.p0(i64 32, ptr %424) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %423) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %422) #7
  br label %3249

3249:                                             ; preds = %3248, %3231
  call void @llvm.lifetime.end.p0(i64 8, ptr %422) #7
  br label %3258

3250:                                             ; preds = %3230, %3219
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %419) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %419) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %425) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %426) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %427) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %427, ptr noundef @.str.137)
  %3251 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %427)
  %3252 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3251)
  %3253 = xor i1 %3252, true
  %3254 = zext i1 %3253 to i8
  store i8 %3254, ptr %426, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %425, ptr noundef nonnull align 1 dereferenceable(1) %426, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %427) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %426) #7
  %3255 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %425)
          to label %3256 unwind label %3259

3256:                                             ; preds = %3250
  br i1 %3255, label %3257, label %3263

3257:                                             ; preds = %3256
  br label %3288

3258:                                             ; preds = %3249, %3221
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %419) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %419) #7
  br label %4918

3259:                                             ; preds = %3250
  %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 %3296

3263:                                             ; preds = %3256
  call void @llvm.lifetime.start.p0(i64 8, ptr %428) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %428)
          to label %3264 unwind label %3269

3264:                                             ; preds = %3263
  call void @llvm.lifetime.start.p0(i64 8, ptr %429) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %430) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %430, ptr noundef nonnull align 8 dereferenceable(16) %425, ptr noundef @.str.166, ptr noundef @.str.15, ptr noundef @.str.14)
          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) %430) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %429, i32 noundef 1, ptr noundef @.str.4, i32 noundef 159, ptr noundef %3266)
          to label %3267 unwind label %3277

3267:                                             ; preds = %3265
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull align 8 dereferenceable(8) %428)
          to label %3268 unwind label %3281

3268:                                             ; preds = %3267
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %429) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %430) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %428) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %428) #7
  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) %429) #7
  br label %3285

3285:                                             ; preds = %3281, %3277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #7
  br label %3286

3286:                                             ; preds = %3285, %3273
  call void @llvm.lifetime.end.p0(i64 32, ptr %430) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %428) #7
  br label %3287

3287:                                             ; preds = %3286, %3269
  call void @llvm.lifetime.end.p0(i64 8, ptr %428) #7
  br label %3296

3288:                                             ; preds = %3268, %3257
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %425) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %425) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %431) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %432) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %433) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %433, ptr noundef @.str.137)
  %3289 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %433)
  %3290 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3289)
  %3291 = xor i1 %3290, true
  %3292 = zext i1 %3291 to i8
  store i8 %3292, ptr %432, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %431, ptr noundef nonnull align 1 dereferenceable(1) %432, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %433) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %432) #7
  %3293 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %431)
          to label %3294 unwind label %3297

3294:                                             ; preds = %3288
  br i1 %3293, label %3295, label %3301

3295:                                             ; preds = %3294
  br label %3326

3296:                                             ; preds = %3287, %3259
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %425) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %425) #7
  br label %4918

3297:                                             ; preds = %3288
  %3298 = landingpad { ptr, i32 }
          cleanup
  %3299 = extractvalue { ptr, i32 } %3298, 0
  store ptr %3299, ptr %6, align 8
  %3300 = extractvalue { ptr, i32 } %3298, 1
  store i32 %3300, ptr %7, align 4
  br label %3333

3301:                                             ; preds = %3294
  call void @llvm.lifetime.start.p0(i64 8, ptr %434) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %3302 unwind label %3307

3302:                                             ; preds = %3301
  call void @llvm.lifetime.start.p0(i64 8, ptr %435) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %436) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %436, ptr noundef nonnull align 8 dereferenceable(16) %431, ptr noundef @.str.167, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3303 unwind label %3311

3303:                                             ; preds = %3302
  %3304 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %436) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %435, i32 noundef 1, ptr noundef @.str.4, i32 noundef 160, ptr noundef %3304)
          to label %3305 unwind label %3315

3305:                                             ; preds = %3303
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %3306 unwind label %3319

3306:                                             ; preds = %3305
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %436) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #7
  br label %3326

3307:                                             ; preds = %3301
  %3308 = landingpad { ptr, i32 }
          cleanup
  %3309 = extractvalue { ptr, i32 } %3308, 0
  store ptr %3309, ptr %6, align 8
  %3310 = extractvalue { ptr, i32 } %3308, 1
  store i32 %3310, ptr %7, align 4
  br label %3325

3311:                                             ; preds = %3302
  %3312 = landingpad { ptr, i32 }
          cleanup
  %3313 = extractvalue { ptr, i32 } %3312, 0
  store ptr %3313, ptr %6, align 8
  %3314 = extractvalue { ptr, i32 } %3312, 1
  store i32 %3314, ptr %7, align 4
  br label %3324

3315:                                             ; preds = %3303
  %3316 = landingpad { ptr, i32 }
          cleanup
  %3317 = extractvalue { ptr, i32 } %3316, 0
  store ptr %3317, ptr %6, align 8
  %3318 = extractvalue { ptr, i32 } %3316, 1
  store i32 %3318, ptr %7, align 4
  br label %3323

3319:                                             ; preds = %3305
  %3320 = landingpad { ptr, i32 }
          cleanup
  %3321 = extractvalue { ptr, i32 } %3320, 0
  store ptr %3321, ptr %6, align 8
  %3322 = extractvalue { ptr, i32 } %3320, 1
  store i32 %3322, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #7
  br label %3323

3323:                                             ; preds = %3319, %3315
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #7
  br label %3324

3324:                                             ; preds = %3323, %3311
  call void @llvm.lifetime.end.p0(i64 32, ptr %436) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %434) #7
  br label %3325

3325:                                             ; preds = %3324, %3307
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #7
  br label %3333

3326:                                             ; preds = %3306, %3295
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %431) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %431) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %437) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %438) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %439) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %439, ptr noundef @.str.168)
  %3327 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %439)
  %3328 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3327)
  %3329 = zext i1 %3328 to i8
  store i8 %3329, ptr %438, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %437, ptr noundef nonnull align 1 dereferenceable(1) %438, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %439) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %438) #7
  %3330 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %437)
          to label %3331 unwind label %3334

3331:                                             ; preds = %3326
  br i1 %3330, label %3332, label %3338

3332:                                             ; preds = %3331
  br label %3363

3333:                                             ; preds = %3325, %3297
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %431) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %431) #7
  br label %4918

3334:                                             ; preds = %3326
  %3335 = landingpad { ptr, i32 }
          cleanup
  %3336 = extractvalue { ptr, i32 } %3335, 0
  store ptr %3336, ptr %6, align 8
  %3337 = extractvalue { ptr, i32 } %3335, 1
  store i32 %3337, ptr %7, align 4
  br label %3371

3338:                                             ; preds = %3331
  call void @llvm.lifetime.start.p0(i64 8, ptr %440) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %440)
          to label %3339 unwind label %3344

3339:                                             ; preds = %3338
  call void @llvm.lifetime.start.p0(i64 8, ptr %441) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %442) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %442, ptr noundef nonnull align 8 dereferenceable(16) %437, ptr noundef @.str.169, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3340 unwind label %3348

3340:                                             ; preds = %3339
  %3341 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %442) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %441, i32 noundef 1, ptr noundef @.str.4, i32 noundef 162, ptr noundef %3341)
          to label %3342 unwind label %3352

3342:                                             ; preds = %3340
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull align 8 dereferenceable(8) %440)
          to label %3343 unwind label %3356

3343:                                             ; preds = %3342
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %442) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %441) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #7
  br label %3363

3344:                                             ; preds = %3338
  %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
  br label %3362

3348:                                             ; preds = %3339
  %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 %3361

3352:                                             ; preds = %3340
  %3353 = landingpad { ptr, i32 }
          cleanup
  %3354 = extractvalue { ptr, i32 } %3353, 0
  store ptr %3354, ptr %6, align 8
  %3355 = extractvalue { ptr, i32 } %3353, 1
  store i32 %3355, ptr %7, align 4
  br label %3360

3356:                                             ; preds = %3342
  %3357 = landingpad { ptr, i32 }
          cleanup
  %3358 = extractvalue { ptr, i32 } %3357, 0
  store ptr %3358, ptr %6, align 8
  %3359 = extractvalue { ptr, i32 } %3357, 1
  store i32 %3359, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #7
  br label %3360

3360:                                             ; preds = %3356, %3352
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #7
  br label %3361

3361:                                             ; preds = %3360, %3348
  call void @llvm.lifetime.end.p0(i64 32, ptr %442) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %441) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #7
  br label %3362

3362:                                             ; preds = %3361, %3344
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #7
  br label %3371

3363:                                             ; preds = %3343, %3332
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %437) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %443) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %444) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %445) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %445, ptr noundef @.str.168)
  %3364 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %445)
  %3365 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3364)
  %3366 = xor i1 %3365, true
  %3367 = zext i1 %3366 to i8
  store i8 %3367, ptr %444, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %443, ptr noundef nonnull align 1 dereferenceable(1) %444, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %445) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %444) #7
  %3368 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %443)
          to label %3369 unwind label %3372

3369:                                             ; preds = %3363
  br i1 %3368, label %3370, label %3376

3370:                                             ; preds = %3369
  br label %3401

3371:                                             ; preds = %3362, %3334
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %437) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %437) #7
  br label %4918

3372:                                             ; preds = %3363
  %3373 = landingpad { ptr, i32 }
          cleanup
  %3374 = extractvalue { ptr, i32 } %3373, 0
  store ptr %3374, ptr %6, align 8
  %3375 = extractvalue { ptr, i32 } %3373, 1
  store i32 %3375, ptr %7, align 4
  br label %3409

3376:                                             ; preds = %3369
  call void @llvm.lifetime.start.p0(i64 8, ptr %446) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %446)
          to label %3377 unwind label %3382

3377:                                             ; preds = %3376
  call void @llvm.lifetime.start.p0(i64 8, ptr %447) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %448) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %448, ptr noundef nonnull align 8 dereferenceable(16) %443, ptr noundef @.str.170, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3378 unwind label %3386

3378:                                             ; preds = %3377
  %3379 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %448) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %447, i32 noundef 1, ptr noundef @.str.4, i32 noundef 163, ptr noundef %3379)
          to label %3380 unwind label %3390

3380:                                             ; preds = %3378
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull align 8 dereferenceable(8) %446)
          to label %3381 unwind label %3394

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

3382:                                             ; preds = %3376
  %3383 = landingpad { ptr, i32 }
          cleanup
  %3384 = extractvalue { ptr, i32 } %3383, 0
  store ptr %3384, ptr %6, align 8
  %3385 = extractvalue { ptr, i32 } %3383, 1
  store i32 %3385, ptr %7, align 4
  br label %3400

3386:                                             ; preds = %3377
  %3387 = landingpad { ptr, i32 }
          cleanup
  %3388 = extractvalue { ptr, i32 } %3387, 0
  store ptr %3388, ptr %6, align 8
  %3389 = extractvalue { ptr, i32 } %3387, 1
  store i32 %3389, ptr %7, align 4
  br label %3399

3390:                                             ; preds = %3378
  %3391 = landingpad { ptr, i32 }
          cleanup
  %3392 = extractvalue { ptr, i32 } %3391, 0
  store ptr %3392, ptr %6, align 8
  %3393 = extractvalue { ptr, i32 } %3391, 1
  store i32 %3393, ptr %7, align 4
  br label %3398

3394:                                             ; preds = %3380
  %3395 = landingpad { ptr, i32 }
          cleanup
  %3396 = extractvalue { ptr, i32 } %3395, 0
  store ptr %3396, ptr %6, align 8
  %3397 = extractvalue { ptr, i32 } %3395, 1
  store i32 %3397, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %447) #7
  br label %3398

3398:                                             ; preds = %3394, %3390
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %448) #7
  br label %3399

3399:                                             ; preds = %3398, %3386
  call void @llvm.lifetime.end.p0(i64 32, ptr %448) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %447) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %446) #7
  br label %3400

3400:                                             ; preds = %3399, %3382
  call void @llvm.lifetime.end.p0(i64 8, ptr %446) #7
  br label %3409

3401:                                             ; preds = %3381, %3370
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %443) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %443) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %449) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %450) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %451) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %451, ptr noundef @.str.168)
  %3402 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %451)
  %3403 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3402)
  %3404 = xor i1 %3403, true
  %3405 = zext i1 %3404 to i8
  store i8 %3405, ptr %450, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %449, ptr noundef nonnull align 1 dereferenceable(1) %450, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %451) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %450) #7
  %3406 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %449)
          to label %3407 unwind label %3410

3407:                                             ; preds = %3401
  br i1 %3406, label %3408, label %3414

3408:                                             ; preds = %3407
  br label %3439

3409:                                             ; preds = %3400, %3372
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %443) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %443) #7
  br label %4918

3410:                                             ; preds = %3401
  %3411 = landingpad { ptr, i32 }
          cleanup
  %3412 = extractvalue { ptr, i32 } %3411, 0
  store ptr %3412, ptr %6, align 8
  %3413 = extractvalue { ptr, i32 } %3411, 1
  store i32 %3413, ptr %7, align 4
  br label %3447

3414:                                             ; preds = %3407
  call void @llvm.lifetime.start.p0(i64 8, ptr %452) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %452)
          to label %3415 unwind label %3420

3415:                                             ; preds = %3414
  call void @llvm.lifetime.start.p0(i64 8, ptr %453) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %454) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %454, ptr noundef nonnull align 8 dereferenceable(16) %449, ptr noundef @.str.171, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3416 unwind label %3424

3416:                                             ; preds = %3415
  %3417 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %454) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %453, i32 noundef 1, ptr noundef @.str.4, i32 noundef 164, ptr noundef %3417)
          to label %3418 unwind label %3428

3418:                                             ; preds = %3416
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull align 8 dereferenceable(8) %452)
          to label %3419 unwind label %3432

3419:                                             ; preds = %3418
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %453) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %454) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %453) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %452) #7
  br label %3439

3420:                                             ; preds = %3414
  %3421 = landingpad { ptr, i32 }
          cleanup
  %3422 = extractvalue { ptr, i32 } %3421, 0
  store ptr %3422, ptr %6, align 8
  %3423 = extractvalue { ptr, i32 } %3421, 1
  store i32 %3423, ptr %7, align 4
  br label %3438

3424:                                             ; preds = %3415
  %3425 = landingpad { ptr, i32 }
          cleanup
  %3426 = extractvalue { ptr, i32 } %3425, 0
  store ptr %3426, ptr %6, align 8
  %3427 = extractvalue { ptr, i32 } %3425, 1
  store i32 %3427, ptr %7, align 4
  br label %3437

3428:                                             ; preds = %3416
  %3429 = landingpad { ptr, i32 }
          cleanup
  %3430 = extractvalue { ptr, i32 } %3429, 0
  store ptr %3430, ptr %6, align 8
  %3431 = extractvalue { ptr, i32 } %3429, 1
  store i32 %3431, ptr %7, align 4
  br label %3436

3432:                                             ; preds = %3418
  %3433 = landingpad { ptr, i32 }
          cleanup
  %3434 = extractvalue { ptr, i32 } %3433, 0
  store ptr %3434, ptr %6, align 8
  %3435 = extractvalue { ptr, i32 } %3433, 1
  store i32 %3435, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %453) #7
  br label %3436

3436:                                             ; preds = %3432, %3428
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #7
  br label %3437

3437:                                             ; preds = %3436, %3424
  call void @llvm.lifetime.end.p0(i64 32, ptr %454) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %453) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #7
  br label %3438

3438:                                             ; preds = %3437, %3420
  call void @llvm.lifetime.end.p0(i64 8, ptr %452) #7
  br label %3447

3439:                                             ; preds = %3419, %3408
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %449) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %449) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %455) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %456) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %457) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %457, ptr noundef @.str.172)
  %3440 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %457)
  %3441 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3440)
  %3442 = xor i1 %3441, true
  %3443 = zext i1 %3442 to i8
  store i8 %3443, ptr %456, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef nonnull align 1 dereferenceable(1) %456, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %457) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %456) #7
  %3444 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %455)
          to label %3445 unwind label %3448

3445:                                             ; preds = %3439
  br i1 %3444, label %3446, label %3452

3446:                                             ; preds = %3445
  br label %3477

3447:                                             ; preds = %3438, %3410
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %449) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %449) #7
  br label %4918

3448:                                             ; preds = %3439
  %3449 = landingpad { ptr, i32 }
          cleanup
  %3450 = extractvalue { ptr, i32 } %3449, 0
  store ptr %3450, ptr %6, align 8
  %3451 = extractvalue { ptr, i32 } %3449, 1
  store i32 %3451, ptr %7, align 4
  br label %3484

3452:                                             ; preds = %3445
  call void @llvm.lifetime.start.p0(i64 8, ptr %458) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %458)
          to label %3453 unwind label %3458

3453:                                             ; preds = %3452
  call void @llvm.lifetime.start.p0(i64 8, ptr %459) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %460) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %460, ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef @.str.173, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3454 unwind label %3462

3454:                                             ; preds = %3453
  %3455 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %460) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %459, i32 noundef 1, ptr noundef @.str.4, i32 noundef 167, ptr noundef %3455)
          to label %3456 unwind label %3466

3456:                                             ; preds = %3454
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %459, ptr noundef nonnull align 8 dereferenceable(8) %458)
          to label %3457 unwind label %3470

3457:                                             ; preds = %3456
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %459) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %460) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %460) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %459) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %458) #7
  br label %3477

3458:                                             ; preds = %3452
  %3459 = landingpad { ptr, i32 }
          cleanup
  %3460 = extractvalue { ptr, i32 } %3459, 0
  store ptr %3460, ptr %6, align 8
  %3461 = extractvalue { ptr, i32 } %3459, 1
  store i32 %3461, ptr %7, align 4
  br label %3476

3462:                                             ; preds = %3453
  %3463 = landingpad { ptr, i32 }
          cleanup
  %3464 = extractvalue { ptr, i32 } %3463, 0
  store ptr %3464, ptr %6, align 8
  %3465 = extractvalue { ptr, i32 } %3463, 1
  store i32 %3465, ptr %7, align 4
  br label %3475

3466:                                             ; preds = %3454
  %3467 = landingpad { ptr, i32 }
          cleanup
  %3468 = extractvalue { ptr, i32 } %3467, 0
  store ptr %3468, ptr %6, align 8
  %3469 = extractvalue { ptr, i32 } %3467, 1
  store i32 %3469, ptr %7, align 4
  br label %3474

3470:                                             ; preds = %3456
  %3471 = landingpad { ptr, i32 }
          cleanup
  %3472 = extractvalue { ptr, i32 } %3471, 0
  store ptr %3472, ptr %6, align 8
  %3473 = extractvalue { ptr, i32 } %3471, 1
  store i32 %3473, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %459) #7
  br label %3474

3474:                                             ; preds = %3470, %3466
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %460) #7
  br label %3475

3475:                                             ; preds = %3474, %3462
  call void @llvm.lifetime.end.p0(i64 32, ptr %460) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %459) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %458) #7
  br label %3476

3476:                                             ; preds = %3475, %3458
  call void @llvm.lifetime.end.p0(i64 8, ptr %458) #7
  br label %3484

3477:                                             ; preds = %3457, %3446
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %455) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %455) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %461) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %462) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %463) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %463, ptr noundef @.str.172)
  %3478 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %463)
  %3479 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3478)
  %3480 = zext i1 %3479 to i8
  store i8 %3480, ptr %462, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %461, ptr noundef nonnull align 1 dereferenceable(1) %462, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %463) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %462) #7
  %3481 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %461)
          to label %3482 unwind label %3485

3482:                                             ; preds = %3477
  br i1 %3481, label %3483, label %3489

3483:                                             ; preds = %3482
  br label %3514

3484:                                             ; preds = %3476, %3448
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %455) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %455) #7
  br label %4918

3485:                                             ; preds = %3477
  %3486 = landingpad { ptr, i32 }
          cleanup
  %3487 = extractvalue { ptr, i32 } %3486, 0
  store ptr %3487, ptr %6, align 8
  %3488 = extractvalue { ptr, i32 } %3486, 1
  store i32 %3488, ptr %7, align 4
  br label %3522

3489:                                             ; preds = %3482
  call void @llvm.lifetime.start.p0(i64 8, ptr %464) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %3490 unwind label %3495

3490:                                             ; preds = %3489
  call void @llvm.lifetime.start.p0(i64 8, ptr %465) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %466) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %466, ptr noundef nonnull align 8 dereferenceable(16) %461, ptr noundef @.str.174, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3491 unwind label %3499

3491:                                             ; preds = %3490
  %3492 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %466) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %465, i32 noundef 1, ptr noundef @.str.4, i32 noundef 168, ptr noundef %3492)
          to label %3493 unwind label %3503

3493:                                             ; preds = %3491
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %3494 unwind label %3507

3494:                                             ; preds = %3493
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %466) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #7
  br label %3514

3495:                                             ; preds = %3489
  %3496 = landingpad { ptr, i32 }
          cleanup
  %3497 = extractvalue { ptr, i32 } %3496, 0
  store ptr %3497, ptr %6, align 8
  %3498 = extractvalue { ptr, i32 } %3496, 1
  store i32 %3498, ptr %7, align 4
  br label %3513

3499:                                             ; preds = %3490
  %3500 = landingpad { ptr, i32 }
          cleanup
  %3501 = extractvalue { ptr, i32 } %3500, 0
  store ptr %3501, ptr %6, align 8
  %3502 = extractvalue { ptr, i32 } %3500, 1
  store i32 %3502, ptr %7, align 4
  br label %3512

3503:                                             ; preds = %3491
  %3504 = landingpad { ptr, i32 }
          cleanup
  %3505 = extractvalue { ptr, i32 } %3504, 0
  store ptr %3505, ptr %6, align 8
  %3506 = extractvalue { ptr, i32 } %3504, 1
  store i32 %3506, ptr %7, align 4
  br label %3511

3507:                                             ; preds = %3493
  %3508 = landingpad { ptr, i32 }
          cleanup
  %3509 = extractvalue { ptr, i32 } %3508, 0
  store ptr %3509, ptr %6, align 8
  %3510 = extractvalue { ptr, i32 } %3508, 1
  store i32 %3510, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #7
  br label %3511

3511:                                             ; preds = %3507, %3503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #7
  br label %3512

3512:                                             ; preds = %3511, %3499
  call void @llvm.lifetime.end.p0(i64 32, ptr %466) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %464) #7
  br label %3513

3513:                                             ; preds = %3512, %3495
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #7
  br label %3522

3514:                                             ; preds = %3494, %3483
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %461) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %461) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %467) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %468) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %469) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %469, ptr noundef @.str.172)
  %3515 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %469)
  %3516 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3515)
  %3517 = xor i1 %3516, true
  %3518 = zext i1 %3517 to i8
  store i8 %3518, ptr %468, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %467, ptr noundef nonnull align 1 dereferenceable(1) %468, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %469) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %468) #7
  %3519 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %467)
          to label %3520 unwind label %3523

3520:                                             ; preds = %3514
  br i1 %3519, label %3521, label %3527

3521:                                             ; preds = %3520
  br label %3552

3522:                                             ; preds = %3513, %3485
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %461) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %461) #7
  br label %4918

3523:                                             ; preds = %3514
  %3524 = landingpad { ptr, i32 }
          cleanup
  %3525 = extractvalue { ptr, i32 } %3524, 0
  store ptr %3525, ptr %6, align 8
  %3526 = extractvalue { ptr, i32 } %3524, 1
  store i32 %3526, ptr %7, align 4
  br label %3560

3527:                                             ; preds = %3520
  call void @llvm.lifetime.start.p0(i64 8, ptr %470) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %470)
          to label %3528 unwind label %3533

3528:                                             ; preds = %3527
  call void @llvm.lifetime.start.p0(i64 8, ptr %471) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %472) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %472, ptr noundef nonnull align 8 dereferenceable(16) %467, ptr noundef @.str.175, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3529 unwind label %3537

3529:                                             ; preds = %3528
  %3530 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %472) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %471, i32 noundef 1, ptr noundef @.str.4, i32 noundef 169, ptr noundef %3530)
          to label %3531 unwind label %3541

3531:                                             ; preds = %3529
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull align 8 dereferenceable(8) %470)
          to label %3532 unwind label %3545

3532:                                             ; preds = %3531
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %471) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %472) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %472) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %471) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %470) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #7
  br label %3552

3533:                                             ; preds = %3527
  %3534 = landingpad { ptr, i32 }
          cleanup
  %3535 = extractvalue { ptr, i32 } %3534, 0
  store ptr %3535, ptr %6, align 8
  %3536 = extractvalue { ptr, i32 } %3534, 1
  store i32 %3536, ptr %7, align 4
  br label %3551

3537:                                             ; preds = %3528
  %3538 = landingpad { ptr, i32 }
          cleanup
  %3539 = extractvalue { ptr, i32 } %3538, 0
  store ptr %3539, ptr %6, align 8
  %3540 = extractvalue { ptr, i32 } %3538, 1
  store i32 %3540, ptr %7, align 4
  br label %3550

3541:                                             ; preds = %3529
  %3542 = landingpad { ptr, i32 }
          cleanup
  %3543 = extractvalue { ptr, i32 } %3542, 0
  store ptr %3543, ptr %6, align 8
  %3544 = extractvalue { ptr, i32 } %3542, 1
  store i32 %3544, ptr %7, align 4
  br label %3549

3545:                                             ; preds = %3531
  %3546 = landingpad { ptr, i32 }
          cleanup
  %3547 = extractvalue { ptr, i32 } %3546, 0
  store ptr %3547, ptr %6, align 8
  %3548 = extractvalue { ptr, i32 } %3546, 1
  store i32 %3548, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %471) #7
  br label %3549

3549:                                             ; preds = %3545, %3541
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %472) #7
  br label %3550

3550:                                             ; preds = %3549, %3537
  call void @llvm.lifetime.end.p0(i64 32, ptr %472) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %471) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %470) #7
  br label %3551

3551:                                             ; preds = %3550, %3533
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #7
  br label %3560

3552:                                             ; preds = %3532, %3521
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %467) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %467) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %473) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %474) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %475) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %475, ptr noundef @.str.176)
  %3553 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %475)
  %3554 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3553)
  %3555 = xor i1 %3554, true
  %3556 = zext i1 %3555 to i8
  store i8 %3556, ptr %474, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef nonnull align 1 dereferenceable(1) %474, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %475) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %474) #7
  %3557 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %473)
          to label %3558 unwind label %3561

3558:                                             ; preds = %3552
  br i1 %3557, label %3559, label %3565

3559:                                             ; preds = %3558
  br label %3590

3560:                                             ; preds = %3551, %3523
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %467) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %467) #7
  br label %4918

3561:                                             ; preds = %3552
  %3562 = landingpad { ptr, i32 }
          cleanup
  %3563 = extractvalue { ptr, i32 } %3562, 0
  store ptr %3563, ptr %6, align 8
  %3564 = extractvalue { ptr, i32 } %3562, 1
  store i32 %3564, ptr %7, align 4
  br label %3597

3565:                                             ; preds = %3558
  call void @llvm.lifetime.start.p0(i64 8, ptr %476) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %476)
          to label %3566 unwind label %3571

3566:                                             ; preds = %3565
  call void @llvm.lifetime.start.p0(i64 8, ptr %477) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %478) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %478, ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef @.str.177, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3567 unwind label %3575

3567:                                             ; preds = %3566
  %3568 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %478) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %477, i32 noundef 1, ptr noundef @.str.4, i32 noundef 171, ptr noundef %3568)
          to label %3569 unwind label %3579

3569:                                             ; preds = %3567
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef nonnull align 8 dereferenceable(8) %476)
          to label %3570 unwind label %3583

3570:                                             ; preds = %3569
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %477) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %478) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %478) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %477) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %476) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %476) #7
  br label %3590

3571:                                             ; preds = %3565
  %3572 = landingpad { ptr, i32 }
          cleanup
  %3573 = extractvalue { ptr, i32 } %3572, 0
  store ptr %3573, ptr %6, align 8
  %3574 = extractvalue { ptr, i32 } %3572, 1
  store i32 %3574, ptr %7, align 4
  br label %3589

3575:                                             ; preds = %3566
  %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
  br label %3588

3579:                                             ; preds = %3567
  %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 %3587

3583:                                             ; preds = %3569
  %3584 = landingpad { ptr, i32 }
          cleanup
  %3585 = extractvalue { ptr, i32 } %3584, 0
  store ptr %3585, ptr %6, align 8
  %3586 = extractvalue { ptr, i32 } %3584, 1
  store i32 %3586, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %477) #7
  br label %3587

3587:                                             ; preds = %3583, %3579
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %478) #7
  br label %3588

3588:                                             ; preds = %3587, %3575
  call void @llvm.lifetime.end.p0(i64 32, ptr %478) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %477) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %476) #7
  br label %3589

3589:                                             ; preds = %3588, %3571
  call void @llvm.lifetime.end.p0(i64 8, ptr %476) #7
  br label %3597

3590:                                             ; preds = %3570, %3559
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %473) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %473) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %479) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %480) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %481) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %481, ptr noundef @.str.176)
  %3591 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %481)
  %3592 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3591)
  %3593 = zext i1 %3592 to i8
  store i8 %3593, ptr %480, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %479, ptr noundef nonnull align 1 dereferenceable(1) %480, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %481) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %480) #7
  %3594 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %479)
          to label %3595 unwind label %3598

3595:                                             ; preds = %3590
  br i1 %3594, label %3596, label %3602

3596:                                             ; preds = %3595
  br label %3627

3597:                                             ; preds = %3589, %3561
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %473) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %473) #7
  br label %4918

3598:                                             ; preds = %3590
  %3599 = landingpad { ptr, i32 }
          cleanup
  %3600 = extractvalue { ptr, i32 } %3599, 0
  store ptr %3600, ptr %6, align 8
  %3601 = extractvalue { ptr, i32 } %3599, 1
  store i32 %3601, ptr %7, align 4
  br label %3635

3602:                                             ; preds = %3595
  call void @llvm.lifetime.start.p0(i64 8, ptr %482) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %482)
          to label %3603 unwind label %3608

3603:                                             ; preds = %3602
  call void @llvm.lifetime.start.p0(i64 8, ptr %483) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %484) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %484, ptr noundef nonnull align 8 dereferenceable(16) %479, ptr noundef @.str.178, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3604 unwind label %3612

3604:                                             ; preds = %3603
  %3605 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %484) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %483, i32 noundef 1, ptr noundef @.str.4, i32 noundef 172, ptr noundef %3605)
          to label %3606 unwind label %3616

3606:                                             ; preds = %3604
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef nonnull align 8 dereferenceable(8) %482)
          to label %3607 unwind label %3620

3607:                                             ; preds = %3606
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %484) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %484) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %483) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %482) #7
  br label %3627

3608:                                             ; preds = %3602
  %3609 = landingpad { ptr, i32 }
          cleanup
  %3610 = extractvalue { ptr, i32 } %3609, 0
  store ptr %3610, ptr %6, align 8
  %3611 = extractvalue { ptr, i32 } %3609, 1
  store i32 %3611, ptr %7, align 4
  br label %3626

3612:                                             ; preds = %3603
  %3613 = landingpad { ptr, i32 }
          cleanup
  %3614 = extractvalue { ptr, i32 } %3613, 0
  store ptr %3614, ptr %6, align 8
  %3615 = extractvalue { ptr, i32 } %3613, 1
  store i32 %3615, ptr %7, align 4
  br label %3625

3616:                                             ; preds = %3604
  %3617 = landingpad { ptr, i32 }
          cleanup
  %3618 = extractvalue { ptr, i32 } %3617, 0
  store ptr %3618, ptr %6, align 8
  %3619 = extractvalue { ptr, i32 } %3617, 1
  store i32 %3619, ptr %7, align 4
  br label %3624

3620:                                             ; preds = %3606
  %3621 = landingpad { ptr, i32 }
          cleanup
  %3622 = extractvalue { ptr, i32 } %3621, 0
  store ptr %3622, ptr %6, align 8
  %3623 = extractvalue { ptr, i32 } %3621, 1
  store i32 %3623, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #7
  br label %3624

3624:                                             ; preds = %3620, %3616
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %484) #7
  br label %3625

3625:                                             ; preds = %3624, %3612
  call void @llvm.lifetime.end.p0(i64 32, ptr %484) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %483) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #7
  br label %3626

3626:                                             ; preds = %3625, %3608
  call void @llvm.lifetime.end.p0(i64 8, ptr %482) #7
  br label %3635

3627:                                             ; preds = %3607, %3596
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %479) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %479) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %485) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %486) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %487) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %487, ptr noundef @.str.176)
  %3628 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %487)
  %3629 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3628)
  %3630 = xor i1 %3629, true
  %3631 = zext i1 %3630 to i8
  store i8 %3631, ptr %486, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %485, ptr noundef nonnull align 1 dereferenceable(1) %486, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %487) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %486) #7
  %3632 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %485)
          to label %3633 unwind label %3636

3633:                                             ; preds = %3627
  br i1 %3632, label %3634, label %3640

3634:                                             ; preds = %3633
  br label %3665

3635:                                             ; preds = %3626, %3598
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %479) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %479) #7
  br label %4918

3636:                                             ; preds = %3627
  %3637 = landingpad { ptr, i32 }
          cleanup
  %3638 = extractvalue { ptr, i32 } %3637, 0
  store ptr %3638, ptr %6, align 8
  %3639 = extractvalue { ptr, i32 } %3637, 1
  store i32 %3639, ptr %7, align 4
  br label %3673

3640:                                             ; preds = %3633
  call void @llvm.lifetime.start.p0(i64 8, ptr %488) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %488)
          to label %3641 unwind label %3646

3641:                                             ; preds = %3640
  call void @llvm.lifetime.start.p0(i64 8, ptr %489) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %490) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %490, ptr noundef nonnull align 8 dereferenceable(16) %485, ptr noundef @.str.179, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3642 unwind label %3650

3642:                                             ; preds = %3641
  %3643 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %490) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %489, i32 noundef 1, ptr noundef @.str.4, i32 noundef 173, ptr noundef %3643)
          to label %3644 unwind label %3654

3644:                                             ; preds = %3642
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull align 8 dereferenceable(8) %488)
          to label %3645 unwind label %3658

3645:                                             ; preds = %3644
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %490) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %490) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %489) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %488) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %488) #7
  br label %3665

3646:                                             ; preds = %3640
  %3647 = landingpad { ptr, i32 }
          cleanup
  %3648 = extractvalue { ptr, i32 } %3647, 0
  store ptr %3648, ptr %6, align 8
  %3649 = extractvalue { ptr, i32 } %3647, 1
  store i32 %3649, ptr %7, align 4
  br label %3664

3650:                                             ; preds = %3641
  %3651 = landingpad { ptr, i32 }
          cleanup
  %3652 = extractvalue { ptr, i32 } %3651, 0
  store ptr %3652, ptr %6, align 8
  %3653 = extractvalue { ptr, i32 } %3651, 1
  store i32 %3653, ptr %7, align 4
  br label %3663

3654:                                             ; preds = %3642
  %3655 = landingpad { ptr, i32 }
          cleanup
  %3656 = extractvalue { ptr, i32 } %3655, 0
  store ptr %3656, ptr %6, align 8
  %3657 = extractvalue { ptr, i32 } %3655, 1
  store i32 %3657, ptr %7, align 4
  br label %3662

3658:                                             ; preds = %3644
  %3659 = landingpad { ptr, i32 }
          cleanup
  %3660 = extractvalue { ptr, i32 } %3659, 0
  store ptr %3660, ptr %6, align 8
  %3661 = extractvalue { ptr, i32 } %3659, 1
  store i32 %3661, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %489) #7
  br label %3662

3662:                                             ; preds = %3658, %3654
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %490) #7
  br label %3663

3663:                                             ; preds = %3662, %3650
  call void @llvm.lifetime.end.p0(i64 32, ptr %490) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %489) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %488) #7
  br label %3664

3664:                                             ; preds = %3663, %3646
  call void @llvm.lifetime.end.p0(i64 8, ptr %488) #7
  br label %3673

3665:                                             ; preds = %3645, %3634
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %485) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %485) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %491) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %492) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %493) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %493, ptr noundef @.str.180)
  %3666 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %493)
  %3667 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3666)
  %3668 = xor i1 %3667, true
  %3669 = zext i1 %3668 to i8
  store i8 %3669, ptr %492, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef nonnull align 1 dereferenceable(1) %492, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %493) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %492) #7
  %3670 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %491)
          to label %3671 unwind label %3674

3671:                                             ; preds = %3665
  br i1 %3670, label %3672, label %3678

3672:                                             ; preds = %3671
  br label %3703

3673:                                             ; preds = %3664, %3636
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %485) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %485) #7
  br label %4918

3674:                                             ; preds = %3665
  %3675 = landingpad { ptr, i32 }
          cleanup
  %3676 = extractvalue { ptr, i32 } %3675, 0
  store ptr %3676, ptr %6, align 8
  %3677 = extractvalue { ptr, i32 } %3675, 1
  store i32 %3677, ptr %7, align 4
  br label %3710

3678:                                             ; preds = %3671
  call void @llvm.lifetime.start.p0(i64 8, ptr %494) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %494)
          to label %3679 unwind label %3684

3679:                                             ; preds = %3678
  call void @llvm.lifetime.start.p0(i64 8, ptr %495) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %496) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %496, ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef @.str.181, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3680 unwind label %3688

3680:                                             ; preds = %3679
  %3681 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %496) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %495, i32 noundef 1, ptr noundef @.str.4, i32 noundef 175, ptr noundef %3681)
          to label %3682 unwind label %3692

3682:                                             ; preds = %3680
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(8) %494)
          to label %3683 unwind label %3696

3683:                                             ; preds = %3682
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %496) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %496) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %495) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #7
  br label %3703

3684:                                             ; preds = %3678
  %3685 = landingpad { ptr, i32 }
          cleanup
  %3686 = extractvalue { ptr, i32 } %3685, 0
  store ptr %3686, ptr %6, align 8
  %3687 = extractvalue { ptr, i32 } %3685, 1
  store i32 %3687, ptr %7, align 4
  br label %3702

3688:                                             ; preds = %3679
  %3689 = landingpad { ptr, i32 }
          cleanup
  %3690 = extractvalue { ptr, i32 } %3689, 0
  store ptr %3690, ptr %6, align 8
  %3691 = extractvalue { ptr, i32 } %3689, 1
  store i32 %3691, ptr %7, align 4
  br label %3701

3692:                                             ; preds = %3680
  %3693 = landingpad { ptr, i32 }
          cleanup
  %3694 = extractvalue { ptr, i32 } %3693, 0
  store ptr %3694, ptr %6, align 8
  %3695 = extractvalue { ptr, i32 } %3693, 1
  store i32 %3695, ptr %7, align 4
  br label %3700

3696:                                             ; preds = %3682
  %3697 = landingpad { ptr, i32 }
          cleanup
  %3698 = extractvalue { ptr, i32 } %3697, 0
  store ptr %3698, ptr %6, align 8
  %3699 = extractvalue { ptr, i32 } %3697, 1
  store i32 %3699, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %495) #7
  br label %3700

3700:                                             ; preds = %3696, %3692
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %496) #7
  br label %3701

3701:                                             ; preds = %3700, %3688
  call void @llvm.lifetime.end.p0(i64 32, ptr %496) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %495) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %494) #7
  br label %3702

3702:                                             ; preds = %3701, %3684
  call void @llvm.lifetime.end.p0(i64 8, ptr %494) #7
  br label %3710

3703:                                             ; preds = %3683, %3672
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %491) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %491) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %497) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %498) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %499) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %499, ptr noundef @.str.180)
  %3704 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %499)
  %3705 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3704)
  %3706 = zext i1 %3705 to i8
  store i8 %3706, ptr %498, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %497, ptr noundef nonnull align 1 dereferenceable(1) %498, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %499) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %498) #7
  %3707 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %497)
          to label %3708 unwind label %3711

3708:                                             ; preds = %3703
  br i1 %3707, label %3709, label %3715

3709:                                             ; preds = %3708
  br label %3740

3710:                                             ; preds = %3702, %3674
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %491) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %491) #7
  br label %4918

3711:                                             ; preds = %3703
  %3712 = landingpad { ptr, i32 }
          cleanup
  %3713 = extractvalue { ptr, i32 } %3712, 0
  store ptr %3713, ptr %6, align 8
  %3714 = extractvalue { ptr, i32 } %3712, 1
  store i32 %3714, ptr %7, align 4
  br label %3748

3715:                                             ; preds = %3708
  call void @llvm.lifetime.start.p0(i64 8, ptr %500) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %500)
          to label %3716 unwind label %3721

3716:                                             ; preds = %3715
  call void @llvm.lifetime.start.p0(i64 8, ptr %501) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %502) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %502, ptr noundef nonnull align 8 dereferenceable(16) %497, ptr noundef @.str.182, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3717 unwind label %3725

3717:                                             ; preds = %3716
  %3718 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %502) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %501, i32 noundef 1, ptr noundef @.str.4, i32 noundef 176, ptr noundef %3718)
          to label %3719 unwind label %3729

3719:                                             ; preds = %3717
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull align 8 dereferenceable(8) %500)
          to label %3720 unwind label %3733

3720:                                             ; preds = %3719
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %501) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %502) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %501) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %500) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %500) #7
  br label %3740

3721:                                             ; preds = %3715
  %3722 = landingpad { ptr, i32 }
          cleanup
  %3723 = extractvalue { ptr, i32 } %3722, 0
  store ptr %3723, ptr %6, align 8
  %3724 = extractvalue { ptr, i32 } %3722, 1
  store i32 %3724, ptr %7, align 4
  br label %3739

3725:                                             ; preds = %3716
  %3726 = landingpad { ptr, i32 }
          cleanup
  %3727 = extractvalue { ptr, i32 } %3726, 0
  store ptr %3727, ptr %6, align 8
  %3728 = extractvalue { ptr, i32 } %3726, 1
  store i32 %3728, ptr %7, align 4
  br label %3738

3729:                                             ; preds = %3717
  %3730 = landingpad { ptr, i32 }
          cleanup
  %3731 = extractvalue { ptr, i32 } %3730, 0
  store ptr %3731, ptr %6, align 8
  %3732 = extractvalue { ptr, i32 } %3730, 1
  store i32 %3732, ptr %7, align 4
  br label %3737

3733:                                             ; preds = %3719
  %3734 = landingpad { ptr, i32 }
          cleanup
  %3735 = extractvalue { ptr, i32 } %3734, 0
  store ptr %3735, ptr %6, align 8
  %3736 = extractvalue { ptr, i32 } %3734, 1
  store i32 %3736, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %501) #7
  br label %3737

3737:                                             ; preds = %3733, %3729
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %502) #7
  br label %3738

3738:                                             ; preds = %3737, %3725
  call void @llvm.lifetime.end.p0(i64 32, ptr %502) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %501) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %500) #7
  br label %3739

3739:                                             ; preds = %3738, %3721
  call void @llvm.lifetime.end.p0(i64 8, ptr %500) #7
  br label %3748

3740:                                             ; preds = %3720, %3709
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %497) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %497) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %503) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %504) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %505) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %505, ptr noundef @.str.180)
  %3741 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %505)
  %3742 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3741)
  %3743 = xor i1 %3742, true
  %3744 = zext i1 %3743 to i8
  store i8 %3744, ptr %504, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %503, ptr noundef nonnull align 1 dereferenceable(1) %504, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %505) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %504) #7
  %3745 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %503)
          to label %3746 unwind label %3749

3746:                                             ; preds = %3740
  br i1 %3745, label %3747, label %3753

3747:                                             ; preds = %3746
  br label %3778

3748:                                             ; preds = %3739, %3711
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %497) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %497) #7
  br label %4918

3749:                                             ; preds = %3740
  %3750 = landingpad { ptr, i32 }
          cleanup
  %3751 = extractvalue { ptr, i32 } %3750, 0
  store ptr %3751, ptr %6, align 8
  %3752 = extractvalue { ptr, i32 } %3750, 1
  store i32 %3752, ptr %7, align 4
  br label %3786

3753:                                             ; preds = %3746
  call void @llvm.lifetime.start.p0(i64 8, ptr %506) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %3754 unwind label %3759

3754:                                             ; preds = %3753
  call void @llvm.lifetime.start.p0(i64 8, ptr %507) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %508) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %508, ptr noundef nonnull align 8 dereferenceable(16) %503, ptr noundef @.str.183, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3755 unwind label %3763

3755:                                             ; preds = %3754
  %3756 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %508) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %507, i32 noundef 1, ptr noundef @.str.4, i32 noundef 177, ptr noundef %3756)
          to label %3757 unwind label %3767

3757:                                             ; preds = %3755
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %507, ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %3758 unwind label %3771

3758:                                             ; preds = %3757
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %507) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %508) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %508) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %507) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %506) #7
  br label %3778

3759:                                             ; preds = %3753
  %3760 = landingpad { ptr, i32 }
          cleanup
  %3761 = extractvalue { ptr, i32 } %3760, 0
  store ptr %3761, ptr %6, align 8
  %3762 = extractvalue { ptr, i32 } %3760, 1
  store i32 %3762, ptr %7, align 4
  br label %3777

3763:                                             ; preds = %3754
  %3764 = landingpad { ptr, i32 }
          cleanup
  %3765 = extractvalue { ptr, i32 } %3764, 0
  store ptr %3765, ptr %6, align 8
  %3766 = extractvalue { ptr, i32 } %3764, 1
  store i32 %3766, ptr %7, align 4
  br label %3776

3767:                                             ; preds = %3755
  %3768 = landingpad { ptr, i32 }
          cleanup
  %3769 = extractvalue { ptr, i32 } %3768, 0
  store ptr %3769, ptr %6, align 8
  %3770 = extractvalue { ptr, i32 } %3768, 1
  store i32 %3770, ptr %7, align 4
  br label %3775

3771:                                             ; preds = %3757
  %3772 = landingpad { ptr, i32 }
          cleanup
  %3773 = extractvalue { ptr, i32 } %3772, 0
  store ptr %3773, ptr %6, align 8
  %3774 = extractvalue { ptr, i32 } %3772, 1
  store i32 %3774, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %507) #7
  br label %3775

3775:                                             ; preds = %3771, %3767
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %508) #7
  br label %3776

3776:                                             ; preds = %3775, %3763
  call void @llvm.lifetime.end.p0(i64 32, ptr %508) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %507) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %506) #7
  br label %3777

3777:                                             ; preds = %3776, %3759
  call void @llvm.lifetime.end.p0(i64 8, ptr %506) #7
  br label %3786

3778:                                             ; preds = %3758, %3747
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %503) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %503) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %509) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %510) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %511) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %511, ptr noundef @.str.123)
  %3779 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %511)
  %3780 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3779)
  %3781 = xor i1 %3780, true
  %3782 = zext i1 %3781 to i8
  store i8 %3782, ptr %510, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %509, ptr noundef nonnull align 1 dereferenceable(1) %510, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %511) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %510) #7
  %3783 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %509)
          to label %3784 unwind label %3787

3784:                                             ; preds = %3778
  br i1 %3783, label %3785, label %3791

3785:                                             ; preds = %3784
  br label %3816

3786:                                             ; preds = %3777, %3749
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %503) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %503) #7
  br label %4918

3787:                                             ; preds = %3778
  %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
  br label %3824

3791:                                             ; preds = %3784
  call void @llvm.lifetime.start.p0(i64 8, ptr %512) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %3792 unwind label %3797

3792:                                             ; preds = %3791
  call void @llvm.lifetime.start.p0(i64 8, ptr %513) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %514) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %514, ptr noundef nonnull align 8 dereferenceable(16) %509, ptr noundef @.str.184, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3793 unwind label %3801

3793:                                             ; preds = %3792
  %3794 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %514) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %513, i32 noundef 1, ptr noundef @.str.4, i32 noundef 180, ptr noundef %3794)
          to label %3795 unwind label %3805

3795:                                             ; preds = %3793
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %513, ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %3796 unwind label %3809

3796:                                             ; preds = %3795
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %513) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %514) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %514) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %513) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %512) #7
  br label %3816

3797:                                             ; preds = %3791
  %3798 = landingpad { ptr, i32 }
          cleanup
  %3799 = extractvalue { ptr, i32 } %3798, 0
  store ptr %3799, ptr %6, align 8
  %3800 = extractvalue { ptr, i32 } %3798, 1
  store i32 %3800, ptr %7, align 4
  br label %3815

3801:                                             ; preds = %3792
  %3802 = landingpad { ptr, i32 }
          cleanup
  %3803 = extractvalue { ptr, i32 } %3802, 0
  store ptr %3803, ptr %6, align 8
  %3804 = extractvalue { ptr, i32 } %3802, 1
  store i32 %3804, ptr %7, align 4
  br label %3814

3805:                                             ; preds = %3793
  %3806 = landingpad { ptr, i32 }
          cleanup
  %3807 = extractvalue { ptr, i32 } %3806, 0
  store ptr %3807, ptr %6, align 8
  %3808 = extractvalue { ptr, i32 } %3806, 1
  store i32 %3808, ptr %7, align 4
  br label %3813

3809:                                             ; preds = %3795
  %3810 = landingpad { ptr, i32 }
          cleanup
  %3811 = extractvalue { ptr, i32 } %3810, 0
  store ptr %3811, ptr %6, align 8
  %3812 = extractvalue { ptr, i32 } %3810, 1
  store i32 %3812, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %513) #7
  br label %3813

3813:                                             ; preds = %3809, %3805
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %514) #7
  br label %3814

3814:                                             ; preds = %3813, %3801
  call void @llvm.lifetime.end.p0(i64 32, ptr %514) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %513) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %512) #7
  br label %3815

3815:                                             ; preds = %3814, %3797
  call void @llvm.lifetime.end.p0(i64 8, ptr %512) #7
  br label %3824

3816:                                             ; preds = %3796, %3785
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %509) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %509) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %515) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %516) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %517) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %517, ptr noundef @.str.123)
  %3817 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %517)
  %3818 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3817)
  %3819 = xor i1 %3818, true
  %3820 = zext i1 %3819 to i8
  store i8 %3820, ptr %516, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %515, ptr noundef nonnull align 1 dereferenceable(1) %516, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %517) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %516) #7
  %3821 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %515)
          to label %3822 unwind label %3825

3822:                                             ; preds = %3816
  br i1 %3821, label %3823, label %3829

3823:                                             ; preds = %3822
  br label %3854

3824:                                             ; preds = %3815, %3787
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %509) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %509) #7
  br label %4918

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 %3861

3829:                                             ; preds = %3822
  call void @llvm.lifetime.start.p0(i64 8, ptr %518) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %518)
          to label %3830 unwind label %3835

3830:                                             ; preds = %3829
  call void @llvm.lifetime.start.p0(i64 8, ptr %519) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %520) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %520, ptr noundef nonnull align 8 dereferenceable(16) %515, ptr noundef @.str.185, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3831 unwind label %3839

3831:                                             ; preds = %3830
  %3832 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %520) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %519, i32 noundef 1, ptr noundef @.str.4, i32 noundef 181, ptr noundef %3832)
          to label %3833 unwind label %3843

3833:                                             ; preds = %3831
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 8 dereferenceable(8) %518)
          to label %3834 unwind label %3847

3834:                                             ; preds = %3833
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %519) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %520) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %520) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %518) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %518) #7
  br label %3854

3835:                                             ; preds = %3829
  %3836 = landingpad { ptr, i32 }
          cleanup
  %3837 = extractvalue { ptr, i32 } %3836, 0
  store ptr %3837, ptr %6, align 8
  %3838 = extractvalue { ptr, i32 } %3836, 1
  store i32 %3838, ptr %7, align 4
  br label %3853

3839:                                             ; preds = %3830
  %3840 = landingpad { ptr, i32 }
          cleanup
  %3841 = extractvalue { ptr, i32 } %3840, 0
  store ptr %3841, ptr %6, align 8
  %3842 = extractvalue { ptr, i32 } %3840, 1
  store i32 %3842, ptr %7, align 4
  br label %3852

3843:                                             ; preds = %3831
  %3844 = landingpad { ptr, i32 }
          cleanup
  %3845 = extractvalue { ptr, i32 } %3844, 0
  store ptr %3845, ptr %6, align 8
  %3846 = extractvalue { ptr, i32 } %3844, 1
  store i32 %3846, ptr %7, align 4
  br label %3851

3847:                                             ; preds = %3833
  %3848 = landingpad { ptr, i32 }
          cleanup
  %3849 = extractvalue { ptr, i32 } %3848, 0
  store ptr %3849, ptr %6, align 8
  %3850 = extractvalue { ptr, i32 } %3848, 1
  store i32 %3850, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %519) #7
  br label %3851

3851:                                             ; preds = %3847, %3843
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %520) #7
  br label %3852

3852:                                             ; preds = %3851, %3839
  call void @llvm.lifetime.end.p0(i64 32, ptr %520) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %518) #7
  br label %3853

3853:                                             ; preds = %3852, %3835
  call void @llvm.lifetime.end.p0(i64 8, ptr %518) #7
  br label %3861

3854:                                             ; preds = %3834, %3823
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %515) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %515) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %521) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %522) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %523) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %523, ptr noundef @.str.123)
  %3855 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %523)
  %3856 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3855)
  %3857 = zext i1 %3856 to i8
  store i8 %3857, ptr %522, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %521, ptr noundef nonnull align 1 dereferenceable(1) %522, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %523) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %522) #7
  %3858 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %521)
          to label %3859 unwind label %3862

3859:                                             ; preds = %3854
  br i1 %3858, label %3860, label %3866

3860:                                             ; preds = %3859
  br label %3891

3861:                                             ; preds = %3853, %3825
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %515) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %515) #7
  br label %4918

3862:                                             ; preds = %3854
  %3863 = landingpad { ptr, i32 }
          cleanup
  %3864 = extractvalue { ptr, i32 } %3863, 0
  store ptr %3864, ptr %6, align 8
  %3865 = extractvalue { ptr, i32 } %3863, 1
  store i32 %3865, ptr %7, align 4
  br label %3899

3866:                                             ; preds = %3859
  call void @llvm.lifetime.start.p0(i64 8, ptr %524) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %524)
          to label %3867 unwind label %3872

3867:                                             ; preds = %3866
  call void @llvm.lifetime.start.p0(i64 8, ptr %525) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %526) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %526, ptr noundef nonnull align 8 dereferenceable(16) %521, ptr noundef @.str.186, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3868 unwind label %3876

3868:                                             ; preds = %3867
  %3869 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %526) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %525, i32 noundef 1, ptr noundef @.str.4, i32 noundef 182, ptr noundef %3869)
          to label %3870 unwind label %3880

3870:                                             ; preds = %3868
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull align 8 dereferenceable(8) %524)
          to label %3871 unwind label %3884

3871:                                             ; preds = %3870
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %525) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %526) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %526) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %524) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %524) #7
  br label %3891

3872:                                             ; preds = %3866
  %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 %3890

3876:                                             ; preds = %3867
  %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 %3889

3880:                                             ; preds = %3868
  %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
  br label %3888

3884:                                             ; preds = %3870
  %3885 = landingpad { ptr, i32 }
          cleanup
  %3886 = extractvalue { ptr, i32 } %3885, 0
  store ptr %3886, ptr %6, align 8
  %3887 = extractvalue { ptr, i32 } %3885, 1
  store i32 %3887, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %525) #7
  br label %3888

3888:                                             ; preds = %3884, %3880
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %526) #7
  br label %3889

3889:                                             ; preds = %3888, %3876
  call void @llvm.lifetime.end.p0(i64 32, ptr %526) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %524) #7
  br label %3890

3890:                                             ; preds = %3889, %3872
  call void @llvm.lifetime.end.p0(i64 8, ptr %524) #7
  br label %3899

3891:                                             ; preds = %3871, %3860
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %521) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %521) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %527) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %528) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %529) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %529, ptr noundef @.str.90)
  %3892 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %529)
  %3893 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %3892)
  %3894 = xor i1 %3893, true
  %3895 = zext i1 %3894 to i8
  store i8 %3895, ptr %528, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %527, ptr noundef nonnull align 1 dereferenceable(1) %528, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %529) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %528) #7
  %3896 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %527)
          to label %3897 unwind label %3900

3897:                                             ; preds = %3891
  br i1 %3896, label %3898, label %3904

3898:                                             ; preds = %3897
  br label %3929

3899:                                             ; preds = %3890, %3862
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %521) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %521) #7
  br label %4918

3900:                                             ; preds = %3891
  %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
  br label %3937

3904:                                             ; preds = %3897
  call void @llvm.lifetime.start.p0(i64 8, ptr %530) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %530)
          to label %3905 unwind label %3910

3905:                                             ; preds = %3904
  call void @llvm.lifetime.start.p0(i64 8, ptr %531) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %532) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %532, ptr noundef nonnull align 8 dereferenceable(16) %527, ptr noundef @.str.187, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3906 unwind label %3914

3906:                                             ; preds = %3905
  %3907 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %532) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %531, i32 noundef 1, ptr noundef @.str.4, i32 noundef 184, ptr noundef %3907)
          to label %3908 unwind label %3918

3908:                                             ; preds = %3906
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef nonnull align 8 dereferenceable(8) %530)
          to label %3909 unwind label %3922

3909:                                             ; preds = %3908
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %530) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %530) #7
  br label %3929

3910:                                             ; preds = %3904
  %3911 = landingpad { ptr, i32 }
          cleanup
  %3912 = extractvalue { ptr, i32 } %3911, 0
  store ptr %3912, ptr %6, align 8
  %3913 = extractvalue { ptr, i32 } %3911, 1
  store i32 %3913, ptr %7, align 4
  br label %3928

3914:                                             ; preds = %3905
  %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 %3927

3918:                                             ; preds = %3906
  %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 %3926

3922:                                             ; preds = %3908
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %531) #7
  br label %3926

3926:                                             ; preds = %3922, %3918
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %532) #7
  br label %3927

3927:                                             ; preds = %3926, %3914
  call void @llvm.lifetime.end.p0(i64 32, ptr %532) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %530) #7
  br label %3928

3928:                                             ; preds = %3927, %3910
  call void @llvm.lifetime.end.p0(i64 8, ptr %530) #7
  br label %3937

3929:                                             ; preds = %3909, %3898
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %527) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %527) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %533) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %534) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %535) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %535, ptr noundef @.str.90)
  %3930 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %535)
  %3931 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %3930)
  %3932 = xor i1 %3931, true
  %3933 = zext i1 %3932 to i8
  store i8 %3933, ptr %534, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %533, ptr noundef nonnull align 1 dereferenceable(1) %534, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %535) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %534) #7
  %3934 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %533)
          to label %3935 unwind label %3938

3935:                                             ; preds = %3929
  br i1 %3934, label %3936, label %3942

3936:                                             ; preds = %3935
  br label %3967

3937:                                             ; preds = %3928, %3900
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %527) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %527) #7
  br label %4918

3938:                                             ; preds = %3929
  %3939 = landingpad { ptr, i32 }
          cleanup
  %3940 = extractvalue { ptr, i32 } %3939, 0
  store ptr %3940, ptr %6, align 8
  %3941 = extractvalue { ptr, i32 } %3939, 1
  store i32 %3941, ptr %7, align 4
  br label %3974

3942:                                             ; preds = %3935
  call void @llvm.lifetime.start.p0(i64 8, ptr %536) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %3943 unwind label %3948

3943:                                             ; preds = %3942
  call void @llvm.lifetime.start.p0(i64 8, ptr %537) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %538) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %538, ptr noundef nonnull align 8 dereferenceable(16) %533, ptr noundef @.str.188, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %3944 unwind label %3952

3944:                                             ; preds = %3943
  %3945 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %538) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %537, i32 noundef 1, ptr noundef @.str.4, i32 noundef 185, ptr noundef %3945)
          to label %3946 unwind label %3956

3946:                                             ; preds = %3944
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %537, ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %3947 unwind label %3960

3947:                                             ; preds = %3946
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %538) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %536) #7
  br label %3967

3948:                                             ; preds = %3942
  %3949 = landingpad { ptr, i32 }
          cleanup
  %3950 = extractvalue { ptr, i32 } %3949, 0
  store ptr %3950, ptr %6, align 8
  %3951 = extractvalue { ptr, i32 } %3949, 1
  store i32 %3951, ptr %7, align 4
  br label %3966

3952:                                             ; preds = %3943
  %3953 = landingpad { ptr, i32 }
          cleanup
  %3954 = extractvalue { ptr, i32 } %3953, 0
  store ptr %3954, ptr %6, align 8
  %3955 = extractvalue { ptr, i32 } %3953, 1
  store i32 %3955, ptr %7, align 4
  br label %3965

3956:                                             ; preds = %3944
  %3957 = landingpad { ptr, i32 }
          cleanup
  %3958 = extractvalue { ptr, i32 } %3957, 0
  store ptr %3958, ptr %6, align 8
  %3959 = extractvalue { ptr, i32 } %3957, 1
  store i32 %3959, ptr %7, align 4
  br label %3964

3960:                                             ; preds = %3946
  %3961 = landingpad { ptr, i32 }
          cleanup
  %3962 = extractvalue { ptr, i32 } %3961, 0
  store ptr %3962, ptr %6, align 8
  %3963 = extractvalue { ptr, i32 } %3961, 1
  store i32 %3963, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %537) #7
  br label %3964

3964:                                             ; preds = %3960, %3956
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %538) #7
  br label %3965

3965:                                             ; preds = %3964, %3952
  call void @llvm.lifetime.end.p0(i64 32, ptr %538) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %536) #7
  br label %3966

3966:                                             ; preds = %3965, %3948
  call void @llvm.lifetime.end.p0(i64 8, ptr %536) #7
  br label %3974

3967:                                             ; preds = %3947, %3936
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %533) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %539) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %540) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %541) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %541, ptr noundef @.str.90)
  %3968 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %541)
  %3969 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %3968)
  %3970 = zext i1 %3969 to i8
  store i8 %3970, ptr %540, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %539, ptr noundef nonnull align 1 dereferenceable(1) %540, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %541) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %540) #7
  %3971 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %539)
          to label %3972 unwind label %3975

3972:                                             ; preds = %3967
  br i1 %3971, label %3973, label %3979

3973:                                             ; preds = %3972
  br label %4004

3974:                                             ; preds = %3966, %3938
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %533) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %533) #7
  br label %4918

3975:                                             ; preds = %3967
  %3976 = landingpad { ptr, i32 }
          cleanup
  %3977 = extractvalue { ptr, i32 } %3976, 0
  store ptr %3977, ptr %6, align 8
  %3978 = extractvalue { ptr, i32 } %3976, 1
  store i32 %3978, ptr %7, align 4
  br label %4012

3979:                                             ; preds = %3972
  call void @llvm.lifetime.start.p0(i64 8, ptr %542) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %542)
          to label %3980 unwind label %3985

3980:                                             ; preds = %3979
  call void @llvm.lifetime.start.p0(i64 8, ptr %543) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %544) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %544, ptr noundef nonnull align 8 dereferenceable(16) %539, ptr noundef @.str.189, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %3981 unwind label %3989

3981:                                             ; preds = %3980
  %3982 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %544) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %543, i32 noundef 1, ptr noundef @.str.4, i32 noundef 186, ptr noundef %3982)
          to label %3983 unwind label %3993

3983:                                             ; preds = %3981
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef nonnull align 8 dereferenceable(8) %542)
          to label %3984 unwind label %3997

3984:                                             ; preds = %3983
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %543) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %544) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %544) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %543) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %542) #7
  br label %4004

3985:                                             ; preds = %3979
  %3986 = landingpad { ptr, i32 }
          cleanup
  %3987 = extractvalue { ptr, i32 } %3986, 0
  store ptr %3987, ptr %6, align 8
  %3988 = extractvalue { ptr, i32 } %3986, 1
  store i32 %3988, ptr %7, align 4
  br label %4003

3989:                                             ; preds = %3980
  %3990 = landingpad { ptr, i32 }
          cleanup
  %3991 = extractvalue { ptr, i32 } %3990, 0
  store ptr %3991, ptr %6, align 8
  %3992 = extractvalue { ptr, i32 } %3990, 1
  store i32 %3992, ptr %7, align 4
  br label %4002

3993:                                             ; preds = %3981
  %3994 = landingpad { ptr, i32 }
          cleanup
  %3995 = extractvalue { ptr, i32 } %3994, 0
  store ptr %3995, ptr %6, align 8
  %3996 = extractvalue { ptr, i32 } %3994, 1
  store i32 %3996, ptr %7, align 4
  br label %4001

3997:                                             ; preds = %3983
  %3998 = landingpad { ptr, i32 }
          cleanup
  %3999 = extractvalue { ptr, i32 } %3998, 0
  store ptr %3999, ptr %6, align 8
  %4000 = extractvalue { ptr, i32 } %3998, 1
  store i32 %4000, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %543) #7
  br label %4001

4001:                                             ; preds = %3997, %3993
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %544) #7
  br label %4002

4002:                                             ; preds = %4001, %3989
  call void @llvm.lifetime.end.p0(i64 32, ptr %544) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %543) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %542) #7
  br label %4003

4003:                                             ; preds = %4002, %3985
  call void @llvm.lifetime.end.p0(i64 8, ptr %542) #7
  br label %4012

4004:                                             ; preds = %3984, %3973
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %539) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %539) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %545) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %546) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %547) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %547, ptr noundef @.str.190)
  %4005 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %547)
  %4006 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %4005)
  %4007 = xor i1 %4006, true
  %4008 = zext i1 %4007 to i8
  store i8 %4008, ptr %546, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %545, ptr noundef nonnull align 1 dereferenceable(1) %546, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %547) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %546) #7
  %4009 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %545)
          to label %4010 unwind label %4013

4010:                                             ; preds = %4004
  br i1 %4009, label %4011, label %4017

4011:                                             ; preds = %4010
  br label %4042

4012:                                             ; preds = %4003, %3975
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %539) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %539) #7
  br label %4918

4013:                                             ; preds = %4004
  %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 %4050

4017:                                             ; preds = %4010
  call void @llvm.lifetime.start.p0(i64 8, ptr %548) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %548)
          to label %4018 unwind label %4023

4018:                                             ; preds = %4017
  call void @llvm.lifetime.start.p0(i64 8, ptr %549) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %550) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %550, ptr noundef nonnull align 8 dereferenceable(16) %545, ptr noundef @.str.191, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %4019 unwind label %4027

4019:                                             ; preds = %4018
  %4020 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %550) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %549, i32 noundef 1, ptr noundef @.str.4, i32 noundef 188, ptr noundef %4020)
          to label %4021 unwind label %4031

4021:                                             ; preds = %4019
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef nonnull align 8 dereferenceable(8) %548)
          to label %4022 unwind label %4035

4022:                                             ; preds = %4021
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %549) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %550) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %548) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %548) #7
  br label %4042

4023:                                             ; preds = %4017
  %4024 = landingpad { ptr, i32 }
          cleanup
  %4025 = extractvalue { ptr, i32 } %4024, 0
  store ptr %4025, ptr %6, align 8
  %4026 = extractvalue { ptr, i32 } %4024, 1
  store i32 %4026, ptr %7, align 4
  br label %4041

4027:                                             ; preds = %4018
  %4028 = landingpad { ptr, i32 }
          cleanup
  %4029 = extractvalue { ptr, i32 } %4028, 0
  store ptr %4029, ptr %6, align 8
  %4030 = extractvalue { ptr, i32 } %4028, 1
  store i32 %4030, ptr %7, align 4
  br label %4040

4031:                                             ; preds = %4019
  %4032 = landingpad { ptr, i32 }
          cleanup
  %4033 = extractvalue { ptr, i32 } %4032, 0
  store ptr %4033, ptr %6, align 8
  %4034 = extractvalue { ptr, i32 } %4032, 1
  store i32 %4034, ptr %7, align 4
  br label %4039

4035:                                             ; preds = %4021
  %4036 = landingpad { ptr, i32 }
          cleanup
  %4037 = extractvalue { ptr, i32 } %4036, 0
  store ptr %4037, ptr %6, align 8
  %4038 = extractvalue { ptr, i32 } %4036, 1
  store i32 %4038, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %549) #7
  br label %4039

4039:                                             ; preds = %4035, %4031
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #7
  br label %4040

4040:                                             ; preds = %4039, %4027
  call void @llvm.lifetime.end.p0(i64 32, ptr %550) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %548) #7
  br label %4041

4041:                                             ; preds = %4040, %4023
  call void @llvm.lifetime.end.p0(i64 8, ptr %548) #7
  br label %4050

4042:                                             ; preds = %4022, %4011
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %545) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %545) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %551) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %552) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %553) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %553, ptr noundef @.str.190)
  %4043 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %553)
  %4044 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %4043)
  %4045 = xor i1 %4044, true
  %4046 = zext i1 %4045 to i8
  store i8 %4046, ptr %552, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %551, ptr noundef nonnull align 1 dereferenceable(1) %552, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %553) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %552) #7
  %4047 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %551)
          to label %4048 unwind label %4051

4048:                                             ; preds = %4042
  br i1 %4047, label %4049, label %4055

4049:                                             ; preds = %4048
  br label %4080

4050:                                             ; preds = %4041, %4013
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %545) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %545) #7
  br label %4918

4051:                                             ; preds = %4042
  %4052 = landingpad { ptr, i32 }
          cleanup
  %4053 = extractvalue { ptr, i32 } %4052, 0
  store ptr %4053, ptr %6, align 8
  %4054 = extractvalue { ptr, i32 } %4052, 1
  store i32 %4054, ptr %7, align 4
  br label %4087

4055:                                             ; preds = %4048
  call void @llvm.lifetime.start.p0(i64 8, ptr %554) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %554)
          to label %4056 unwind label %4061

4056:                                             ; preds = %4055
  call void @llvm.lifetime.start.p0(i64 8, ptr %555) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %556) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %556, ptr noundef nonnull align 8 dereferenceable(16) %551, ptr noundef @.str.192, ptr noundef @.str.15, ptr noundef @.str.14)
          to label %4057 unwind label %4065

4057:                                             ; preds = %4056
  %4058 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %556) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %555, i32 noundef 1, ptr noundef @.str.4, i32 noundef 189, ptr noundef %4058)
          to label %4059 unwind label %4069

4059:                                             ; preds = %4057
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %555, ptr noundef nonnull align 8 dereferenceable(8) %554)
          to label %4060 unwind label %4073

4060:                                             ; preds = %4059
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %555) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %556) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %555) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #7
  br label %4080

4061:                                             ; preds = %4055
  %4062 = landingpad { ptr, i32 }
          cleanup
  %4063 = extractvalue { ptr, i32 } %4062, 0
  store ptr %4063, ptr %6, align 8
  %4064 = extractvalue { ptr, i32 } %4062, 1
  store i32 %4064, ptr %7, align 4
  br label %4079

4065:                                             ; preds = %4056
  %4066 = landingpad { ptr, i32 }
          cleanup
  %4067 = extractvalue { ptr, i32 } %4066, 0
  store ptr %4067, ptr %6, align 8
  %4068 = extractvalue { ptr, i32 } %4066, 1
  store i32 %4068, ptr %7, align 4
  br label %4078

4069:                                             ; preds = %4057
  %4070 = landingpad { ptr, i32 }
          cleanup
  %4071 = extractvalue { ptr, i32 } %4070, 0
  store ptr %4071, ptr %6, align 8
  %4072 = extractvalue { ptr, i32 } %4070, 1
  store i32 %4072, ptr %7, align 4
  br label %4077

4073:                                             ; preds = %4059
  %4074 = landingpad { ptr, i32 }
          cleanup
  %4075 = extractvalue { ptr, i32 } %4074, 0
  store ptr %4075, ptr %6, align 8
  %4076 = extractvalue { ptr, i32 } %4074, 1
  store i32 %4076, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %555) #7
  br label %4077

4077:                                             ; preds = %4073, %4069
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #7
  br label %4078

4078:                                             ; preds = %4077, %4065
  call void @llvm.lifetime.end.p0(i64 32, ptr %556) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %555) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %554) #7
  br label %4079

4079:                                             ; preds = %4078, %4061
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #7
  br label %4087

4080:                                             ; preds = %4060, %4049
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %551) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %551) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %557) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %558) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %559) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %559, ptr noundef @.str.190)
  %4081 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %559)
  %4082 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %4081)
  %4083 = zext i1 %4082 to i8
  store i8 %4083, ptr %558, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %557, ptr noundef nonnull align 1 dereferenceable(1) %558, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %559) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %558) #7
  %4084 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %557)
          to label %4085 unwind label %4088

4085:                                             ; preds = %4080
  br i1 %4084, label %4086, label %4092

4086:                                             ; preds = %4085
  br label %4117

4087:                                             ; preds = %4079, %4051
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %551) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %551) #7
  br label %4918

4088:                                             ; preds = %4080
  %4089 = landingpad { ptr, i32 }
          cleanup
  %4090 = extractvalue { ptr, i32 } %4089, 0
  store ptr %4090, ptr %6, align 8
  %4091 = extractvalue { ptr, i32 } %4089, 1
  store i32 %4091, ptr %7, align 4
  br label %4124

4092:                                             ; preds = %4085
  call void @llvm.lifetime.start.p0(i64 8, ptr %560) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %560)
          to label %4093 unwind label %4098

4093:                                             ; preds = %4092
  call void @llvm.lifetime.start.p0(i64 8, ptr %561) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %562) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %562, ptr noundef nonnull align 8 dereferenceable(16) %557, ptr noundef @.str.193, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4094 unwind label %4102

4094:                                             ; preds = %4093
  %4095 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %562) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %561, i32 noundef 1, ptr noundef @.str.4, i32 noundef 190, ptr noundef %4095)
          to label %4096 unwind label %4106

4096:                                             ; preds = %4094
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef nonnull align 8 dereferenceable(8) %560)
          to label %4097 unwind label %4110

4097:                                             ; preds = %4096
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %562) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %561) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %560) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %560) #7
  br label %4117

4098:                                             ; preds = %4092
  %4099 = landingpad { ptr, i32 }
          cleanup
  %4100 = extractvalue { ptr, i32 } %4099, 0
  store ptr %4100, ptr %6, align 8
  %4101 = extractvalue { ptr, i32 } %4099, 1
  store i32 %4101, ptr %7, align 4
  br label %4116

4102:                                             ; preds = %4093
  %4103 = landingpad { ptr, i32 }
          cleanup
  %4104 = extractvalue { ptr, i32 } %4103, 0
  store ptr %4104, ptr %6, align 8
  %4105 = extractvalue { ptr, i32 } %4103, 1
  store i32 %4105, ptr %7, align 4
  br label %4115

4106:                                             ; preds = %4094
  %4107 = landingpad { ptr, i32 }
          cleanup
  %4108 = extractvalue { ptr, i32 } %4107, 0
  store ptr %4108, ptr %6, align 8
  %4109 = extractvalue { ptr, i32 } %4107, 1
  store i32 %4109, ptr %7, align 4
  br label %4114

4110:                                             ; preds = %4096
  %4111 = landingpad { ptr, i32 }
          cleanup
  %4112 = extractvalue { ptr, i32 } %4111, 0
  store ptr %4112, ptr %6, align 8
  %4113 = extractvalue { ptr, i32 } %4111, 1
  store i32 %4113, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %561) #7
  br label %4114

4114:                                             ; preds = %4110, %4106
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %562) #7
  br label %4115

4115:                                             ; preds = %4114, %4102
  call void @llvm.lifetime.end.p0(i64 32, ptr %562) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %561) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %560) #7
  br label %4116

4116:                                             ; preds = %4115, %4098
  call void @llvm.lifetime.end.p0(i64 8, ptr %560) #7
  br label %4124

4117:                                             ; preds = %4097, %4086
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %557) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %563) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %564) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %565) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %565, ptr noundef @.str.133)
  %4118 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %565)
  %4119 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8) %4118)
  %4120 = zext i1 %4119 to i8
  store i8 %4120, ptr %564, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %563, ptr noundef nonnull align 1 dereferenceable(1) %564, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %565) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %564) #7
  %4121 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %563)
          to label %4122 unwind label %4125

4122:                                             ; preds = %4117
  br i1 %4121, label %4123, label %4129

4123:                                             ; preds = %4122
  br label %4154

4124:                                             ; preds = %4116, %4088
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %557) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %557) #7
  br label %4918

4125:                                             ; preds = %4117
  %4126 = landingpad { ptr, i32 }
          cleanup
  %4127 = extractvalue { ptr, i32 } %4126, 0
  store ptr %4127, ptr %6, align 8
  %4128 = extractvalue { ptr, i32 } %4126, 1
  store i32 %4128, ptr %7, align 4
  br label %4161

4129:                                             ; preds = %4122
  call void @llvm.lifetime.start.p0(i64 8, ptr %566) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %4130 unwind label %4135

4130:                                             ; preds = %4129
  call void @llvm.lifetime.start.p0(i64 8, ptr %567) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %568) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %568, ptr noundef nonnull align 8 dereferenceable(16) %563, ptr noundef @.str.194, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4131 unwind label %4139

4131:                                             ; preds = %4130
  %4132 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %568) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %567, i32 noundef 1, ptr noundef @.str.4, i32 noundef 193, ptr noundef %4132)
          to label %4133 unwind label %4143

4133:                                             ; preds = %4131
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %4134 unwind label %4147

4134:                                             ; preds = %4133
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %568) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %568) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %567) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %566) #7
  br label %4154

4135:                                             ; preds = %4129
  %4136 = landingpad { ptr, i32 }
          cleanup
  %4137 = extractvalue { ptr, i32 } %4136, 0
  store ptr %4137, ptr %6, align 8
  %4138 = extractvalue { ptr, i32 } %4136, 1
  store i32 %4138, ptr %7, align 4
  br label %4153

4139:                                             ; preds = %4130
  %4140 = landingpad { ptr, i32 }
          cleanup
  %4141 = extractvalue { ptr, i32 } %4140, 0
  store ptr %4141, ptr %6, align 8
  %4142 = extractvalue { ptr, i32 } %4140, 1
  store i32 %4142, ptr %7, align 4
  br label %4152

4143:                                             ; preds = %4131
  %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 %4151

4147:                                             ; preds = %4133
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %567) #7
  br label %4151

4151:                                             ; preds = %4147, %4143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %568) #7
  br label %4152

4152:                                             ; preds = %4151, %4139
  call void @llvm.lifetime.end.p0(i64 32, ptr %568) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %567) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %566) #7
  br label %4153

4153:                                             ; preds = %4152, %4135
  call void @llvm.lifetime.end.p0(i64 8, ptr %566) #7
  br label %4161

4154:                                             ; preds = %4134, %4123
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %563) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %569) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %570) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %571) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %571, ptr noundef @.str.195)
  %4155 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %571)
  %4156 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8) %4155)
  %4157 = zext i1 %4156 to i8
  store i8 %4157, ptr %570, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %569, ptr noundef nonnull align 1 dereferenceable(1) %570, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %571) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %570) #7
  %4158 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %569)
          to label %4159 unwind label %4162

4159:                                             ; preds = %4154
  br i1 %4158, label %4160, label %4166

4160:                                             ; preds = %4159
  br label %4191

4161:                                             ; preds = %4153, %4125
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %563) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %563) #7
  br label %4918

4162:                                             ; preds = %4154
  %4163 = landingpad { ptr, i32 }
          cleanup
  %4164 = extractvalue { ptr, i32 } %4163, 0
  store ptr %4164, ptr %6, align 8
  %4165 = extractvalue { ptr, i32 } %4163, 1
  store i32 %4165, ptr %7, align 4
  br label %4198

4166:                                             ; preds = %4159
  call void @llvm.lifetime.start.p0(i64 8, ptr %572) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %572)
          to label %4167 unwind label %4172

4167:                                             ; preds = %4166
  call void @llvm.lifetime.start.p0(i64 8, ptr %573) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %574) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %574, ptr noundef nonnull align 8 dereferenceable(16) %569, ptr noundef @.str.196, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4168 unwind label %4176

4168:                                             ; preds = %4167
  %4169 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %574) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %573, i32 noundef 1, ptr noundef @.str.4, i32 noundef 194, ptr noundef %4169)
          to label %4170 unwind label %4180

4170:                                             ; preds = %4168
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %573, ptr noundef nonnull align 8 dereferenceable(8) %572)
          to label %4171 unwind label %4184

4171:                                             ; preds = %4170
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %573) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %573) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %572) #7
  br label %4191

4172:                                             ; preds = %4166
  %4173 = landingpad { ptr, i32 }
          cleanup
  %4174 = extractvalue { ptr, i32 } %4173, 0
  store ptr %4174, ptr %6, align 8
  %4175 = extractvalue { ptr, i32 } %4173, 1
  store i32 %4175, ptr %7, align 4
  br label %4190

4176:                                             ; preds = %4167
  %4177 = landingpad { ptr, i32 }
          cleanup
  %4178 = extractvalue { ptr, i32 } %4177, 0
  store ptr %4178, ptr %6, align 8
  %4179 = extractvalue { ptr, i32 } %4177, 1
  store i32 %4179, ptr %7, align 4
  br label %4189

4180:                                             ; preds = %4168
  %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 %4188

4184:                                             ; preds = %4170
  %4185 = landingpad { ptr, i32 }
          cleanup
  %4186 = extractvalue { ptr, i32 } %4185, 0
  store ptr %4186, ptr %6, align 8
  %4187 = extractvalue { ptr, i32 } %4185, 1
  store i32 %4187, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %573) #7
  br label %4188

4188:                                             ; preds = %4184, %4180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #7
  br label %4189

4189:                                             ; preds = %4188, %4176
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %573) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %572) #7
  br label %4190

4190:                                             ; preds = %4189, %4172
  call void @llvm.lifetime.end.p0(i64 8, ptr %572) #7
  br label %4198

4191:                                             ; preds = %4171, %4160
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %569) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %569) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %575) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %576) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %577) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %577, ptr noundef @.str.135)
  %4192 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %577)
  %4193 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8) %4192)
  %4194 = zext i1 %4193 to i8
  store i8 %4194, ptr %576, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %575, ptr noundef nonnull align 1 dereferenceable(1) %576, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %577) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %576) #7
  %4195 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %575)
          to label %4196 unwind label %4199

4196:                                             ; preds = %4191
  br i1 %4195, label %4197, label %4203

4197:                                             ; preds = %4196
  br label %4228

4198:                                             ; preds = %4190, %4162
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %569) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %569) #7
  br label %4918

4199:                                             ; preds = %4191
  %4200 = landingpad { ptr, i32 }
          cleanup
  %4201 = extractvalue { ptr, i32 } %4200, 0
  store ptr %4201, ptr %6, align 8
  %4202 = extractvalue { ptr, i32 } %4200, 1
  store i32 %4202, ptr %7, align 4
  br label %4235

4203:                                             ; preds = %4196
  call void @llvm.lifetime.start.p0(i64 8, ptr %578) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %4204 unwind label %4209

4204:                                             ; preds = %4203
  call void @llvm.lifetime.start.p0(i64 8, ptr %579) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %580) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %580, ptr noundef nonnull align 8 dereferenceable(16) %575, ptr noundef @.str.197, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4205 unwind label %4213

4205:                                             ; preds = %4204
  %4206 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %580) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %579, i32 noundef 1, ptr noundef @.str.4, i32 noundef 196, ptr noundef %4206)
          to label %4207 unwind label %4217

4207:                                             ; preds = %4205
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %4208 unwind label %4221

4208:                                             ; preds = %4207
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %579) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %580) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %580) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %579) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %578) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %578) #7
  br label %4228

4209:                                             ; preds = %4203
  %4210 = landingpad { ptr, i32 }
          cleanup
  %4211 = extractvalue { ptr, i32 } %4210, 0
  store ptr %4211, ptr %6, align 8
  %4212 = extractvalue { ptr, i32 } %4210, 1
  store i32 %4212, ptr %7, align 4
  br label %4227

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 %4226

4217:                                             ; preds = %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
  br label %4225

4221:                                             ; preds = %4207
  %4222 = landingpad { ptr, i32 }
          cleanup
  %4223 = extractvalue { ptr, i32 } %4222, 0
  store ptr %4223, ptr %6, align 8
  %4224 = extractvalue { ptr, i32 } %4222, 1
  store i32 %4224, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %579) #7
  br label %4225

4225:                                             ; preds = %4221, %4217
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %580) #7
  br label %4226

4226:                                             ; preds = %4225, %4213
  call void @llvm.lifetime.end.p0(i64 32, ptr %580) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %579) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %578) #7
  br label %4227

4227:                                             ; preds = %4226, %4209
  call void @llvm.lifetime.end.p0(i64 8, ptr %578) #7
  br label %4235

4228:                                             ; preds = %4208, %4197
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %575) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %575) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %581) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %582) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %583) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %583, ptr noundef @.str.198)
  %4229 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %583)
  %4230 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8) %4229)
  %4231 = zext i1 %4230 to i8
  store i8 %4231, ptr %582, align 1, !tbaa !9
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %581, ptr noundef nonnull align 1 dereferenceable(1) %582, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr %583) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %582) #7
  %4232 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %581)
          to label %4233 unwind label %4236

4233:                                             ; preds = %4228
  br i1 %4232, label %4234, label %4240

4234:                                             ; preds = %4233
  br label %4265

4235:                                             ; preds = %4227, %4199
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %575) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %575) #7
  br label %4918

4236:                                             ; preds = %4228
  %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 %4269

4240:                                             ; preds = %4233
  call void @llvm.lifetime.start.p0(i64 8, ptr %584) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %4241 unwind label %4246

4241:                                             ; preds = %4240
  call void @llvm.lifetime.start.p0(i64 8, ptr %585) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %586) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %586, ptr noundef nonnull align 8 dereferenceable(16) %581, ptr noundef @.str.199, ptr noundef @.str.14, ptr noundef @.str.15)
          to label %4242 unwind label %4250

4242:                                             ; preds = %4241
  %4243 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %586) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %585, i32 noundef 1, ptr noundef @.str.4, i32 noundef 197, ptr noundef %4243)
          to label %4244 unwind label %4254

4244:                                             ; preds = %4242
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %585, ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %4245 unwind label %4258

4245:                                             ; preds = %4244
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %586) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %586) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %585) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %584) #7
  br label %4265

4246:                                             ; preds = %4240
  %4247 = landingpad { ptr, i32 }
          cleanup
  %4248 = extractvalue { ptr, i32 } %4247, 0
  store ptr %4248, ptr %6, align 8
  %4249 = extractvalue { ptr, i32 } %4247, 1
  store i32 %4249, ptr %7, align 4
  br label %4264

4250:                                             ; preds = %4241
  %4251 = landingpad { ptr, i32 }
          cleanup
  %4252 = extractvalue { ptr, i32 } %4251, 0
  store ptr %4252, ptr %6, align 8
  %4253 = extractvalue { ptr, i32 } %4251, 1
  store i32 %4253, ptr %7, align 4
  br label %4263

4254:                                             ; preds = %4242
  %4255 = landingpad { ptr, i32 }
          cleanup
  %4256 = extractvalue { ptr, i32 } %4255, 0
  store ptr %4256, ptr %6, align 8
  %4257 = extractvalue { ptr, i32 } %4255, 1
  store i32 %4257, ptr %7, align 4
  br label %4262

4258:                                             ; preds = %4244
  %4259 = landingpad { ptr, i32 }
          cleanup
  %4260 = extractvalue { ptr, i32 } %4259, 0
  store ptr %4260, ptr %6, align 8
  %4261 = extractvalue { ptr, i32 } %4259, 1
  store i32 %4261, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %585) #7
  br label %4262

4262:                                             ; preds = %4258, %4254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %586) #7
  br label %4263

4263:                                             ; preds = %4262, %4250
  call void @llvm.lifetime.end.p0(i64 32, ptr %586) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %585) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %584) #7
  br label %4264

4264:                                             ; preds = %4263, %4246
  call void @llvm.lifetime.end.p0(i64 8, ptr %584) #7
  br label %4269

4265:                                             ; preds = %4245, %4234
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %581) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %581) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %587) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %588) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %588, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %589) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %589, ptr noundef @.str.7)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %587, ptr noundef @.str.53, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %588, ptr noundef nonnull align 4 dereferenceable(28) %589)
  call void @llvm.lifetime.end.p0(i64 28, ptr %589) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %588) #7
  %4266 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %587)
          to label %4267 unwind label %4270

4267:                                             ; preds = %4265
  br i1 %4266, label %4268, label %4274

4268:                                             ; preds = %4267
  br label %4294

4269:                                             ; preds = %4264, %4236
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %581) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %581) #7
  br label %4918

4270:                                             ; preds = %4265
  %4271 = landingpad { ptr, i32 }
          cleanup
  %4272 = extractvalue { ptr, i32 } %4271, 0
  store ptr %4272, ptr %6, align 8
  %4273 = extractvalue { ptr, i32 } %4271, 1
  store i32 %4273, ptr %7, align 4
  br label %4298

4274:                                             ; preds = %4267
  call void @llvm.lifetime.start.p0(i64 8, ptr %590) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %590)
          to label %4275 unwind label %4280

4275:                                             ; preds = %4274
  call void @llvm.lifetime.start.p0(i64 8, ptr %591) #7
  %4276 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %587)
          to label %4277 unwind label %4284

4277:                                             ; preds = %4275
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %591, i32 noundef 1, ptr noundef @.str.4, i32 noundef 200, ptr noundef %4276)
          to label %4278 unwind label %4284

4278:                                             ; preds = %4277
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull align 8 dereferenceable(8) %590)
          to label %4279 unwind label %4288

4279:                                             ; preds = %4278
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %591) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %591) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %590) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %590) #7
  br label %4294

4280:                                             ; preds = %4274
  %4281 = landingpad { ptr, i32 }
          cleanup
  %4282 = extractvalue { ptr, i32 } %4281, 0
  store ptr %4282, ptr %6, align 8
  %4283 = extractvalue { ptr, i32 } %4281, 1
  store i32 %4283, ptr %7, align 4
  br label %4293

4284:                                             ; preds = %4277, %4275
  %4285 = landingpad { ptr, i32 }
          cleanup
  %4286 = extractvalue { ptr, i32 } %4285, 0
  store ptr %4286, ptr %6, align 8
  %4287 = extractvalue { ptr, i32 } %4285, 1
  store i32 %4287, ptr %7, align 4
  br label %4292

4288:                                             ; preds = %4278
  %4289 = landingpad { ptr, i32 }
          cleanup
  %4290 = extractvalue { ptr, i32 } %4289, 0
  store ptr %4290, ptr %6, align 8
  %4291 = extractvalue { ptr, i32 } %4289, 1
  store i32 %4291, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %591) #7
  br label %4292

4292:                                             ; preds = %4288, %4284
  call void @llvm.lifetime.end.p0(i64 8, ptr %591) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %590) #7
  br label %4293

4293:                                             ; preds = %4292, %4280
  call void @llvm.lifetime.end.p0(i64 8, ptr %590) #7
  br label %4298

4294:                                             ; preds = %4279, %4268
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %587) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %587) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %592) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %593) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %593, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %594) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %594, ptr noundef @.str.45)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %592, ptr noundef @.str.44, ptr noundef @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %593, ptr noundef nonnull align 4 dereferenceable(28) %594)
  call void @llvm.lifetime.end.p0(i64 28, ptr %594) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %593) #7
  %4295 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %592)
          to label %4296 unwind label %4299

4296:                                             ; preds = %4294
  br i1 %4295, label %4297, label %4303

4297:                                             ; preds = %4296
  br label %4323

4298:                                             ; preds = %4293, %4270
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %587) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %587) #7
  br label %4918

4299:                                             ; preds = %4294
  %4300 = landingpad { ptr, i32 }
          cleanup
  %4301 = extractvalue { ptr, i32 } %4300, 0
  store ptr %4301, ptr %6, align 8
  %4302 = extractvalue { ptr, i32 } %4300, 1
  store i32 %4302, ptr %7, align 4
  br label %4327

4303:                                             ; preds = %4296
  call void @llvm.lifetime.start.p0(i64 8, ptr %595) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %595)
          to label %4304 unwind label %4309

4304:                                             ; preds = %4303
  call void @llvm.lifetime.start.p0(i64 8, ptr %596) #7
  %4305 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %592)
          to label %4306 unwind label %4313

4306:                                             ; preds = %4304
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %596, i32 noundef 1, ptr noundef @.str.4, i32 noundef 201, ptr noundef %4305)
          to label %4307 unwind label %4313

4307:                                             ; preds = %4306
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %596, ptr noundef nonnull align 8 dereferenceable(8) %595)
          to label %4308 unwind label %4317

4308:                                             ; preds = %4307
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %596) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %596) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #7
  br label %4323

4309:                                             ; preds = %4303
  %4310 = landingpad { ptr, i32 }
          cleanup
  %4311 = extractvalue { ptr, i32 } %4310, 0
  store ptr %4311, ptr %6, align 8
  %4312 = extractvalue { ptr, i32 } %4310, 1
  store i32 %4312, ptr %7, align 4
  br label %4322

4313:                                             ; preds = %4306, %4304
  %4314 = landingpad { ptr, i32 }
          cleanup
  %4315 = extractvalue { ptr, i32 } %4314, 0
  store ptr %4315, ptr %6, align 8
  %4316 = extractvalue { ptr, i32 } %4314, 1
  store i32 %4316, ptr %7, align 4
  br label %4321

4317:                                             ; preds = %4307
  %4318 = landingpad { ptr, i32 }
          cleanup
  %4319 = extractvalue { ptr, i32 } %4318, 0
  store ptr %4319, ptr %6, align 8
  %4320 = extractvalue { ptr, i32 } %4318, 1
  store i32 %4320, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %596) #7
  br label %4321

4321:                                             ; preds = %4317, %4313
  call void @llvm.lifetime.end.p0(i64 8, ptr %596) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %595) #7
  br label %4322

4322:                                             ; preds = %4321, %4309
  call void @llvm.lifetime.end.p0(i64 8, ptr %595) #7
  br label %4327

4323:                                             ; preds = %4308, %4297
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %592) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %592) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %597) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %598) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %598, ptr noundef @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr %599) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %599, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %597, ptr noundef @.str.50, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %598, ptr noundef nonnull align 4 dereferenceable(28) %599)
  call void @llvm.lifetime.end.p0(i64 28, ptr %599) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %598) #7
  %4324 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %597)
          to label %4325 unwind label %4328

4325:                                             ; preds = %4323
  br i1 %4324, label %4326, label %4332

4326:                                             ; preds = %4325
  br label %4352

4327:                                             ; preds = %4322, %4299
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %592) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %592) #7
  br label %4918

4328:                                             ; preds = %4323
  %4329 = landingpad { ptr, i32 }
          cleanup
  %4330 = extractvalue { ptr, i32 } %4329, 0
  store ptr %4330, ptr %6, align 8
  %4331 = extractvalue { ptr, i32 } %4329, 1
  store i32 %4331, ptr %7, align 4
  br label %4356

4332:                                             ; preds = %4325
  call void @llvm.lifetime.start.p0(i64 8, ptr %600) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %600)
          to label %4333 unwind label %4338

4333:                                             ; preds = %4332
  call void @llvm.lifetime.start.p0(i64 8, ptr %601) #7
  %4334 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %597)
          to label %4335 unwind label %4342

4335:                                             ; preds = %4333
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %601, i32 noundef 1, ptr noundef @.str.4, i32 noundef 203, ptr noundef %4334)
          to label %4336 unwind label %4342

4336:                                             ; preds = %4335
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %601, ptr noundef nonnull align 8 dereferenceable(8) %600)
          to label %4337 unwind label %4346

4337:                                             ; preds = %4336
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %601) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %601) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %600) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %600) #7
  br label %4352

4338:                                             ; preds = %4332
  %4339 = landingpad { ptr, i32 }
          cleanup
  %4340 = extractvalue { ptr, i32 } %4339, 0
  store ptr %4340, ptr %6, align 8
  %4341 = extractvalue { ptr, i32 } %4339, 1
  store i32 %4341, ptr %7, align 4
  br label %4351

4342:                                             ; preds = %4335, %4333
  %4343 = landingpad { ptr, i32 }
          cleanup
  %4344 = extractvalue { ptr, i32 } %4343, 0
  store ptr %4344, ptr %6, align 8
  %4345 = extractvalue { ptr, i32 } %4343, 1
  store i32 %4345, ptr %7, align 4
  br label %4350

4346:                                             ; preds = %4336
  %4347 = landingpad { ptr, i32 }
          cleanup
  %4348 = extractvalue { ptr, i32 } %4347, 0
  store ptr %4348, ptr %6, align 8
  %4349 = extractvalue { ptr, i32 } %4347, 1
  store i32 %4349, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %601) #7
  br label %4350

4350:                                             ; preds = %4346, %4342
  call void @llvm.lifetime.end.p0(i64 8, ptr %601) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %600) #7
  br label %4351

4351:                                             ; preds = %4350, %4338
  call void @llvm.lifetime.end.p0(i64 8, ptr %600) #7
  br label %4356

4352:                                             ; preds = %4337, %4326
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %597) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %597) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %602) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %603) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %603, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %604) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %604, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %602, ptr noundef @.str.44, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %603, ptr noundef nonnull align 4 dereferenceable(28) %604)
  call void @llvm.lifetime.end.p0(i64 28, ptr %604) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %603) #7
  %4353 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %602)
          to label %4354 unwind label %4357

4354:                                             ; preds = %4352
  br i1 %4353, label %4355, label %4361

4355:                                             ; preds = %4354
  br label %4381

4356:                                             ; preds = %4351, %4328
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %597) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %597) #7
  br label %4918

4357:                                             ; preds = %4352
  %4358 = landingpad { ptr, i32 }
          cleanup
  %4359 = extractvalue { ptr, i32 } %4358, 0
  store ptr %4359, ptr %6, align 8
  %4360 = extractvalue { ptr, i32 } %4358, 1
  store i32 %4360, ptr %7, align 4
  br label %4385

4361:                                             ; preds = %4354
  call void @llvm.lifetime.start.p0(i64 8, ptr %605) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %4362 unwind label %4367

4362:                                             ; preds = %4361
  call void @llvm.lifetime.start.p0(i64 8, ptr %606) #7
  %4363 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %602)
          to label %4364 unwind label %4371

4364:                                             ; preds = %4362
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %606, i32 noundef 1, ptr noundef @.str.4, i32 noundef 204, ptr noundef %4363)
          to label %4365 unwind label %4371

4365:                                             ; preds = %4364
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %4366 unwind label %4375

4366:                                             ; preds = %4365
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %606) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %606) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %605) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %605) #7
  br label %4381

4367:                                             ; preds = %4361
  %4368 = landingpad { ptr, i32 }
          cleanup
  %4369 = extractvalue { ptr, i32 } %4368, 0
  store ptr %4369, ptr %6, align 8
  %4370 = extractvalue { ptr, i32 } %4368, 1
  store i32 %4370, ptr %7, align 4
  br label %4380

4371:                                             ; preds = %4364, %4362
  %4372 = landingpad { ptr, i32 }
          cleanup
  %4373 = extractvalue { ptr, i32 } %4372, 0
  store ptr %4373, ptr %6, align 8
  %4374 = extractvalue { ptr, i32 } %4372, 1
  store i32 %4374, ptr %7, align 4
  br label %4379

4375:                                             ; preds = %4365
  %4376 = landingpad { ptr, i32 }
          cleanup
  %4377 = extractvalue { ptr, i32 } %4376, 0
  store ptr %4377, ptr %6, align 8
  %4378 = extractvalue { ptr, i32 } %4376, 1
  store i32 %4378, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %606) #7
  br label %4379

4379:                                             ; preds = %4375, %4371
  call void @llvm.lifetime.end.p0(i64 8, ptr %606) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %605) #7
  br label %4380

4380:                                             ; preds = %4379, %4367
  call void @llvm.lifetime.end.p0(i64 8, ptr %605) #7
  br label %4385

4381:                                             ; preds = %4366, %4355
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %602) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %602) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %607) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %608) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %608, ptr noundef @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr %609) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %609, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %607, ptr noundef @.str.50, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %608, ptr noundef nonnull align 4 dereferenceable(28) %609)
  call void @llvm.lifetime.end.p0(i64 28, ptr %609) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %608) #7
  %4382 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %607)
          to label %4383 unwind label %4386

4383:                                             ; preds = %4381
  br i1 %4382, label %4384, label %4390

4384:                                             ; preds = %4383
  br label %4410

4385:                                             ; preds = %4380, %4357
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %602) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %602) #7
  br label %4918

4386:                                             ; preds = %4381
  %4387 = landingpad { ptr, i32 }
          cleanup
  %4388 = extractvalue { ptr, i32 } %4387, 0
  store ptr %4388, ptr %6, align 8
  %4389 = extractvalue { ptr, i32 } %4387, 1
  store i32 %4389, ptr %7, align 4
  br label %4414

4390:                                             ; preds = %4383
  call void @llvm.lifetime.start.p0(i64 8, ptr %610) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %4391 unwind label %4396

4391:                                             ; preds = %4390
  call void @llvm.lifetime.start.p0(i64 8, ptr %611) #7
  %4392 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %607)
          to label %4393 unwind label %4400

4393:                                             ; preds = %4391
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %611, i32 noundef 1, ptr noundef @.str.4, i32 noundef 206, ptr noundef %4392)
          to label %4394 unwind label %4400

4394:                                             ; preds = %4393
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %4395 unwind label %4404

4395:                                             ; preds = %4394
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #7
  br label %4410

4396:                                             ; preds = %4390
  %4397 = landingpad { ptr, i32 }
          cleanup
  %4398 = extractvalue { ptr, i32 } %4397, 0
  store ptr %4398, ptr %6, align 8
  %4399 = extractvalue { ptr, i32 } %4397, 1
  store i32 %4399, ptr %7, align 4
  br label %4409

4400:                                             ; preds = %4393, %4391
  %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 %4408

4404:                                             ; preds = %4394
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #7
  br label %4408

4408:                                             ; preds = %4404, %4400
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %610) #7
  br label %4409

4409:                                             ; preds = %4408, %4396
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #7
  br label %4414

4410:                                             ; preds = %4395, %4384
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %607) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %607) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %612) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %613) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %613, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %614) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %614, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %612, ptr noundef @.str.44, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %613, ptr noundef nonnull align 4 dereferenceable(28) %614)
  call void @llvm.lifetime.end.p0(i64 28, ptr %614) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %613) #7
  %4411 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %612)
          to label %4412 unwind label %4415

4412:                                             ; preds = %4410
  br i1 %4411, label %4413, label %4419

4413:                                             ; preds = %4412
  br label %4439

4414:                                             ; preds = %4409, %4386
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %607) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %607) #7
  br label %4918

4415:                                             ; preds = %4410
  %4416 = landingpad { ptr, i32 }
          cleanup
  %4417 = extractvalue { ptr, i32 } %4416, 0
  store ptr %4417, ptr %6, align 8
  %4418 = extractvalue { ptr, i32 } %4416, 1
  store i32 %4418, ptr %7, align 4
  br label %4443

4419:                                             ; preds = %4412
  call void @llvm.lifetime.start.p0(i64 8, ptr %615) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %615)
          to label %4420 unwind label %4425

4420:                                             ; preds = %4419
  call void @llvm.lifetime.start.p0(i64 8, ptr %616) #7
  %4421 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %612)
          to label %4422 unwind label %4429

4422:                                             ; preds = %4420
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %616, i32 noundef 1, ptr noundef @.str.4, i32 noundef 207, ptr noundef %4421)
          to label %4423 unwind label %4429

4423:                                             ; preds = %4422
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 8 dereferenceable(8) %615)
          to label %4424 unwind label %4433

4424:                                             ; preds = %4423
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %616) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %616) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #7
  br label %4439

4425:                                             ; preds = %4419
  %4426 = landingpad { ptr, i32 }
          cleanup
  %4427 = extractvalue { ptr, i32 } %4426, 0
  store ptr %4427, ptr %6, align 8
  %4428 = extractvalue { ptr, i32 } %4426, 1
  store i32 %4428, ptr %7, align 4
  br label %4438

4429:                                             ; preds = %4422, %4420
  %4430 = landingpad { ptr, i32 }
          cleanup
  %4431 = extractvalue { ptr, i32 } %4430, 0
  store ptr %4431, ptr %6, align 8
  %4432 = extractvalue { ptr, i32 } %4430, 1
  store i32 %4432, ptr %7, align 4
  br label %4437

4433:                                             ; preds = %4423
  %4434 = landingpad { ptr, i32 }
          cleanup
  %4435 = extractvalue { ptr, i32 } %4434, 0
  store ptr %4435, ptr %6, align 8
  %4436 = extractvalue { ptr, i32 } %4434, 1
  store i32 %4436, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %616) #7
  br label %4437

4437:                                             ; preds = %4433, %4429
  call void @llvm.lifetime.end.p0(i64 8, ptr %616) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #7
  br label %4438

4438:                                             ; preds = %4437, %4425
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #7
  br label %4443

4439:                                             ; preds = %4424, %4413
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %612) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %612) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %617) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %618) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %618, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %619) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %619, ptr noundef @.str.51)
  call void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %617, ptr noundef @.str.53, ptr noundef @.str.50, ptr noundef nonnull align 4 dereferenceable(28) %618, ptr noundef nonnull align 4 dereferenceable(28) %619)
  call void @llvm.lifetime.end.p0(i64 28, ptr %619) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %618) #7
  %4440 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %617)
          to label %4441 unwind label %4444

4441:                                             ; preds = %4439
  br i1 %4440, label %4442, label %4448

4442:                                             ; preds = %4441
  br label %4468

4443:                                             ; preds = %4438, %4415
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %612) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %612) #7
  br label %4918

4444:                                             ; preds = %4439
  %4445 = landingpad { ptr, i32 }
          cleanup
  %4446 = extractvalue { ptr, i32 } %4445, 0
  store ptr %4446, ptr %6, align 8
  %4447 = extractvalue { ptr, i32 } %4445, 1
  store i32 %4447, ptr %7, align 4
  br label %4472

4448:                                             ; preds = %4441
  call void @llvm.lifetime.start.p0(i64 8, ptr %620) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %620)
          to label %4449 unwind label %4454

4449:                                             ; preds = %4448
  call void @llvm.lifetime.start.p0(i64 8, ptr %621) #7
  %4450 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %617)
          to label %4451 unwind label %4458

4451:                                             ; preds = %4449
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %621, i32 noundef 1, ptr noundef @.str.4, i32 noundef 209, ptr noundef %4450)
          to label %4452 unwind label %4458

4452:                                             ; preds = %4451
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %621, ptr noundef nonnull align 8 dereferenceable(8) %620)
          to label %4453 unwind label %4462

4453:                                             ; preds = %4452
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %621) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %621) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %620) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %620) #7
  br label %4468

4454:                                             ; preds = %4448
  %4455 = landingpad { ptr, i32 }
          cleanup
  %4456 = extractvalue { ptr, i32 } %4455, 0
  store ptr %4456, ptr %6, align 8
  %4457 = extractvalue { ptr, i32 } %4455, 1
  store i32 %4457, ptr %7, align 4
  br label %4467

4458:                                             ; preds = %4451, %4449
  %4459 = landingpad { ptr, i32 }
          cleanup
  %4460 = extractvalue { ptr, i32 } %4459, 0
  store ptr %4460, ptr %6, align 8
  %4461 = extractvalue { ptr, i32 } %4459, 1
  store i32 %4461, ptr %7, align 4
  br label %4466

4462:                                             ; preds = %4452
  %4463 = landingpad { ptr, i32 }
          cleanup
  %4464 = extractvalue { ptr, i32 } %4463, 0
  store ptr %4464, ptr %6, align 8
  %4465 = extractvalue { ptr, i32 } %4463, 1
  store i32 %4465, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %621) #7
  br label %4466

4466:                                             ; preds = %4462, %4458
  call void @llvm.lifetime.end.p0(i64 8, ptr %621) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %620) #7
  br label %4467

4467:                                             ; preds = %4466, %4454
  call void @llvm.lifetime.end.p0(i64 8, ptr %620) #7
  br label %4472

4468:                                             ; preds = %4453, %4442
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %617) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %617) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %622) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %623) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %623, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %624) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %624, ptr noundef @.str.45)
  call void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %622, ptr noundef @.str.53, ptr noundef @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %623, ptr noundef nonnull align 4 dereferenceable(28) %624)
  call void @llvm.lifetime.end.p0(i64 28, ptr %624) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %623) #7
  %4469 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %622)
          to label %4470 unwind label %4473

4470:                                             ; preds = %4468
  br i1 %4469, label %4471, label %4477

4471:                                             ; preds = %4470
  br label %4497

4472:                                             ; preds = %4467, %4444
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %617) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %617) #7
  br label %4918

4473:                                             ; preds = %4468
  %4474 = landingpad { ptr, i32 }
          cleanup
  %4475 = extractvalue { ptr, i32 } %4474, 0
  store ptr %4475, ptr %6, align 8
  %4476 = extractvalue { ptr, i32 } %4474, 1
  store i32 %4476, ptr %7, align 4
  br label %4501

4477:                                             ; preds = %4470
  call void @llvm.lifetime.start.p0(i64 8, ptr %625) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %4478 unwind label %4483

4478:                                             ; preds = %4477
  call void @llvm.lifetime.start.p0(i64 8, ptr %626) #7
  %4479 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %622)
          to label %4480 unwind label %4487

4480:                                             ; preds = %4478
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %626, i32 noundef 1, ptr noundef @.str.4, i32 noundef 210, ptr noundef %4479)
          to label %4481 unwind label %4487

4481:                                             ; preds = %4480
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %4482 unwind label %4491

4482:                                             ; preds = %4481
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %626) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #7
  br label %4497

4483:                                             ; preds = %4477
  %4484 = landingpad { ptr, i32 }
          cleanup
  %4485 = extractvalue { ptr, i32 } %4484, 0
  store ptr %4485, ptr %6, align 8
  %4486 = extractvalue { ptr, i32 } %4484, 1
  store i32 %4486, ptr %7, align 4
  br label %4496

4487:                                             ; preds = %4480, %4478
  %4488 = landingpad { ptr, i32 }
          cleanup
  %4489 = extractvalue { ptr, i32 } %4488, 0
  store ptr %4489, ptr %6, align 8
  %4490 = extractvalue { ptr, i32 } %4488, 1
  store i32 %4490, ptr %7, align 4
  br label %4495

4491:                                             ; preds = %4481
  %4492 = landingpad { ptr, i32 }
          cleanup
  %4493 = extractvalue { ptr, i32 } %4492, 0
  store ptr %4493, ptr %6, align 8
  %4494 = extractvalue { ptr, i32 } %4492, 1
  store i32 %4494, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %626) #7
  br label %4495

4495:                                             ; preds = %4491, %4487
  call void @llvm.lifetime.end.p0(i64 8, ptr %626) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %625) #7
  br label %4496

4496:                                             ; preds = %4495, %4483
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #7
  br label %4501

4497:                                             ; preds = %4482, %4471
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %622) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %622) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %627) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %628) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %628, ptr noundef @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr %629) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %629, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %627, ptr noundef @.str.50, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %628, ptr noundef nonnull align 4 dereferenceable(28) %629)
  call void @llvm.lifetime.end.p0(i64 28, ptr %629) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %628) #7
  %4498 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %627)
          to label %4499 unwind label %4502

4499:                                             ; preds = %4497
  br i1 %4498, label %4500, label %4506

4500:                                             ; preds = %4499
  br label %4526

4501:                                             ; preds = %4496, %4473
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %622) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %622) #7
  br label %4918

4502:                                             ; preds = %4497
  %4503 = landingpad { ptr, i32 }
          cleanup
  %4504 = extractvalue { ptr, i32 } %4503, 0
  store ptr %4504, ptr %6, align 8
  %4505 = extractvalue { ptr, i32 } %4503, 1
  store i32 %4505, ptr %7, align 4
  br label %4530

4506:                                             ; preds = %4499
  call void @llvm.lifetime.start.p0(i64 8, ptr %630) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %630)
          to label %4507 unwind label %4512

4507:                                             ; preds = %4506
  call void @llvm.lifetime.start.p0(i64 8, ptr %631) #7
  %4508 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %627)
          to label %4509 unwind label %4516

4509:                                             ; preds = %4507
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %631, i32 noundef 1, ptr noundef @.str.4, i32 noundef 212, ptr noundef %4508)
          to label %4510 unwind label %4516

4510:                                             ; preds = %4509
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %631, ptr noundef nonnull align 8 dereferenceable(8) %630)
          to label %4511 unwind label %4520

4511:                                             ; preds = %4510
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %631) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %631) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %630) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %630) #7
  br label %4526

4512:                                             ; preds = %4506
  %4513 = landingpad { ptr, i32 }
          cleanup
  %4514 = extractvalue { ptr, i32 } %4513, 0
  store ptr %4514, ptr %6, align 8
  %4515 = extractvalue { ptr, i32 } %4513, 1
  store i32 %4515, ptr %7, align 4
  br label %4525

4516:                                             ; preds = %4509, %4507
  %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 %4524

4520:                                             ; preds = %4510
  %4521 = landingpad { ptr, i32 }
          cleanup
  %4522 = extractvalue { ptr, i32 } %4521, 0
  store ptr %4522, ptr %6, align 8
  %4523 = extractvalue { ptr, i32 } %4521, 1
  store i32 %4523, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %631) #7
  br label %4524

4524:                                             ; preds = %4520, %4516
  call void @llvm.lifetime.end.p0(i64 8, ptr %631) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %630) #7
  br label %4525

4525:                                             ; preds = %4524, %4512
  call void @llvm.lifetime.end.p0(i64 8, ptr %630) #7
  br label %4530

4526:                                             ; preds = %4511, %4500
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %627) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %627) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %632) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %633) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %633, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %634) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %634, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %632, ptr noundef @.str.53, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %633, ptr noundef nonnull align 4 dereferenceable(28) %634)
  call void @llvm.lifetime.end.p0(i64 28, ptr %634) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %633) #7
  %4527 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %632)
          to label %4528 unwind label %4531

4528:                                             ; preds = %4526
  br i1 %4527, label %4529, label %4535

4529:                                             ; preds = %4528
  br label %4555

4530:                                             ; preds = %4525, %4502
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %627) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %627) #7
  br label %4918

4531:                                             ; preds = %4526
  %4532 = landingpad { ptr, i32 }
          cleanup
  %4533 = extractvalue { ptr, i32 } %4532, 0
  store ptr %4533, ptr %6, align 8
  %4534 = extractvalue { ptr, i32 } %4532, 1
  store i32 %4534, ptr %7, align 4
  br label %4559

4535:                                             ; preds = %4528
  call void @llvm.lifetime.start.p0(i64 8, ptr %635) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %635)
          to label %4536 unwind label %4541

4536:                                             ; preds = %4535
  call void @llvm.lifetime.start.p0(i64 8, ptr %636) #7
  %4537 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %632)
          to label %4538 unwind label %4545

4538:                                             ; preds = %4536
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %636, i32 noundef 1, ptr noundef @.str.4, i32 noundef 213, ptr noundef %4537)
          to label %4539 unwind label %4545

4539:                                             ; preds = %4538
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef nonnull align 8 dereferenceable(8) %635)
          to label %4540 unwind label %4549

4540:                                             ; preds = %4539
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %636) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %636) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %635) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %635) #7
  br label %4555

4541:                                             ; preds = %4535
  %4542 = landingpad { ptr, i32 }
          cleanup
  %4543 = extractvalue { ptr, i32 } %4542, 0
  store ptr %4543, ptr %6, align 8
  %4544 = extractvalue { ptr, i32 } %4542, 1
  store i32 %4544, ptr %7, align 4
  br label %4554

4545:                                             ; preds = %4538, %4536
  %4546 = landingpad { ptr, i32 }
          cleanup
  %4547 = extractvalue { ptr, i32 } %4546, 0
  store ptr %4547, ptr %6, align 8
  %4548 = extractvalue { ptr, i32 } %4546, 1
  store i32 %4548, ptr %7, align 4
  br label %4553

4549:                                             ; preds = %4539
  %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
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %636) #7
  br label %4553

4553:                                             ; preds = %4549, %4545
  call void @llvm.lifetime.end.p0(i64 8, ptr %636) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %635) #7
  br label %4554

4554:                                             ; preds = %4553, %4541
  call void @llvm.lifetime.end.p0(i64 8, ptr %635) #7
  br label %4559

4555:                                             ; preds = %4540, %4529
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %632) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %632) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %637) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %638) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %638, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr %639) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %639, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %637, ptr noundef @.str.44, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %638, ptr noundef nonnull align 4 dereferenceable(28) %639)
  call void @llvm.lifetime.end.p0(i64 28, ptr %639) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %638) #7
  %4556 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %637)
          to label %4557 unwind label %4560

4557:                                             ; preds = %4555
  br i1 %4556, label %4558, label %4564

4558:                                             ; preds = %4557
  br label %4584

4559:                                             ; preds = %4554, %4531
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %632) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %632) #7
  br label %4918

4560:                                             ; preds = %4555
  %4561 = landingpad { ptr, i32 }
          cleanup
  %4562 = extractvalue { ptr, i32 } %4561, 0
  store ptr %4562, ptr %6, align 8
  %4563 = extractvalue { ptr, i32 } %4561, 1
  store i32 %4563, ptr %7, align 4
  br label %4588

4564:                                             ; preds = %4557
  call void @llvm.lifetime.start.p0(i64 8, ptr %640) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %640)
          to label %4565 unwind label %4570

4565:                                             ; preds = %4564
  call void @llvm.lifetime.start.p0(i64 8, ptr %641) #7
  %4566 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %637)
          to label %4567 unwind label %4574

4567:                                             ; preds = %4565
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %641, i32 noundef 1, ptr noundef @.str.4, i32 noundef 214, ptr noundef %4566)
          to label %4568 unwind label %4574

4568:                                             ; preds = %4567
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef nonnull align 8 dereferenceable(8) %640)
          to label %4569 unwind label %4578

4569:                                             ; preds = %4568
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %641) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %641) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %640) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %640) #7
  br label %4584

4570:                                             ; preds = %4564
  %4571 = landingpad { ptr, i32 }
          cleanup
  %4572 = extractvalue { ptr, i32 } %4571, 0
  store ptr %4572, ptr %6, align 8
  %4573 = extractvalue { ptr, i32 } %4571, 1
  store i32 %4573, ptr %7, align 4
  br label %4583

4574:                                             ; preds = %4567, %4565
  %4575 = landingpad { ptr, i32 }
          cleanup
  %4576 = extractvalue { ptr, i32 } %4575, 0
  store ptr %4576, ptr %6, align 8
  %4577 = extractvalue { ptr, i32 } %4575, 1
  store i32 %4577, ptr %7, align 4
  br label %4582

4578:                                             ; preds = %4568
  %4579 = landingpad { ptr, i32 }
          cleanup
  %4580 = extractvalue { ptr, i32 } %4579, 0
  store ptr %4580, ptr %6, align 8
  %4581 = extractvalue { ptr, i32 } %4579, 1
  store i32 %4581, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %641) #7
  br label %4582

4582:                                             ; preds = %4578, %4574
  call void @llvm.lifetime.end.p0(i64 8, ptr %641) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %640) #7
  br label %4583

4583:                                             ; preds = %4582, %4570
  call void @llvm.lifetime.end.p0(i64 8, ptr %640) #7
  br label %4588

4584:                                             ; preds = %4569, %4558
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %637) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %637) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %642) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %643) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %643, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %644) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %644, ptr noundef @.str.51)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %642, ptr noundef @.str.53, ptr noundef @.str.50, ptr noundef nonnull align 4 dereferenceable(28) %643, ptr noundef nonnull align 4 dereferenceable(28) %644)
  call void @llvm.lifetime.end.p0(i64 28, ptr %644) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %643) #7
  %4585 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %642)
          to label %4586 unwind label %4589

4586:                                             ; preds = %4584
  br i1 %4585, label %4587, label %4593

4587:                                             ; preds = %4586
  br label %4613

4588:                                             ; preds = %4583, %4560
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %637) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %637) #7
  br label %4918

4589:                                             ; preds = %4584
  %4590 = landingpad { ptr, i32 }
          cleanup
  %4591 = extractvalue { ptr, i32 } %4590, 0
  store ptr %4591, ptr %6, align 8
  %4592 = extractvalue { ptr, i32 } %4590, 1
  store i32 %4592, ptr %7, align 4
  br label %4617

4593:                                             ; preds = %4586
  call void @llvm.lifetime.start.p0(i64 8, ptr %645) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %645)
          to label %4594 unwind label %4599

4594:                                             ; preds = %4593
  call void @llvm.lifetime.start.p0(i64 8, ptr %646) #7
  %4595 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %642)
          to label %4596 unwind label %4603

4596:                                             ; preds = %4594
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %646, i32 noundef 1, ptr noundef @.str.4, i32 noundef 216, ptr noundef %4595)
          to label %4597 unwind label %4603

4597:                                             ; preds = %4596
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %646, ptr noundef nonnull align 8 dereferenceable(8) %645)
          to label %4598 unwind label %4607

4598:                                             ; preds = %4597
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %646) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %646) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %645) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %645) #7
  br label %4613

4599:                                             ; preds = %4593
  %4600 = landingpad { ptr, i32 }
          cleanup
  %4601 = extractvalue { ptr, i32 } %4600, 0
  store ptr %4601, ptr %6, align 8
  %4602 = extractvalue { ptr, i32 } %4600, 1
  store i32 %4602, ptr %7, align 4
  br label %4612

4603:                                             ; preds = %4596, %4594
  %4604 = landingpad { ptr, i32 }
          cleanup
  %4605 = extractvalue { ptr, i32 } %4604, 0
  store ptr %4605, ptr %6, align 8
  %4606 = extractvalue { ptr, i32 } %4604, 1
  store i32 %4606, ptr %7, align 4
  br label %4611

4607:                                             ; preds = %4597
  %4608 = landingpad { ptr, i32 }
          cleanup
  %4609 = extractvalue { ptr, i32 } %4608, 0
  store ptr %4609, ptr %6, align 8
  %4610 = extractvalue { ptr, i32 } %4608, 1
  store i32 %4610, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %646) #7
  br label %4611

4611:                                             ; preds = %4607, %4603
  call void @llvm.lifetime.end.p0(i64 8, ptr %646) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %645) #7
  br label %4612

4612:                                             ; preds = %4611, %4599
  call void @llvm.lifetime.end.p0(i64 8, ptr %645) #7
  br label %4617

4613:                                             ; preds = %4598, %4587
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %642) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %642) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %647) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %648) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %648, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %649) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %649, ptr noundef @.str.7)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %647, ptr noundef @.str.53, ptr noundef @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %648, ptr noundef nonnull align 4 dereferenceable(28) %649)
  call void @llvm.lifetime.end.p0(i64 28, ptr %649) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %648) #7
  %4614 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %647)
          to label %4615 unwind label %4618

4615:                                             ; preds = %4613
  br i1 %4614, label %4616, label %4622

4616:                                             ; preds = %4615
  br label %4642

4617:                                             ; preds = %4612, %4589
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %642) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %642) #7
  br label %4918

4618:                                             ; preds = %4613
  %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
  br label %4646

4622:                                             ; preds = %4615
  call void @llvm.lifetime.start.p0(i64 8, ptr %650) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %4623 unwind label %4628

4623:                                             ; preds = %4622
  call void @llvm.lifetime.start.p0(i64 8, ptr %651) #7
  %4624 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %647)
          to label %4625 unwind label %4632

4625:                                             ; preds = %4623
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %651, i32 noundef 1, ptr noundef @.str.4, i32 noundef 217, ptr noundef %4624)
          to label %4626 unwind label %4632

4626:                                             ; preds = %4625
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %651, ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %4627 unwind label %4636

4627:                                             ; preds = %4626
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %651) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %651) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %650) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %650) #7
  br label %4642

4628:                                             ; preds = %4622
  %4629 = landingpad { ptr, i32 }
          cleanup
  %4630 = extractvalue { ptr, i32 } %4629, 0
  store ptr %4630, ptr %6, align 8
  %4631 = extractvalue { ptr, i32 } %4629, 1
  store i32 %4631, ptr %7, align 4
  br label %4641

4632:                                             ; preds = %4625, %4623
  %4633 = landingpad { ptr, i32 }
          cleanup
  %4634 = extractvalue { ptr, i32 } %4633, 0
  store ptr %4634, ptr %6, align 8
  %4635 = extractvalue { ptr, i32 } %4633, 1
  store i32 %4635, ptr %7, align 4
  br label %4640

4636:                                             ; preds = %4626
  %4637 = landingpad { ptr, i32 }
          cleanup
  %4638 = extractvalue { ptr, i32 } %4637, 0
  store ptr %4638, ptr %6, align 8
  %4639 = extractvalue { ptr, i32 } %4637, 1
  store i32 %4639, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %651) #7
  br label %4640

4640:                                             ; preds = %4636, %4632
  call void @llvm.lifetime.end.p0(i64 8, ptr %651) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %650) #7
  br label %4641

4641:                                             ; preds = %4640, %4628
  call void @llvm.lifetime.end.p0(i64 8, ptr %650) #7
  br label %4646

4642:                                             ; preds = %4627, %4616
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %647) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %647) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %652) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %653) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %653, ptr noundef @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr %654) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %654, ptr noundef @.str.45)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %652, ptr noundef @.str.53, ptr noundef @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %653, ptr noundef nonnull align 4 dereferenceable(28) %654)
  call void @llvm.lifetime.end.p0(i64 28, ptr %654) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %653) #7
  %4643 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %652)
          to label %4644 unwind label %4647

4644:                                             ; preds = %4642
  br i1 %4643, label %4645, label %4651

4645:                                             ; preds = %4644
  br label %4671

4646:                                             ; preds = %4641, %4618
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %647) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %647) #7
  br label %4918

4647:                                             ; preds = %4642
  %4648 = landingpad { ptr, i32 }
          cleanup
  %4649 = extractvalue { ptr, i32 } %4648, 0
  store ptr %4649, ptr %6, align 8
  %4650 = extractvalue { ptr, i32 } %4648, 1
  store i32 %4650, ptr %7, align 4
  br label %4676

4651:                                             ; preds = %4644
  call void @llvm.lifetime.start.p0(i64 8, ptr %655) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %655)
          to label %4652 unwind label %4657

4652:                                             ; preds = %4651
  call void @llvm.lifetime.start.p0(i64 8, ptr %656) #7
  %4653 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %652)
          to label %4654 unwind label %4661

4654:                                             ; preds = %4652
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %656, i32 noundef 1, ptr noundef @.str.4, i32 noundef 218, ptr noundef %4653)
          to label %4655 unwind label %4661

4655:                                             ; preds = %4654
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %656, ptr noundef nonnull align 8 dereferenceable(8) %655)
          to label %4656 unwind label %4665

4656:                                             ; preds = %4655
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %656) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %656) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %655) #7
  br label %4671

4657:                                             ; preds = %4651
  %4658 = landingpad { ptr, i32 }
          cleanup
  %4659 = extractvalue { ptr, i32 } %4658, 0
  store ptr %4659, ptr %6, align 8
  %4660 = extractvalue { ptr, i32 } %4658, 1
  store i32 %4660, ptr %7, align 4
  br label %4670

4661:                                             ; preds = %4654, %4652
  %4662 = landingpad { ptr, i32 }
          cleanup
  %4663 = extractvalue { ptr, i32 } %4662, 0
  store ptr %4663, ptr %6, align 8
  %4664 = extractvalue { ptr, i32 } %4662, 1
  store i32 %4664, ptr %7, align 4
  br label %4669

4665:                                             ; preds = %4655
  %4666 = landingpad { ptr, i32 }
          cleanup
  %4667 = extractvalue { ptr, i32 } %4666, 0
  store ptr %4667, ptr %6, align 8
  %4668 = extractvalue { ptr, i32 } %4666, 1
  store i32 %4668, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %656) #7
  br label %4669

4669:                                             ; preds = %4665, %4661
  call void @llvm.lifetime.end.p0(i64 8, ptr %656) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #7
  br label %4670

4670:                                             ; preds = %4669, %4657
  call void @llvm.lifetime.end.p0(i64 8, ptr %655) #7
  br label %4676

4671:                                             ; preds = %4656, %4645
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %652) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %652) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %657) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %658) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %659) #7
  call void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %659, i8 noundef zeroext 2)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %658, ptr noundef nonnull align 4 dereferenceable(28) %659, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %657, ptr noundef @.str.71, ptr noundef @.str.200, ptr noundef nonnull align 1 dereferenceable(8) @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %658)
          to label %4672 unwind label %4677

4672:                                             ; preds = %4671
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %658) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %659) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %658) #7
  %4673 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %657)
          to label %4674 unwind label %4681

4674:                                             ; preds = %4672
  br i1 %4673, label %4675, label %4685

4675:                                             ; preds = %4674
  br label %4705

4676:                                             ; preds = %4670, %4647
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %652) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %652) #7
  br label %4918

4677:                                             ; preds = %4671
  %4678 = landingpad { ptr, i32 }
          cleanup
  %4679 = extractvalue { ptr, i32 } %4678, 0
  store ptr %4679, ptr %6, align 8
  %4680 = extractvalue { ptr, i32 } %4678, 1
  store i32 %4680, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %658) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %659) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %658) #7
  br label %4711

4681:                                             ; preds = %4672
  %4682 = landingpad { ptr, i32 }
          cleanup
  %4683 = extractvalue { ptr, i32 } %4682, 0
  store ptr %4683, ptr %6, align 8
  %4684 = extractvalue { ptr, i32 } %4682, 1
  store i32 %4684, ptr %7, align 4
  br label %4710

4685:                                             ; preds = %4674
  call void @llvm.lifetime.start.p0(i64 8, ptr %660) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %660)
          to label %4686 unwind label %4691

4686:                                             ; preds = %4685
  call void @llvm.lifetime.start.p0(i64 8, ptr %661) #7
  %4687 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %657)
          to label %4688 unwind label %4695

4688:                                             ; preds = %4686
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %661, i32 noundef 1, ptr noundef @.str.4, i32 noundef 221, ptr noundef %4687)
          to label %4689 unwind label %4695

4689:                                             ; preds = %4688
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %661, ptr noundef nonnull align 8 dereferenceable(8) %660)
          to label %4690 unwind label %4699

4690:                                             ; preds = %4689
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %661) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %661) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %660) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %660) #7
  br label %4705

4691:                                             ; preds = %4685
  %4692 = landingpad { ptr, i32 }
          cleanup
  %4693 = extractvalue { ptr, i32 } %4692, 0
  store ptr %4693, ptr %6, align 8
  %4694 = extractvalue { ptr, i32 } %4692, 1
  store i32 %4694, ptr %7, align 4
  br label %4704

4695:                                             ; preds = %4688, %4686
  %4696 = landingpad { ptr, i32 }
          cleanup
  %4697 = extractvalue { ptr, i32 } %4696, 0
  store ptr %4697, ptr %6, align 8
  %4698 = extractvalue { ptr, i32 } %4696, 1
  store i32 %4698, ptr %7, align 4
  br label %4703

4699:                                             ; preds = %4689
  %4700 = landingpad { ptr, i32 }
          cleanup
  %4701 = extractvalue { ptr, i32 } %4700, 0
  store ptr %4701, ptr %6, align 8
  %4702 = extractvalue { ptr, i32 } %4700, 1
  store i32 %4702, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %661) #7
  br label %4703

4703:                                             ; preds = %4699, %4695
  call void @llvm.lifetime.end.p0(i64 8, ptr %661) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %660) #7
  br label %4704

4704:                                             ; preds = %4703, %4691
  call void @llvm.lifetime.end.p0(i64 8, ptr %660) #7
  br label %4710

4705:                                             ; preds = %4690, %4675
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %657) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %657) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %662) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %663) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr %664) #7
  call void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind writable sret(%"class.chen::ip_address") align 4 %664, i8 noundef zeroext 2)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %663, ptr noundef nonnull align 4 dereferenceable(28) %664, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %662, ptr noundef @.str.77, ptr noundef @.str.201, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %663)
          to label %4706 unwind label %4712

4706:                                             ; preds = %4705
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %663) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %664) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %663) #7
  %4707 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %662)
          to label %4708 unwind label %4716

4708:                                             ; preds = %4706
  br i1 %4707, label %4709, label %4720

4709:                                             ; preds = %4708
  br label %4740

4710:                                             ; preds = %4704, %4681
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %657) #7
  br label %4711

4711:                                             ; preds = %4710, %4677
  call void @llvm.lifetime.end.p0(i64 16, ptr %657) #7
  br label %4918

4712:                                             ; preds = %4705
  %4713 = landingpad { ptr, i32 }
          cleanup
  %4714 = extractvalue { ptr, i32 } %4713, 0
  store ptr %4714, ptr %6, align 8
  %4715 = extractvalue { ptr, i32 } %4713, 1
  store i32 %4715, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %663) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %664) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %663) #7
  br label %4750

4716:                                             ; preds = %4706
  %4717 = landingpad { ptr, i32 }
          cleanup
  %4718 = extractvalue { ptr, i32 } %4717, 0
  store ptr %4718, ptr %6, align 8
  %4719 = extractvalue { ptr, i32 } %4717, 1
  store i32 %4719, ptr %7, align 4
  br label %4749

4720:                                             ; preds = %4708
  call void @llvm.lifetime.start.p0(i64 8, ptr %665) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %665)
          to label %4721 unwind label %4726

4721:                                             ; preds = %4720
  call void @llvm.lifetime.start.p0(i64 8, ptr %666) #7
  %4722 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %662)
          to label %4723 unwind label %4730

4723:                                             ; preds = %4721
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %666, i32 noundef 1, ptr noundef @.str.4, i32 noundef 222, ptr noundef %4722)
          to label %4724 unwind label %4730

4724:                                             ; preds = %4723
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 8 dereferenceable(8) %665)
          to label %4725 unwind label %4734

4725:                                             ; preds = %4724
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %666) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %666) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %665) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %665) #7
  br label %4740

4726:                                             ; preds = %4720
  %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 %4739

4730:                                             ; preds = %4723, %4721
  %4731 = landingpad { ptr, i32 }
          cleanup
  %4732 = extractvalue { ptr, i32 } %4731, 0
  store ptr %4732, ptr %6, align 8
  %4733 = extractvalue { ptr, i32 } %4731, 1
  store i32 %4733, ptr %7, align 4
  br label %4738

4734:                                             ; preds = %4724
  %4735 = landingpad { ptr, i32 }
          cleanup
  %4736 = extractvalue { ptr, i32 } %4735, 0
  store ptr %4736, ptr %6, align 8
  %4737 = extractvalue { ptr, i32 } %4735, 1
  store i32 %4737, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %666) #7
  br label %4738

4738:                                             ; preds = %4734, %4730
  call void @llvm.lifetime.end.p0(i64 8, ptr %666) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %665) #7
  br label %4739

4739:                                             ; preds = %4738, %4726
  call void @llvm.lifetime.end.p0(i64 8, ptr %665) #7
  br label %4749

4740:                                             ; preds = %4725, %4709
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %662) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %662) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %667) #7
  store i8 0, ptr %667, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %668) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %668, ptr noundef @.str.27)
  %4741 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %668)
  br i1 %4741, label %4742, label %4785

4742:                                             ; preds = %4740
  call void @llvm.lifetime.start.p0(i64 1, ptr %669) #7
  store i8 0, ptr %669, align 1, !tbaa !9
  %4743 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4744 unwind label %4751

4744:                                             ; preds = %4742
  br i1 %4743, label %4745, label %4780

4745:                                             ; preds = %4744
  call void @llvm.lifetime.start.p0(i64 32, ptr %670) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %671) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %670, ptr noundef @.str.202, ptr noundef nonnull align 1 dereferenceable(1) %671)
          to label %4746 unwind label %4755

4746:                                             ; preds = %4745
  %4747 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %670)
          to label %4748 unwind label %4759

4748:                                             ; preds = %4746
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %670) #7
  br label %4780

4749:                                             ; preds = %4739, %4716
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %662) #7
  br label %4750

4750:                                             ; preds = %4749, %4712
  call void @llvm.lifetime.end.p0(i64 16, ptr %662) #7
  br label %4918

4751:                                             ; preds = %4742
  %4752 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4753 = extractvalue { ptr, i32 } %4752, 0
  store ptr %4753, ptr %6, align 8
  %4754 = extractvalue { ptr, i32 } %4752, 1
  store i32 %4754, ptr %7, align 4
  br label %4764

4755:                                             ; preds = %4745
  %4756 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4757 = extractvalue { ptr, i32 } %4756, 0
  store ptr %4757, ptr %6, align 8
  %4758 = extractvalue { ptr, i32 } %4756, 1
  store i32 %4758, ptr %7, align 4
  br label %4763

4759:                                             ; preds = %4746
  %4760 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %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
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #7
  br label %4763

4763:                                             ; preds = %4759, %4755
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %671) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %670) #7
  br label %4764

4764:                                             ; preds = %4763, %4751
  %4765 = load i32, ptr %7, align 4
  %4766 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #7
  %4767 = icmp eq i32 %4765, %4766
  br i1 %4767, label %4768, label %4776

4768:                                             ; preds = %4764
  call void @llvm.lifetime.start.p0(i64 8, ptr %672) #7
  %4769 = load ptr, ptr %6, align 8
  %4770 = call ptr @__cxa_begin_catch(ptr %4769) #7
  store ptr %4770, ptr %672, align 8
  store i8 1, ptr %669, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %672) #7
  br label %4771

4771:                                             ; preds = %4780, %4768
  %4772 = load i8, ptr %669, align 1, !tbaa !9, !range !11, !noundef !12
  %4773 = trunc i8 %4772 to i1
  br i1 %4773, label %4781, label %4774

4774:                                             ; preds = %4771
  %4775 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %668, i32 0, i32 0
  store ptr @.str.204, ptr %4775, align 8, !tbaa !13
  store i32 4, ptr %71, align 4
  br label %4782

4776:                                             ; preds = %4764
  %4777 = load ptr, ptr %6, align 8
  %4778 = call ptr @__cxa_begin_catch(ptr %4777) #7
  %4779 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %668, i32 0, i32 0
  store ptr @.str.203, ptr %4779, align 8, !tbaa !13
  store i32 4, ptr %71, align 4
  call void @__cxa_end_catch()
  br label %4782

4780:                                             ; preds = %4748, %4744
  br label %4771

4781:                                             ; preds = %4771
  store i32 0, ptr %71, align 4
  br label %4782

4782:                                             ; preds = %4781, %4776, %4774
  call void @llvm.lifetime.end.p0(i64 1, ptr %669) #7
  %4783 = load i32, ptr %71, align 4
  switch i32 %4783, label %4924 [
    i32 0, label %4784
    i32 4, label %4786
  ]

4784:                                             ; preds = %4782
  br label %4800

4785:                                             ; preds = %4740
  br label %4786

4786:                                             ; preds = %4785, %4782
  call void @llvm.lifetime.start.p0(i64 8, ptr %673) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %673)
  call void @llvm.lifetime.start.p0(i64 8, ptr %674) #7
  %4787 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %668, i32 0, i32 0
  %4788 = load ptr, ptr %4787, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %674, i32 noundef 1, ptr noundef @.str.4, i32 noundef 227, ptr noundef %4788)
          to label %4789 unwind label %4791

4789:                                             ; preds = %4786
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull align 8 dereferenceable(8) %673)
          to label %4790 unwind label %4795

4790:                                             ; preds = %4789
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %674) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %673) #7
  br label %4800

4791:                                             ; preds = %4786
  %4792 = landingpad { ptr, i32 }
          cleanup
  %4793 = extractvalue { ptr, i32 } %4792, 0
  store ptr %4793, ptr %6, align 8
  %4794 = extractvalue { ptr, i32 } %4792, 1
  store i32 %4794, ptr %7, align 4
  br label %4799

4795:                                             ; preds = %4789
  %4796 = landingpad { ptr, i32 }
          cleanup
  %4797 = extractvalue { ptr, i32 } %4796, 0
  store ptr %4797, ptr %6, align 8
  %4798 = extractvalue { ptr, i32 } %4796, 1
  store i32 %4798, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #7
  br label %4799

4799:                                             ; preds = %4795, %4791
  call void @llvm.lifetime.end.p0(i64 8, ptr %674) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %668) #7
  br label %4917

4800:                                             ; preds = %4790, %4784
  call void @llvm.lifetime.end.p0(i64 8, ptr %668) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %675) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef @.str.27)
  %4801 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %675)
  br i1 %4801, label %4802, label %4843

4802:                                             ; preds = %4800
  call void @llvm.lifetime.start.p0(i64 1, ptr %676) #7
  store i8 0, ptr %676, align 1, !tbaa !9
  %4803 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4804 unwind label %4809

4804:                                             ; preds = %4802
  br i1 %4803, label %4805, label %4838

4805:                                             ; preds = %4804
  call void @llvm.lifetime.start.p0(i64 32, ptr %677) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %678) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %677, ptr noundef @.str.205, ptr noundef nonnull align 1 dereferenceable(1) %678)
          to label %4806 unwind label %4813

4806:                                             ; preds = %4805
  %4807 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %677)
          to label %4808 unwind label %4817

4808:                                             ; preds = %4806
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %677) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %678) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %677) #7
  br label %4838

4809:                                             ; preds = %4802
  %4810 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4811 = extractvalue { ptr, i32 } %4810, 0
  store ptr %4811, ptr %6, align 8
  %4812 = extractvalue { ptr, i32 } %4810, 1
  store i32 %4812, ptr %7, align 4
  br label %4822

4813:                                             ; preds = %4805
  %4814 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4815 = extractvalue { ptr, i32 } %4814, 0
  store ptr %4815, ptr %6, align 8
  %4816 = extractvalue { ptr, i32 } %4814, 1
  store i32 %4816, ptr %7, align 4
  br label %4821

4817:                                             ; preds = %4806
  %4818 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4819 = extractvalue { ptr, i32 } %4818, 0
  store ptr %4819, ptr %6, align 8
  %4820 = extractvalue { ptr, i32 } %4818, 1
  store i32 %4820, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %677) #7
  br label %4821

4821:                                             ; preds = %4817, %4813
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %678) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %678) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %677) #7
  br label %4822

4822:                                             ; preds = %4821, %4809
  %4823 = load i32, ptr %7, align 4
  %4824 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #7
  %4825 = icmp eq i32 %4823, %4824
  br i1 %4825, label %4826, label %4834

4826:                                             ; preds = %4822
  call void @llvm.lifetime.start.p0(i64 8, ptr %679) #7
  %4827 = load ptr, ptr %6, align 8
  %4828 = call ptr @__cxa_begin_catch(ptr %4827) #7
  store ptr %4828, ptr %679, align 8
  store i8 1, ptr %676, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %679) #7
  br label %4829

4829:                                             ; preds = %4838, %4826
  %4830 = load i8, ptr %676, align 1, !tbaa !9, !range !11, !noundef !12
  %4831 = trunc i8 %4830 to i1
  br i1 %4831, label %4839, label %4832

4832:                                             ; preds = %4829
  %4833 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %675, i32 0, i32 0
  store ptr @.str.207, ptr %4833, align 8, !tbaa !13
  store i32 5, ptr %71, align 4
  br label %4840

4834:                                             ; preds = %4822
  %4835 = load ptr, ptr %6, align 8
  %4836 = call ptr @__cxa_begin_catch(ptr %4835) #7
  %4837 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %675, i32 0, i32 0
  store ptr @.str.206, ptr %4837, align 8, !tbaa !13
  store i32 5, ptr %71, align 4
  call void @__cxa_end_catch()
  br label %4840

4838:                                             ; preds = %4808, %4804
  br label %4829

4839:                                             ; preds = %4829
  store i32 0, ptr %71, align 4
  br label %4840

4840:                                             ; preds = %4839, %4834, %4832
  call void @llvm.lifetime.end.p0(i64 1, ptr %676) #7
  %4841 = load i32, ptr %71, align 4
  switch i32 %4841, label %4924 [
    i32 0, label %4842
    i32 5, label %4844
  ]

4842:                                             ; preds = %4840
  br label %4858

4843:                                             ; preds = %4800
  br label %4844

4844:                                             ; preds = %4843, %4840
  call void @llvm.lifetime.start.p0(i64 8, ptr %680) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %680)
  call void @llvm.lifetime.start.p0(i64 8, ptr %681) #7
  %4845 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %675, i32 0, i32 0
  %4846 = load ptr, ptr %4845, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %681, i32 noundef 1, ptr noundef @.str.4, i32 noundef 228, ptr noundef %4846)
          to label %4847 unwind label %4849

4847:                                             ; preds = %4844
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull align 8 dereferenceable(8) %680)
          to label %4848 unwind label %4853

4848:                                             ; preds = %4847
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %681) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %681) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %680) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %680) #7
  br label %4858

4849:                                             ; preds = %4844
  %4850 = landingpad { ptr, i32 }
          cleanup
  %4851 = extractvalue { ptr, i32 } %4850, 0
  store ptr %4851, ptr %6, align 8
  %4852 = extractvalue { ptr, i32 } %4850, 1
  store i32 %4852, ptr %7, align 4
  br label %4857

4853:                                             ; preds = %4847
  %4854 = landingpad { ptr, i32 }
          cleanup
  %4855 = extractvalue { ptr, i32 } %4854, 0
  store ptr %4855, ptr %6, align 8
  %4856 = extractvalue { ptr, i32 } %4854, 1
  store i32 %4856, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %681) #7
  br label %4857

4857:                                             ; preds = %4853, %4849
  call void @llvm.lifetime.end.p0(i64 8, ptr %681) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %680) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %680) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #7
  br label %4917

4858:                                             ; preds = %4848, %4842
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %682) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef @.str.27)
  %4859 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %682)
  br i1 %4859, label %4860, label %4901

4860:                                             ; preds = %4858
  call void @llvm.lifetime.start.p0(i64 1, ptr %683) #7
  store i8 0, ptr %683, align 1, !tbaa !9
  %4861 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %4862 unwind label %4867

4862:                                             ; preds = %4860
  br i1 %4861, label %4863, label %4896

4863:                                             ; preds = %4862
  call void @llvm.lifetime.start.p0(i64 32, ptr %684) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %685) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %684, ptr noundef @.str.208, ptr noundef nonnull align 1 dereferenceable(1) %685)
          to label %4864 unwind label %4871

4864:                                             ; preds = %4863
  %4865 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32) %684, ptr noundef %667)
          to label %4866 unwind label %4875

4866:                                             ; preds = %4864
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %684) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %685) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %684) #7
  br label %4896

4867:                                             ; preds = %4860
  %4868 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4869 = extractvalue { ptr, i32 } %4868, 0
  store ptr %4869, ptr %6, align 8
  %4870 = extractvalue { ptr, i32 } %4868, 1
  store i32 %4870, ptr %7, align 4
  br label %4880

4871:                                             ; preds = %4863
  %4872 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4873 = extractvalue { ptr, i32 } %4872, 0
  store ptr %4873, ptr %6, align 8
  %4874 = extractvalue { ptr, i32 } %4872, 1
  store i32 %4874, ptr %7, align 4
  br label %4879

4875:                                             ; preds = %4864
  %4876 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %4877 = extractvalue { ptr, i32 } %4876, 0
  store ptr %4877, ptr %6, align 8
  %4878 = extractvalue { ptr, i32 } %4876, 1
  store i32 %4878, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %684) #7
  br label %4879

4879:                                             ; preds = %4875, %4871
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %685) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %685) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %684) #7
  br label %4880

4880:                                             ; preds = %4879, %4867
  %4881 = load i32, ptr %7, align 4
  %4882 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #7
  %4883 = icmp eq i32 %4881, %4882
  br i1 %4883, label %4884, label %4892

4884:                                             ; preds = %4880
  call void @llvm.lifetime.start.p0(i64 8, ptr %686) #7
  %4885 = load ptr, ptr %6, align 8
  %4886 = call ptr @__cxa_begin_catch(ptr %4885) #7
  store ptr %4886, ptr %686, align 8
  store i8 1, ptr %683, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %686) #7
  br label %4887

4887:                                             ; preds = %4896, %4884
  %4888 = load i8, ptr %683, align 1, !tbaa !9, !range !11, !noundef !12
  %4889 = trunc i8 %4888 to i1
  br i1 %4889, label %4897, label %4890

4890:                                             ; preds = %4887
  %4891 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %682, i32 0, i32 0
  store ptr @.str.210, ptr %4891, align 8, !tbaa !13
  store i32 6, ptr %71, align 4
  br label %4898

4892:                                             ; preds = %4880
  %4893 = load ptr, ptr %6, align 8
  %4894 = call ptr @__cxa_begin_catch(ptr %4893) #7
  %4895 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %682, i32 0, i32 0
  store ptr @.str.209, ptr %4895, align 8, !tbaa !13
  store i32 6, ptr %71, align 4
  call void @__cxa_end_catch()
  br label %4898

4896:                                             ; preds = %4866, %4862
  br label %4887

4897:                                             ; preds = %4887
  store i32 0, ptr %71, align 4
  br label %4898

4898:                                             ; preds = %4897, %4892, %4890
  call void @llvm.lifetime.end.p0(i64 1, ptr %683) #7
  %4899 = load i32, ptr %71, align 4
  switch i32 %4899, label %4924 [
    i32 0, label %4900
    i32 6, label %4902
  ]

4900:                                             ; preds = %4898
  br label %4916

4901:                                             ; preds = %4858
  br label %4902

4902:                                             ; preds = %4901, %4898
  call void @llvm.lifetime.start.p0(i64 8, ptr %687) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %687)
  call void @llvm.lifetime.start.p0(i64 8, ptr %688) #7
  %4903 = getelementptr inbounds %"struct.testing::internal::ConstCharPtr", ptr %682, i32 0, i32 0
  %4904 = load ptr, ptr %4903, align 8, !tbaa !13
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %688, i32 noundef 1, ptr noundef @.str.4, i32 noundef 229, ptr noundef %4904)
          to label %4905 unwind label %4907

4905:                                             ; preds = %4902
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %688, ptr noundef nonnull align 8 dereferenceable(8) %687)
          to label %4906 unwind label %4911

4906:                                             ; preds = %4905
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %688) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %688) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %687) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %687) #7
  br label %4916

4907:                                             ; preds = %4902
  %4908 = landingpad { ptr, i32 }
          cleanup
  %4909 = extractvalue { ptr, i32 } %4908, 0
  store ptr %4909, ptr %6, align 8
  %4910 = extractvalue { ptr, i32 } %4908, 1
  store i32 %4910, ptr %7, align 4
  br label %4915

4911:                                             ; preds = %4905
  %4912 = landingpad { ptr, i32 }
          cleanup
  %4913 = extractvalue { ptr, i32 } %4912, 0
  store ptr %4913, ptr %6, align 8
  %4914 = extractvalue { ptr, i32 } %4912, 1
  store i32 %4914, ptr %7, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %688) #7
  br label %4915

4915:                                             ; preds = %4911, %4907
  call void @llvm.lifetime.end.p0(i64 8, ptr %688) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %687) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %687) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %682) #7
  br label %4917

4916:                                             ; preds = %4906, %4900
  call void @llvm.lifetime.end.p0(i64 8, ptr %682) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %667) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %82) #7
  ret void

4917:                                             ; preds = %4915, %4857, %4799
  call void @llvm.lifetime.end.p0(i64 1, ptr %667) #7
  br label %4918

4918:                                             ; preds = %4917, %4750, %4711, %4676, %4646, %4617, %4588, %4559, %4530, %4501, %4472, %4443, %4414, %4385, %4356, %4327, %4298, %4269, %4235, %4198, %4161, %4124, %4087, %4050, %4012, %3974, %3937, %3899, %3861, %3824, %3786, %3748, %3710, %3673, %3635, %3597, %3560, %3522, %3484, %3447, %3409, %3371, %3333, %3296, %3258, %3220, %3183, %3145, %3107, %3070, %3032, %2995, %2958, %2922, %2885, %2848, %2812, %2775, %2738, %2701, %2664, %2627, %2590, %2553, %2516, %2479, %2442, %2405, %2368, %2331, %2294, %2257, %2220, %2183, %2146, %2109, %2072, %2041, %2005, %1968, %1933, %1898, %1868, %1835, %1802, %1772, %1742, %1712, %1667, %1629, %1594, %1559, %1524, %1489, %1454, %1419, %1389, %1354, %1323, %1288, %1252, %1216, %1180
  call void @llvm.lifetime.end.p0(i64 28, ptr %82) #7
  br label %4919

4919:                                             ; preds = %4918, %1139, %1087, %1038, %990, %956, %927, %898, %869, %840, %796, %753, %721
  %4920 = load ptr, ptr %6, align 8
  %4921 = load i32, ptr %7, align 4
  %4922 = insertvalue { ptr, i32 } poison, ptr %4920, 0
  %4923 = insertvalue { ptr, i32 } %4922, i32 %4921, 1
  resume { ptr, i32 } %4923

4924:                                             ; preds = %4898, %4840, %4782, %1122, %1070
  unreachable
}

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

declare void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3

declare void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen11ip_version4C1EjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, 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()

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

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

; 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_addressaSENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28), i8 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_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(8), ptr noundef nonnull align 8 dereferenceable(32)) #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 @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_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(15), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; 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

declare noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(8)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_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(12), ptr noundef nonnull align 8 dereferenceable(32)) #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

declare noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef i32 @_ZNK4chen11ip_version47netmaskEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef i32 @_ZNK4chen11ip_version48wildcardEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

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

declare i64 @_ZNK4chen11ip_version49broadcastEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

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

declare noundef i64 @_ZNK4chen11ip_version45hostsEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version411isLinkLocalEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8)) #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8)) #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

declare noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{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}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"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 }
%"struct.std::array" = type { [16 x 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 }
%"class.chen::ip_version4" = type { %"class.chen::ip_version", i32 }
%"struct.testing::internal::ConstCharPtr" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 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.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.62 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [133 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 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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23IPAddressTest_IPv4_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_version4", align 4
  %46 = alloca %"class.chen::ip_address", align 4
  %47 = alloca %"class.testing::Message", align 8
  %48 = alloca %"class.testing::internal::AssertHelper", align 8
  %49 = alloca %"class.testing::AssertionResult", align 8
  %50 = alloca %"class.chen::ip_address", align 4
  %51 = alloca %"class.chen::ip_version4", align 4
  %52 = alloca %"class.chen::ip_address", align 4
  %53 = alloca %"class.testing::Message", align 8
  %54 = alloca %"class.testing::internal::AssertHelper", align 8
  %55 = alloca %"class.testing::AssertionResult", align 8
  %56 = alloca %"class.chen::ip_address", align 4
  %57 = alloca %"class.chen::ip_version4", align 4
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator", align 1
  %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 %"struct.testing::internal::ConstCharPtr", align 8
  %64 = alloca %"class.chen::ip_address", align 4
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator", align 1
  %67 = alloca %"class.testing::Message", align 8
  %68 = alloca %"class.testing::internal::AssertHelper", align 8
  %69 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %70 = alloca %"class.chen::ip_address", align 4
  %71 = alloca %"class.chen::ip_version4", align 4
  %72 = alloca %"class.testing::Message", align 8
  %73 = alloca %"class.testing::internal::AssertHelper", align 8
  %74 = alloca %"class.chen::ip_address", align 4
  %75 = alloca %"class.testing::AssertionResult", align 8
  %76 = alloca i8, align 1
  %77 = alloca %"class.testing::Message", align 8
  %78 = alloca %"class.testing::internal::AssertHelper", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.testing::AssertionResult", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"class.testing::internal::AssertHelper", align 8
  %84 = alloca %"class.testing::AssertionResult", align 8
  %85 = alloca i32, align 4
  %86 = alloca i64, align 8
  %87 = alloca %"class.std::vector", align 8
  %88 = alloca %"class.testing::Message", align 8
  %89 = alloca %"class.testing::internal::AssertHelper", align 8
  %90 = alloca %"class.testing::AssertionResult", align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %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.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.testing::Message", align 8
  %97 = alloca %"class.testing::internal::AssertHelper", align 8
  %98 = alloca %"class.testing::AssertionResult", align 8
  %99 = alloca i32, align 4
  %100 = alloca i8, align 1
  %101 = alloca %"class.testing::Message", align 8
  %102 = alloca %"class.testing::internal::AssertHelper", align 8
  %103 = alloca %"class.chen::ip_version4", align 4
  %104 = alloca %"class.testing::AssertionResult", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.testing::Message", align 8
  %107 = alloca %"class.testing::internal::AssertHelper", align 8
  %108 = alloca %"class.testing::AssertionResult", align 8
  %109 = alloca i32, align 4
  %110 = alloca i8, align 1
  %111 = alloca %"class.testing::Message", align 8
  %112 = alloca %"class.testing::internal::AssertHelper", align 8
  %113 = alloca %"class.testing::AssertionResult", align 8
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca %"class.chen::ip_address", align 4
  %116 = alloca %"class.testing::Message", align 8
  %117 = alloca %"class.testing::internal::AssertHelper", align 8
  %118 = alloca %"class.testing::AssertionResult", align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.chen::ip_address", align 4
  %121 = alloca %"class.testing::Message", align 8
  %122 = alloca %"class.testing::internal::AssertHelper", align 8
  %123 = alloca %"class.testing::AssertionResult", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.chen::ip_address", align 4
  %126 = alloca %"class.testing::Message", align 8
  %127 = alloca %"class.testing::internal::AssertHelper", align 8
  %128 = alloca %"class.testing::AssertionResult", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.chen::ip_address", align 4
  %131 = alloca %"class.chen::ip_version4", align 4
  %132 = alloca %"class.testing::Message", align 8
  %133 = alloca %"class.testing::internal::AssertHelper", align 8
  %134 = alloca %"class.testing::AssertionResult", align 8
  %135 = alloca %"class.std::__cxx11::basic_string", align 8
  %136 = alloca %"class.chen::ip_address", align 4
  %137 = alloca %"class.testing::Message", align 8
  %138 = alloca %"class.testing::internal::AssertHelper", align 8
  %139 = alloca %"class.testing::AssertionResult", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.chen::ip_address", align 4
  %142 = alloca %"class.testing::Message", align 8
  %143 = alloca %"class.testing::internal::AssertHelper", align 8
  %144 = alloca %"class.testing::AssertionResult", align 8
  %145 = alloca %"class.std::__cxx11::basic_string", align 8
  %146 = alloca %"class.chen::ip_address", align 4
  %147 = alloca %"class.chen::ip_version4", align 4
  %148 = alloca %"class.testing::Message", align 8
  %149 = alloca %"class.testing::internal::AssertHelper", align 8
  %150 = alloca %"class.testing::AssertionResult", align 8
  %151 = alloca %"class.std::__cxx11::basic_string", align 8
  %152 = alloca %"class.chen::ip_address", align 4
  %153 = alloca %"class.std::__cxx11::basic_string", align 8
  %154 = alloca %"class.std::allocator", align 1
  %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 i8, align 1
  %160 = alloca %"class.chen::ip_address", align 4
  %161 = alloca %"class.testing::Message", align 8
  %162 = alloca %"class.testing::internal::AssertHelper", align 8
  %163 = alloca %"class.testing::AssertionResult", align 8
  %164 = alloca i32, align 4
  %165 = alloca i8, align 1
  %166 = alloca %"class.chen::ip_address", align 4
  %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.chen::ip_address", align 4
  %173 = alloca %"class.testing::Message", align 8
  %174 = alloca %"class.testing::internal::AssertHelper", align 8
  %175 = alloca %"class.testing::AssertionResult", align 8
  %176 = alloca i32, align 4
  %177 = alloca i8, align 1
  %178 = alloca %"class.chen::ip_address", align 4
  %179 = alloca %"class.testing::Message", align 8
  %180 = alloca %"class.testing::internal::AssertHelper", align 8
  %181 = alloca %"class.testing::AssertionResult", align 8
  %182 = alloca i32, align 4
  %183 = alloca %"class.chen::ip_address", align 4
  %184 = alloca i32, align 4
  %185 = alloca %"class.chen::ip_address", align 4
  %186 = alloca %"class.testing::Message", align 8
  %187 = alloca %"class.testing::internal::AssertHelper", align 8
  %188 = alloca %"class.testing::AssertionResult", align 8
  %189 = alloca i32, align 4
  %190 = alloca %"class.chen::ip_address", align 4
  %191 = alloca i32, align 4
  %192 = alloca %"class.chen::ip_address", align 4
  %193 = alloca %"class.testing::Message", align 8
  %194 = alloca %"class.testing::internal::AssertHelper", align 8
  %195 = alloca %"class.testing::AssertionResult", align 8
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.chen::ip_address", align 4
  %198 = alloca %"class.chen::ip_address", align 4
  %199 = alloca %"class.testing::Message", align 8
  %200 = alloca %"class.testing::internal::AssertHelper", align 8
  %201 = alloca %"class.testing::AssertionResult", align 8
  %202 = alloca %"class.std::__cxx11::basic_string", align 8
  %203 = alloca %"class.chen::ip_address", align 4
  %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.chen::ip_address", align 4
  %211 = alloca %"class.testing::Message", align 8
  %212 = alloca %"class.testing::internal::AssertHelper", align 8
  %213 = alloca %"class.testing::AssertionResult", align 8
  %214 = alloca %"class.std::__cxx11::basic_string", align 8
  %215 = alloca %"class.chen::ip_version4", 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.testing::AssertionResult", align 8
  %220 = alloca i32, align 4
  %221 = alloca i64, align 8
  %222 = alloca %"class.chen::ip_address", align 4
  %223 = alloca %"class.testing::Message", align 8
  %224 = alloca %"class.testing::internal::AssertHelper", align 8
  %225 = alloca %"class.testing::AssertionResult", align 8
  %226 = alloca i8, align 1
  %227 = alloca %"class.chen::ip_address", align 4
  %228 = alloca %"class.testing::Message", align 8
  %229 = alloca %"class.testing::internal::AssertHelper", align 8
  %230 = alloca %"class.std::__cxx11::basic_string", align 8
  %231 = alloca %"class.testing::AssertionResult", align 8
  %232 = alloca i8, align 1
  %233 = alloca %"class.chen::ip_address", align 4
  %234 = alloca %"class.testing::Message", align 8
  %235 = alloca %"class.testing::internal::AssertHelper", align 8
  %236 = alloca %"class.std::__cxx11::basic_string", align 8
  %237 = alloca %"class.testing::AssertionResult", align 8
  %238 = alloca i8, align 1
  %239 = alloca %"class.chen::ip_address", align 4
  %240 = alloca %"class.testing::Message", align 8
  %241 = alloca %"class.testing::internal::AssertHelper", align 8
  %242 = alloca %"class.std::__cxx11::basic_string", align 8
  %243 = alloca %"class.testing::AssertionResult", align 8
  %244 = alloca i8, align 1
  %245 = alloca %"class.chen::ip_address", align 4
  %246 = alloca %"class.testing::Message", align 8
  %247 = alloca %"class.testing::internal::AssertHelper", align 8
  %248 = alloca %"class.std::__cxx11::basic_string", align 8
  %249 = alloca %"class.testing::AssertionResult", align 8
  %250 = alloca i8, align 1
  %251 = alloca %"class.chen::ip_address", align 4
  %252 = alloca %"class.testing::Message", align 8
  %253 = alloca %"class.testing::internal::AssertHelper", align 8
  %254 = alloca %"class.std::__cxx11::basic_string", align 8
  %255 = alloca %"class.testing::AssertionResult", align 8
  %256 = alloca i8, align 1
  %257 = alloca %"class.chen::ip_address", align 4
  %258 = alloca %"class.testing::Message", align 8
  %259 = alloca %"class.testing::internal::AssertHelper", align 8
  %260 = alloca %"class.std::__cxx11::basic_string", align 8
  %261 = alloca %"class.testing::AssertionResult", align 8
  %262 = alloca i8, align 1
  %263 = alloca %"class.chen::ip_address", align 4
  %264 = alloca %"class.testing::Message", align 8
  %265 = alloca %"class.testing::internal::AssertHelper", align 8
  %266 = alloca %"class.std::__cxx11::basic_string", align 8
  %267 = alloca %"class.testing::AssertionResult", align 8
  %268 = alloca i8, align 1
  %269 = alloca %"class.chen::ip_address", align 4
  %270 = alloca %"class.testing::Message", align 8
  %271 = alloca %"class.testing::internal::AssertHelper", align 8
  %272 = alloca %"class.std::__cxx11::basic_string", align 8
  %273 = alloca %"class.testing::AssertionResult", align 8
  %274 = alloca i8, align 1
  %275 = alloca %"class.chen::ip_address", align 4
  %276 = alloca %"class.testing::Message", align 8
  %277 = alloca %"class.testing::internal::AssertHelper", align 8
  %278 = alloca %"class.std::__cxx11::basic_string", align 8
  %279 = alloca %"class.testing::AssertionResult", align 8
  %280 = alloca i8, align 1
  %281 = alloca %"class.chen::ip_address", align 4
  %282 = alloca %"class.testing::Message", align 8
  %283 = alloca %"class.testing::internal::AssertHelper", align 8
  %284 = alloca %"class.std::__cxx11::basic_string", align 8
  %285 = alloca %"class.testing::AssertionResult", align 8
  %286 = alloca i8, align 1
  %287 = alloca %"class.chen::ip_address", align 4
  %288 = alloca %"class.testing::Message", align 8
  %289 = alloca %"class.testing::internal::AssertHelper", align 8
  %290 = alloca %"class.std::__cxx11::basic_string", align 8
  %291 = alloca %"class.testing::AssertionResult", align 8
  %292 = alloca i8, align 1
  %293 = alloca %"class.chen::ip_address", align 4
  %294 = alloca %"class.testing::Message", align 8
  %295 = alloca %"class.testing::internal::AssertHelper", align 8
  %296 = alloca %"class.std::__cxx11::basic_string", align 8
  %297 = alloca %"class.testing::AssertionResult", align 8
  %298 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %303 = alloca %"class.testing::AssertionResult", align 8
  %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.std::__cxx11::basic_string", align 8
  %309 = alloca %"class.testing::AssertionResult", align 8
  %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.std::__cxx11::basic_string", align 8
  %315 = alloca %"class.testing::AssertionResult", align 8
  %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 %"class.std::__cxx11::basic_string", align 8
  %321 = alloca %"class.testing::AssertionResult", align 8
  %322 = alloca i8, align 1
  %323 = alloca %"class.chen::ip_address", align 4
  %324 = alloca %"class.testing::Message", align 8
  %325 = alloca %"class.testing::internal::AssertHelper", align 8
  %326 = alloca %"class.std::__cxx11::basic_string", align 8
  %327 = alloca %"class.testing::AssertionResult", align 8
  %328 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %333 = alloca %"class.testing::AssertionResult", align 8
  %334 = alloca i8, align 1
  %335 = alloca %"class.chen::ip_address", align 4
  %336 = alloca %"class.testing::Message", align 8
  %337 = alloca %"class.testing::internal::AssertHelper", align 8
  %338 = alloca %"class.std::__cxx11::basic_string", align 8
  %339 = alloca %"class.testing::AssertionResult", align 8
  %340 = alloca i8, align 1
  %341 = alloca %"class.chen::ip_address", align 4
  %342 = alloca %"class.testing::Message", align 8
  %343 = alloca %"class.testing::internal::AssertHelper", align 8
  %344 = alloca %"class.std::__cxx11::basic_string", align 8
  %345 = alloca %"class.testing::AssertionResult", align 8
  %346 = alloca i8, align 1
  %347 = alloca %"class.chen::ip_address", align 4
  %348 = alloca %"class.testing::Message", align 8
  %349 = alloca %"class.testing::internal::AssertHelper", align 8
  %350 = alloca %"class.std::__cxx11::basic_string", align 8
  %351 = alloca %"class.testing::AssertionResult", align 8
  %352 = alloca i8, align 1
  %353 = alloca %"class.chen::ip_address", align 4
  %354 = alloca %"class.testing::Message", align 8
  %355 = alloca %"class.testing::internal::AssertHelper", align 8
  %356 = alloca %"class.std::__cxx11::basic_string", align 8
  %357 = alloca %"class.testing::AssertionResult", align 8
  %358 = alloca i8, align 1
  %359 = alloca %"class.chen::ip_address", align 4
  %360 = alloca %"class.testing::Message", align 8
  %361 = alloca %"class.testing::internal::AssertHelper", align 8
  %362 = alloca %"class.std::__cxx11::basic_string", align 8
  %363 = alloca %"class.testing::AssertionResult", align 8
  %364 = alloca i8, align 1
  %365 = alloca %"class.chen::ip_address", align 4
  %366 = alloca %"class.testing::Message", align 8
  %367 = alloca %"class.testing::internal::AssertHelper", align 8
  %368 = alloca %"class.std::__cxx11::basic_string", align 8
  %369 = alloca %"class.testing::AssertionResult", align 8
  %370 = alloca i8, align 1
  %371 = alloca %"class.chen::ip_address", align 4
  %372 = alloca %"class.testing::Message", align 8
  %373 = alloca %"class.testing::internal::AssertHelper", align 8
  %374 = alloca %"class.std::__cxx11::basic_string", align 8
  %375 = alloca %"class.testing::AssertionResult", align 8
  %376 = alloca i8, align 1
  %377 = alloca %"class.chen::ip_address", align 4
  %378 = alloca %"class.testing::Message", align 8
  %379 = alloca %"class.testing::internal::AssertHelper", align 8
  %380 = alloca %"class.std::__cxx11::basic_string", align 8
  %381 = alloca %"class.testing::AssertionResult", align 8
  %382 = alloca i8, align 1
  %383 = alloca %"class.chen::ip_address", align 4
  %384 = alloca %"class.testing::Message", align 8
  %385 = alloca %"class.testing::internal::AssertHelper", align 8
  %386 = alloca %"class.std::__cxx11::basic_string", align 8
  %387 = alloca %"class.testing::AssertionResult", align 8
  %388 = alloca i8, align 1
  %389 = alloca %"class.chen::ip_address", align 4
  %390 = alloca %"class.testing::Message", align 8
  %391 = alloca %"class.testing::internal::AssertHelper", align 8
  %392 = alloca %"class.std::__cxx11::basic_string", align 8
  %393 = alloca %"class.testing::AssertionResult", align 8
  %394 = alloca i8, align 1
  %395 = alloca %"class.chen::ip_address", align 4
  %396 = alloca %"class.testing::Message", align 8
  %397 = alloca %"class.testing::internal::AssertHelper", align 8
  %398 = alloca %"class.std::__cxx11::basic_string", align 8
  %399 = alloca %"class.testing::AssertionResult", align 8
  %400 = alloca i8, align 1
  %401 = alloca %"class.chen::ip_address", align 4
  %402 = alloca %"class.testing::Message", align 8
  %403 = alloca %"class.testing::internal::AssertHelper", align 8
  %404 = alloca %"class.std::__cxx11::basic_string", align 8
  %405 = alloca %"class.testing::AssertionResult", align 8
  %406 = alloca i8, align 1
  %407 = alloca %"class.chen::ip_address", align 4
  %408 = alloca %"class.testing::Message", align 8
  %409 = alloca %"class.testing::internal::AssertHelper", align 8
  %410 = alloca %"class.std::__cxx11::basic_string", align 8
  %411 = alloca %"class.testing::AssertionResult", align 8
  %412 = alloca i8, align 1
  %413 = alloca %"class.chen::ip_address", align 4
  %414 = alloca %"class.testing::Message", align 8
  %415 = alloca %"class.testing::internal::AssertHelper", align 8
  %416 = alloca %"class.std::__cxx11::basic_string", align 8
  %417 = alloca %"class.testing::AssertionResult", align 8
  %418 = alloca i8, align 1
  %419 = alloca %"class.chen::ip_address", align 4
  %420 = alloca %"class.testing::Message", align 8
  %421 = alloca %"class.testing::internal::AssertHelper", align 8
  %422 = alloca %"class.std::__cxx11::basic_string", align 8
  %423 = alloca %"class.testing::AssertionResult", align 8
  %424 = alloca i8, align 1
  %425 = alloca %"class.chen::ip_address", align 4
  %426 = alloca %"class.testing::Message", align 8
  %427 = alloca %"class.testing::internal::AssertHelper", align 8
  %428 = alloca %"class.std::__cxx11::basic_string", align 8
  %429 = alloca %"class.testing::AssertionResult", align 8
  %430 = alloca i8, align 1
  %431 = alloca %"class.chen::ip_address", align 4
  %432 = alloca %"class.testing::Message", align 8
  %433 = alloca %"class.testing::internal::AssertHelper", align 8
  %434 = alloca %"class.std::__cxx11::basic_string", align 8
  %435 = alloca %"class.testing::AssertionResult", align 8
  %436 = alloca i8, align 1
  %437 = alloca %"class.chen::ip_address", align 4
  %438 = alloca %"class.testing::Message", align 8
  %439 = alloca %"class.testing::internal::AssertHelper", align 8
  %440 = alloca %"class.std::__cxx11::basic_string", align 8
  %441 = alloca %"class.testing::AssertionResult", align 8
  %442 = alloca i8, align 1
  %443 = alloca %"class.chen::ip_address", align 4
  %444 = alloca %"class.testing::Message", align 8
  %445 = alloca %"class.testing::internal::AssertHelper", align 8
  %446 = alloca %"class.std::__cxx11::basic_string", align 8
  %447 = alloca %"class.testing::AssertionResult", align 8
  %448 = alloca i8, align 1
  %449 = alloca %"class.chen::ip_address", align 4
  %450 = alloca %"class.testing::Message", align 8
  %451 = alloca %"class.testing::internal::AssertHelper", align 8
  %452 = alloca %"class.std::__cxx11::basic_string", align 8
  %453 = alloca %"class.testing::AssertionResult", align 8
  %454 = alloca i8, align 1
  %455 = alloca %"class.chen::ip_address", align 4
  %456 = alloca %"class.testing::Message", align 8
  %457 = alloca %"class.testing::internal::AssertHelper", align 8
  %458 = alloca %"class.std::__cxx11::basic_string", align 8
  %459 = alloca %"class.testing::AssertionResult", align 8
  %460 = alloca i8, align 1
  %461 = alloca %"class.chen::ip_address", align 4
  %462 = alloca %"class.testing::Message", align 8
  %463 = alloca %"class.testing::internal::AssertHelper", align 8
  %464 = alloca %"class.std::__cxx11::basic_string", align 8
  %465 = alloca %"class.testing::AssertionResult", align 8
  %466 = alloca i8, align 1
  %467 = alloca %"class.chen::ip_address", align 4
  %468 = alloca %"class.testing::Message", align 8
  %469 = alloca %"class.testing::internal::AssertHelper", align 8
  %470 = alloca %"class.std::__cxx11::basic_string", align 8
  %471 = alloca %"class.testing::AssertionResult", align 8
  %472 = alloca i8, align 1
  %473 = alloca %"class.chen::ip_address", align 4
  %474 = alloca %"class.testing::Message", align 8
  %475 = alloca %"class.testing::internal::AssertHelper", align 8
  %476 = alloca %"class.std::__cxx11::basic_string", align 8
  %477 = alloca %"class.testing::AssertionResult", align 8
  %478 = alloca i8, align 1
  %479 = alloca %"class.chen::ip_address", align 4
  %480 = alloca %"class.testing::Message", align 8
  %481 = alloca %"class.testing::internal::AssertHelper", align 8
  %482 = alloca %"class.std::__cxx11::basic_string", align 8
  %483 = alloca %"class.testing::AssertionResult", align 8
  %484 = alloca i8, align 1
  %485 = alloca %"class.chen::ip_address", align 4
  %486 = alloca %"class.testing::Message", align 8
  %487 = alloca %"class.testing::internal::AssertHelper", align 8
  %488 = alloca %"class.std::__cxx11::basic_string", align 8
  %489 = alloca %"class.testing::AssertionResult", align 8
  %490 = alloca i8, align 1
  %491 = alloca %"class.chen::ip_address", align 4
  %492 = alloca %"class.testing::Message", align 8
  %493 = alloca %"class.testing::internal::AssertHelper", align 8
  %494 = alloca %"class.std::__cxx11::basic_string", align 8
  %495 = alloca %"class.testing::AssertionResult", align 8
  %496 = alloca i8, align 1
  %497 = alloca %"class.chen::ip_address", align 4
  %498 = alloca %"class.testing::Message", align 8
  %499 = alloca %"class.testing::internal::AssertHelper", align 8
  %500 = alloca %"class.std::__cxx11::basic_string", align 8
  %501 = alloca %"class.testing::AssertionResult", align 8
  %502 = alloca i8, align 1
  %503 = alloca %"class.chen::ip_address", align 4
  %504 = alloca %"class.testing::Message", align 8
  %505 = alloca %"class.testing::internal::AssertHelper", align 8
  %506 = alloca %"class.std::__cxx11::basic_string", align 8
  %507 = alloca %"class.testing::AssertionResult", align 8
  %508 = alloca i8, align 1
  %509 = alloca %"class.chen::ip_address", align 4
  %510 = alloca %"class.testing::Message", align 8
  %511 = alloca %"class.testing::internal::AssertHelper", align 8
  %512 = alloca %"class.std::__cxx11::basic_string", align 8
  %513 = alloca %"class.testing::AssertionResult", align 8
  %514 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %519 = alloca %"class.testing::AssertionResult", align 8
  %520 = alloca i8, align 1
  %521 = alloca %"class.chen::ip_address", align 4
  %522 = alloca %"class.testing::Message", align 8
  %523 = alloca %"class.testing::internal::AssertHelper", align 8
  %524 = alloca %"class.std::__cxx11::basic_string", align 8
  %525 = alloca %"class.testing::AssertionResult", align 8
  %526 = alloca i8, align 1
  %527 = alloca %"class.chen::ip_address", align 4
  %528 = alloca %"class.testing::Message", align 8
  %529 = alloca %"class.testing::internal::AssertHelper", align 8
  %530 = alloca %"class.std::__cxx11::basic_string", align 8
  %531 = alloca %"class.testing::AssertionResult", align 8
  %532 = alloca i8, align 1
  %533 = alloca %"class.chen::ip_address", align 4
  %534 = alloca %"class.testing::Message", align 8
  %535 = alloca %"class.testing::internal::AssertHelper", align 8
  %536 = alloca %"class.std::__cxx11::basic_string", align 8
  %537 = alloca %"class.testing::AssertionResult", align 8
  %538 = alloca i8, align 1
  %539 = alloca %"class.chen::ip_address", align 4
  %540 = alloca %"class.testing::Message", align 8
  %541 = alloca %"class.testing::internal::AssertHelper", align 8
  %542 = alloca %"class.std::__cxx11::basic_string", align 8
  %543 = alloca %"class.testing::AssertionResult", align 8
  %544 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %549 = alloca %"class.testing::AssertionResult", align 8
  %550 = alloca i8, align 1
  %551 = alloca %"class.chen::ip_address", align 4
  %552 = alloca %"class.testing::Message", align 8
  %553 = alloca %"class.testing::internal::AssertHelper", align 8
  %554 = alloca %"class.std::__cxx11::basic_string", align 8
  %555 = alloca %"class.testing::AssertionResult", align 8
  %556 = alloca i8, align 1
  %557 = alloca %"class.chen::ip_address", align 4
  %558 = alloca %"class.testing::Message", align 8
  %559 = alloca %"class.testing::internal::AssertHelper", align 8
  %560 = alloca %"class.std::__cxx11::basic_string", align 8
  %561 = alloca %"class.testing::AssertionResult", align 8
  %562 = alloca i8, align 1
  %563 = alloca %"class.chen::ip_address", align 4
  %564 = alloca %"class.testing::Message", align 8
  %565 = alloca %"class.testing::internal::AssertHelper", align 8
  %566 = alloca %"class.std::__cxx11::basic_string", align 8
  %567 = alloca %"class.testing::AssertionResult", align 8
  %568 = alloca i8, align 1
  %569 = alloca %"class.chen::ip_address", align 4
  %570 = alloca %"class.testing::Message", align 8
  %571 = alloca %"class.testing::internal::AssertHelper", align 8
  %572 = alloca %"class.std::__cxx11::basic_string", align 8
  %573 = alloca %"class.testing::AssertionResult", align 8
  %574 = alloca i8, align 1
  %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.std::__cxx11::basic_string", align 8
  %579 = alloca %"class.testing::AssertionResult", align 8
  %580 = alloca %"class.chen::ip_address", align 4
  %581 = alloca %"class.chen::ip_address", align 4
  %582 = alloca %"class.testing::Message", align 8
  %583 = alloca %"class.testing::internal::AssertHelper", align 8
  %584 = alloca %"class.testing::AssertionResult", align 8
  %585 = alloca %"class.chen::ip_address", align 4
  %586 = alloca %"class.chen::ip_address", align 4
  %587 = alloca %"class.testing::Message", align 8
  %588 = alloca %"class.testing::internal::AssertHelper", align 8
  %589 = alloca %"class.testing::AssertionResult", align 8
  %590 = alloca %"class.chen::ip_address", align 4
  %591 = alloca %"class.chen::ip_address", align 4
  %592 = alloca %"class.testing::Message", align 8
  %593 = alloca %"class.testing::internal::AssertHelper", align 8
  %594 = alloca %"class.testing::AssertionResult", align 8
  %595 = alloca %"class.chen::ip_address", align 4
  %596 = alloca %"class.chen::ip_address", align 4
  %597 = alloca %"class.testing::Message", align 8
  %598 = alloca %"class.testing::internal::AssertHelper", align 8
  %599 = alloca %"class.testing::AssertionResult", align 8
  %600 = alloca %"class.chen::ip_address", align 4
  %601 = alloca %"class.chen::ip_address", align 4
  %602 = alloca %"class.testing::Message", align 8
  %603 = alloca %"class.testing::internal::AssertHelper", align 8
  %604 = alloca %"class.testing::AssertionResult", align 8
  %605 = alloca %"class.chen::ip_address", align 4
  %606 = alloca %"class.chen::ip_address", align 4
  %607 = alloca %"class.testing::Message", align 8
  %608 = alloca %"class.testing::internal::AssertHelper", align 8
  %609 = alloca %"class.testing::AssertionResult", align 8
  %610 = alloca %"class.chen::ip_address", align 4
  %611 = alloca %"class.chen::ip_address", align 4
  %612 = alloca %"class.testing::Message", align 8
  %613 = alloca %"class.testing::internal::AssertHelper", align 8
  %614 = alloca %"class.testing::AssertionResult", align 8
  %615 = alloca %"class.chen::ip_address", align 4
  %616 = alloca %"class.chen::ip_address", align 4
  %617 = alloca %"class.testing::Message", align 8
  %618 = alloca %"class.testing::internal::AssertHelper", align 8
  %619 = alloca %"class.testing::AssertionResult", align 8
  %620 = alloca %"class.chen::ip_address", align 4
  %621 = alloca %"class.chen::ip_address", align 4
  %622 = alloca %"class.testing::Message", align 8
  %623 = alloca %"class.testing::internal::AssertHelper", align 8
  %624 = alloca %"class.testing::AssertionResult", align 8
  %625 = alloca %"class.chen::ip_address", align 4
  %626 = alloca %"class.chen::ip_address", align 4
  %627 = alloca %"class.testing::Message", align 8
  %628 = alloca %"class.testing::internal::AssertHelper", align 8
  %629 = alloca %"class.testing::AssertionResult", align 8
  %630 = alloca %"class.chen::ip_address", align 4
  %631 = alloca %"class.chen::ip_address", align 4
  %632 = alloca %"class.testing::Message", align 8
  %633 = alloca %"class.testing::internal::AssertHelper", align 8
  %634 = alloca %"class.testing::AssertionResult", align 8
  %635 = alloca %"class.chen::ip_address", align 4
  %636 = alloca %"class.chen::ip_address", align 4
  %637 = alloca %"class.testing::Message", align 8
  %638 = alloca %"class.testing::internal::AssertHelper", align 8
  %639 = alloca %"class.testing::AssertionResult", align 8
  %640 = alloca %"class.chen::ip_address", align 4
  %641 = alloca %"class.chen::ip_address", align 4
  %642 = alloca %"class.testing::Message", align 8
  %643 = alloca %"class.testing::internal::AssertHelper", align 8
  %644 = alloca %"class.testing::AssertionResult", align 8
  %645 = alloca %"class.chen::ip_address", align 4
  %646 = alloca %"class.chen::ip_address", align 4
  %647 = alloca %"class.testing::Message", align 8
  %648 = alloca %"class.testing::internal::AssertHelper", align 8
  %649 = alloca %"class.testing::AssertionResult", align 8
  %650 = alloca %"class.std::__cxx11::basic_string", align 8
  %651 = alloca %"class.chen::ip_address", align 4
  %652 = alloca %"class.testing::Message", align 8
  %653 = alloca %"class.testing::internal::AssertHelper", align 8
  %654 = alloca %"class.testing::AssertionResult", align 8
  %655 = alloca %"class.std::__cxx11::basic_string", align 8
  %656 = alloca %"class.chen::ip_address", align 4
  %657 = alloca %"class.testing::Message", align 8
  %658 = alloca %"class.testing::internal::AssertHelper", align 8
  %659 = alloca i8, align 1
  %660 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %661 = alloca %"class.std::__cxx11::basic_string", align 8
  %662 = alloca %"class.std::allocator", align 1
  %663 = alloca %"class.testing::Message", align 8
  %664 = alloca %"class.testing::internal::AssertHelper", align 8
  %665 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %666 = alloca %"class.std::__cxx11::basic_string", align 8
  %667 = alloca %"class.std::allocator", align 1
  %668 = alloca %"class.testing::Message", align 8
  %669 = alloca %"class.testing::internal::AssertHelper", align 8
  %670 = alloca %"struct.testing::internal::ConstCharPtr", align 8
  %671 = alloca %"class.std::__cxx11::basic_string", align 8
  %672 = alloca %"class.std::allocator", align 1
  %673 = alloca %"class.testing::Message", align 8
  %674 = alloca %"class.testing::internal::AssertHelper", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %3) #7
  call void @_ZN4chen10ip_addressC1ENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %3, i8 noundef zeroext 2)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %4) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %4, ptr noundef nonnull @.str.43)
  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.35, ptr noundef nonnull @.str.42, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %3) #7
  %675 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
  br i1 %675, label %690, label %676

676:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %677 unwind label %682

677:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  %678 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %679 unwind label %684

679:                                              ; preds = %677
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 58, ptr noundef %678)
          to label %680 unwind label %684

680:                                              ; preds = %679
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %681 unwind label %686

681:                                              ; preds = %680
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  br label %690

682:                                              ; preds = %676
  %683 = landingpad { ptr, i32 }
          cleanup
  br label %689

684:                                              ; preds = %679, %677
  %685 = landingpad { ptr, i32 }
          cleanup
  br label %688

686:                                              ; preds = %680
  %687 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  br label %688

688:                                              ; preds = %686, %684
  %.pn = phi { ptr, i32 } [ %687, %686 ], [ %685, %684 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br label %689

689:                                              ; preds = %688, %682
  %.pn.pn = phi { ptr, i32 } [ %.pn, %688 ], [ %683, %682 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  br label %3132

690:                                              ; preds = %1, %681
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %8) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %8, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %9) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %9, ptr noundef nonnull @.str.45)
  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.44, ptr noundef nonnull @.str.44, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %8) #7
  %691 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  br i1 %691, label %706, label %692

692:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %693 unwind label %698

693:                                              ; preds = %692
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %694 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %695 unwind label %700

695:                                              ; preds = %693
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 60, ptr noundef %694)
          to label %696 unwind label %700

696:                                              ; preds = %695
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %697 unwind label %702

697:                                              ; preds = %696
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %706

698:                                              ; preds = %692
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %705

700:                                              ; preds = %695, %693
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %704

702:                                              ; preds = %696
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br label %704

704:                                              ; preds = %702, %700
  %.pn440 = phi { ptr, i32 } [ %703, %702 ], [ %701, %700 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %705

705:                                              ; preds = %704, %698
  %.pn440.pn = phi { ptr, i32 } [ %.pn440, %704 ], [ %699, %698 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %3132

706:                                              ; preds = %690, %697
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %13) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %13, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %707 unwind label %711

707:                                              ; preds = %706
  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 8)
          to label %708 unwind label %713

708:                                              ; preds = %707
  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.44, ptr noundef nonnull @.str.46, ptr noundef nonnull align 4 dereferenceable(28) %13, ptr noundef nonnull align 4 dereferenceable(28) %14)
          to label %709 unwind label %713

709:                                              ; preds = %708
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #7
  %710 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  br i1 %710, label %730, label %716

711:                                              ; preds = %706
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %715

713:                                              ; preds = %708, %707
  %714 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %715

715:                                              ; preds = %713, %711
  %.pn443 = phi { ptr, i32 } [ %714, %713 ], [ %712, %711 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #7
  br label %736

716:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %717 unwind label %722

717:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %718 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %719 unwind label %724

719:                                              ; preds = %717
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 61, ptr noundef %718)
          to label %720 unwind label %724

720:                                              ; preds = %719
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %721 unwind label %726

721:                                              ; preds = %720
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %730

722:                                              ; preds = %716
  %723 = landingpad { ptr, i32 }
          cleanup
  br label %729

724:                                              ; preds = %719, %717
  %725 = landingpad { ptr, i32 }
          cleanup
  br label %728

726:                                              ; preds = %720
  %727 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br label %728

728:                                              ; preds = %726, %724
  %.pn445 = phi { ptr, i32 } [ %727, %726 ], [ %725, %724 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %729

729:                                              ; preds = %728, %722
  %.pn445.pn = phi { ptr, i32 } [ %.pn445, %728 ], [ %723, %722 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %736

730:                                              ; preds = %709, %721
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %20) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %20, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %731 unwind label %737

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %732 unwind label %739

732:                                              ; preds = %731
  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 %733 unwind label %741

733:                                              ; preds = %732
  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.44, ptr noundef nonnull @.str.47, ptr noundef nonnull align 4 dereferenceable(28) %20, ptr noundef nonnull align 4 dereferenceable(28) %21)
          to label %734 unwind label %741

734:                                              ; preds = %733
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %20) #7
  %735 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
  br i1 %735, label %759, label %745

736:                                              ; preds = %729, %715
  %.pn445.pn.pn = phi { ptr, i32 } [ %.pn445.pn, %729 ], [ %.pn443, %715 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %3132

737:                                              ; preds = %730
  %738 = landingpad { ptr, i32 }
          cleanup
  br label %744

739:                                              ; preds = %731
  %740 = landingpad { ptr, i32 }
          cleanup
  br label %743

741:                                              ; preds = %733, %732
  %742 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %743

743:                                              ; preds = %741, %739
  %.pn449 = phi { ptr, i32 } [ %742, %741 ], [ %740, %739 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %744

744:                                              ; preds = %743, %737
  %.pn449.pn = phi { ptr, i32 } [ %.pn449, %743 ], [ %738, %737 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %20) #7
  br label %761

745:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %746 unwind label %751

746:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %747 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %748 unwind label %753

748:                                              ; preds = %746
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 62, ptr noundef %747)
          to label %749 unwind label %753

749:                                              ; preds = %748
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %750 unwind label %755

750:                                              ; preds = %749
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  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) %27) #7
  br label %757

757:                                              ; preds = %755, %753
  %.pn452 = phi { ptr, i32 } [ %756, %755 ], [ %754, %753 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br label %758

758:                                              ; preds = %757, %751
  %.pn452.pn = phi { ptr, i32 } [ %.pn452, %757 ], [ %752, %751 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %761

759:                                              ; preds = %734, %750
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %29) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %29, ptr noundef nonnull @.str.17)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %30) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %30, ptr noundef nonnull @.str.51)
  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.49, ptr noundef nonnull @.str.50, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %29) #7
  %760 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  br i1 %760, label %776, label %762

761:                                              ; preds = %758, %744
  %.pn452.pn.pn = phi { ptr, i32 } [ %.pn452.pn, %758 ], [ %.pn449.pn, %744 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br label %3132

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

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

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

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

767:                                              ; preds = %766
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  br label %776

768:                                              ; preds = %762
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %775

770:                                              ; preds = %765, %763
  %771 = landingpad { ptr, i32 }
          cleanup
  br label %774

772:                                              ; preds = %766
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %774

774:                                              ; preds = %772, %770
  %.pn456 = phi { ptr, i32 } [ %773, %772 ], [ %771, %770 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br label %775

775:                                              ; preds = %774, %768
  %.pn456.pn = phi { ptr, i32 } [ %.pn456, %774 ], [ %769, %768 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %3132

776:                                              ; preds = %759, %767
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %34) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %34, ptr noundef nonnull @.str.54)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %35) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %35, ptr noundef nonnull @.str.7)
  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.52, ptr noundef nonnull @.str.53, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %34) #7
  %777 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  br i1 %777, label %792, label %778

778:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %779 unwind label %784

779:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  %780 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %781 unwind label %786

781:                                              ; preds = %779
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 65, ptr noundef %780)
          to label %782 unwind label %786

782:                                              ; preds = %781
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %783 unwind label %788

783:                                              ; preds = %782
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %792

784:                                              ; preds = %778
  %785 = landingpad { ptr, i32 }
          cleanup
  br label %791

786:                                              ; preds = %781, %779
  %787 = landingpad { ptr, i32 }
          cleanup
  br label %790

788:                                              ; preds = %782
  %789 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br label %790

790:                                              ; preds = %788, %786
  %.pn459 = phi { ptr, i32 } [ %789, %788 ], [ %787, %786 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br label %791

791:                                              ; preds = %790, %784
  %.pn459.pn = phi { ptr, i32 } [ %.pn459, %790 ], [ %785, %784 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %3132

792:                                              ; preds = %776, %783
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %39) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %39, ptr noundef nonnull @.str.57)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %40) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %40, ptr noundef nonnull @.str.58)
  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.55, ptr noundef nonnull @.str.56, 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) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %39) #7
  %793 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
  br i1 %793, label %808, label %794

794:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %795 unwind label %800

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %796 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %797 unwind label %802

797:                                              ; preds = %795
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 66, ptr noundef %796)
          to label %798 unwind label %802

798:                                              ; preds = %797
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %799 unwind label %804

799:                                              ; preds = %798
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %808

800:                                              ; preds = %794
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %807

802:                                              ; preds = %797, %795
  %803 = landingpad { ptr, i32 }
          cleanup
  br label %806

804:                                              ; preds = %798
  %805 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  br label %806

806:                                              ; preds = %804, %802
  %.pn462 = phi { ptr, i32 } [ %805, %804 ], [ %803, %802 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br label %807

807:                                              ; preds = %806, %800
  %.pn462.pn = phi { ptr, i32 } [ %.pn462, %806 ], [ %801, %800 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %3132

808:                                              ; preds = %792, %799
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %45, i32 noundef 2130706433)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %44, ptr noundef nonnull align 4 dereferenceable(8) %45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %46) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %46, ptr noundef nonnull @.str.7)
  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.59, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %44, ptr noundef nonnull align 4 dereferenceable(28) %46)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %44) #7
  %809 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
  br i1 %809, label %824, label %810

810:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %811 unwind label %816

811:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #7
  %812 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %813 unwind label %818

813:                                              ; preds = %811
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 68, ptr noundef %812)
          to label %814 unwind label %818

814:                                              ; preds = %813
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %815 unwind label %820

815:                                              ; preds = %814
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  br label %824

816:                                              ; preds = %810
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %823

818:                                              ; preds = %813, %811
  %819 = landingpad { ptr, i32 }
          cleanup
  br label %822

820:                                              ; preds = %814
  %821 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br label %822

822:                                              ; preds = %820, %818
  %.pn465 = phi { ptr, i32 } [ %821, %820 ], [ %819, %818 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br label %823

823:                                              ; preds = %822, %816
  %.pn465.pn = phi { ptr, i32 } [ %.pn465, %822 ], [ %817, %816 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  br label %3132

824:                                              ; preds = %808, %815
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  call void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef 2130706433, i8 noundef zeroext 8)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %50, ptr noundef nonnull align 4 dereferenceable(8) %51)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %52) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %52, ptr noundef nonnull @.str.45)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %49, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %50, ptr noundef nonnull align 4 dereferenceable(28) %52)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %50) #7
  %825 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
  br i1 %825, label %840, label %826

826:                                              ; preds = %824
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %827 unwind label %832

827:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #7
  %828 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %829 unwind label %834

829:                                              ; preds = %827
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 69, ptr noundef %828)
          to label %830 unwind label %834

830:                                              ; preds = %829
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %831 unwind label %836

831:                                              ; preds = %830
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  br label %840

832:                                              ; preds = %826
  %833 = landingpad { ptr, i32 }
          cleanup
  br label %839

834:                                              ; preds = %829, %827
  %835 = landingpad { ptr, i32 }
          cleanup
  br label %838

836:                                              ; preds = %830
  %837 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  br label %838

838:                                              ; preds = %836, %834
  %.pn468 = phi { ptr, i32 } [ %837, %836 ], [ %835, %834 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %839

839:                                              ; preds = %838, %832
  %.pn468.pn = phi { ptr, i32 } [ %.pn468, %838 ], [ %833, %832 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br label %3132

840:                                              ; preds = %824, %831
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %841 unwind label %847

841:                                              ; preds = %840
  invoke void @_ZN4chen11ip_version4C1EjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(8) %57, i32 noundef 2130706433, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %842 unwind label %849

842:                                              ; preds = %841
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %56, ptr noundef nonnull align 4 dereferenceable(8) %57)
          to label %843 unwind label %849

843:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %60) #7
  invoke void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %60, ptr noundef nonnull @.str.45)
          to label %844 unwind label %851

844:                                              ; preds = %843
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %55, ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %56, ptr noundef nonnull align 4 dereferenceable(28) %60)
          to label %845 unwind label %851

845:                                              ; preds = %844
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %60) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %56) #7
  %846 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
  br i1 %846, label %869, label %855

847:                                              ; preds = %840
  %848 = landingpad { ptr, i32 }
          cleanup
  br label %854

849:                                              ; preds = %842, %841
  %850 = landingpad { ptr, i32 }
          cleanup
  br label %853

851:                                              ; preds = %844, %843
  %852 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %60) #7
  br label %853

853:                                              ; preds = %851, %849
  %.pn471 = phi { ptr, i32 } [ %852, %851 ], [ %850, %849 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  br label %854

854:                                              ; preds = %853, %847
  %.pn471.pn = phi { ptr, i32 } [ %.pn471, %853 ], [ %848, %847 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %56) #7
  br label %877

855:                                              ; preds = %845
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %856 unwind label %861

856:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  %857 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %858 unwind label %863

858:                                              ; preds = %856
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %62, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 70, ptr noundef %857)
          to label %859 unwind label %863

859:                                              ; preds = %858
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %860 unwind label %865

860:                                              ; preds = %859
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  br label %869

861:                                              ; preds = %855
  %862 = landingpad { ptr, i32 }
          cleanup
  br label %868

863:                                              ; preds = %858, %856
  %864 = landingpad { ptr, i32 }
          cleanup
  br label %867

865:                                              ; preds = %859
  %866 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  br label %867

867:                                              ; preds = %865, %863
  %.pn474 = phi { ptr, i32 } [ %866, %865 ], [ %864, %863 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br label %868

868:                                              ; preds = %867, %861
  %.pn474.pn = phi { ptr, i32 } [ %.pn474, %867 ], [ %862, %861 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  br label %877

869:                                              ; preds = %845, %860
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull @.str.27)
  %870 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %63)
  br i1 %870, label %871, label %.thread

871:                                              ; preds = %869
  %872 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %873 unwind label %878

873:                                              ; preds = %871
  br i1 %872, label %874, label %.critedge

874:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %875 unwind label %880

875:                                              ; preds = %874
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %64, ptr noundef nonnull align 8 dereferenceable(32) %65, i8 noundef zeroext 33)
          to label %876 unwind label %882

876:                                              ; preds = %875
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  br label %.critedge

877:                                              ; preds = %868, %854
  %.pn474.pn.pn = phi { ptr, i32 } [ %.pn474.pn, %868 ], [ %.pn471.pn, %854 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #7
  br label %3132

878:                                              ; preds = %871
  %879 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %885

880:                                              ; preds = %874
  %881 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %884

882:                                              ; preds = %875
  %883 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %884

884:                                              ; preds = %882, %880
  %.pn478 = phi { ptr, i32 } [ %883, %882 ], [ %881, %880 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  br label %885

885:                                              ; preds = %884, %878
  %.pn478.pn = phi { ptr, i32 } [ %.pn478, %884 ], [ %879, %878 ]
  %.29 = extractvalue { ptr, i32 } %.pn478.pn, 0
  %.29128 = extractvalue { ptr, i32 } %.pn478.pn, 1
  %886 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #7
  %887 = icmp eq i32 %.29128, %886
  %888 = call ptr @__cxa_begin_catch(ptr %.29) #7
  br i1 %887, label %890, label %889

.critedge:                                        ; preds = %873, %876
  store ptr @.str.63, ptr %63, align 8, !tbaa !5
  br label %.thread

889:                                              ; preds = %885
  store ptr @.str.62, ptr %63, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread

890:                                              ; preds = %885
  call void @__cxa_end_catch()
  br label %899

.thread:                                          ; preds = %889, %.critedge, %869
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #7
  %891 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %68, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 72, ptr noundef %891)
          to label %892 unwind label %894

892:                                              ; preds = %.thread
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %893 unwind label %896

893:                                              ; preds = %892
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  br label %899

894:                                              ; preds = %.thread
  %895 = landingpad { ptr, i32 }
          cleanup
  br label %898

896:                                              ; preds = %892
  %897 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  br label %898

898:                                              ; preds = %896, %894
  %.pn481 = phi { ptr, i32 } [ %897, %896 ], [ %895, %894 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  br label %3132

899:                                              ; preds = %890, %893
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull @.str.27)
  %900 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %69)
  br i1 %900, label %901, label %.thread912

901:                                              ; preds = %899
  %902 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %903 unwind label %907

903:                                              ; preds = %901
  br i1 %902, label %904, label %.critedge894

904:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #7
  invoke void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %71, i32 noundef 2130706433, i8 noundef zeroext 33)
          to label %905 unwind label %909

905:                                              ; preds = %904
  invoke void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %70, ptr noundef nonnull align 4 dereferenceable(8) %71)
          to label %906 unwind label %909

906:                                              ; preds = %905
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  br label %.critedge894

907:                                              ; preds = %901
  %908 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %911

909:                                              ; preds = %905, %904
  %910 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  br label %911

911:                                              ; preds = %909, %907
  %.pn483 = phi { ptr, i32 } [ %910, %909 ], [ %908, %907 ]
  %.31 = extractvalue { ptr, i32 } %.pn483, 0
  %.31130 = extractvalue { ptr, i32 } %.pn483, 1
  %912 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #7
  %913 = icmp eq i32 %.31130, %912
  %914 = call ptr @__cxa_begin_catch(ptr %.31) #7
  br i1 %913, label %916, label %915

.critedge894:                                     ; preds = %903, %906
  store ptr @.str.65, ptr %69, align 8, !tbaa !5
  br label %.thread912

915:                                              ; preds = %911
  store ptr @.str.64, ptr %69, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread912

916:                                              ; preds = %911
  call void @__cxa_end_catch()
  br label %925

.thread912:                                       ; preds = %915, %.critedge894, %899
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  %917 = load ptr, ptr %69, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %73, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 73, ptr noundef %917)
          to label %918 unwind label %920

918:                                              ; preds = %.thread912
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %919 unwind label %922

919:                                              ; preds = %918
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  br label %925

920:                                              ; preds = %.thread912
  %921 = landingpad { ptr, i32 }
          cleanup
  br label %924

922:                                              ; preds = %918
  %923 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br label %924

924:                                              ; preds = %922, %920
  %.pn485 = phi { ptr, i32 } [ %923, %922 ], [ %921, %920 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  br label %3132

925:                                              ; preds = %916, %919
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %74) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %74, ptr noundef nonnull @.str.17)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #7
  %926 = call noundef zeroext i1 @_ZNK4chen10ip_address6isIPv4Ev(ptr noundef nonnull align 4 dereferenceable(28) %74)
  %927 = zext i1 %926 to i8
  store i8 %927, ptr %76, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 1 dereferenceable(1) %76, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #7
  %928 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  br i1 %928, label %946, label %929

929:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %930 unwind label %935

930:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %931 unwind label %937

931:                                              ; preds = %930
  %932 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %78, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 76, ptr noundef %932)
          to label %933 unwind label %939

933:                                              ; preds = %931
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %934 unwind label %941

934:                                              ; preds = %933
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #7
  br label %946

935:                                              ; preds = %929
  %936 = landingpad { ptr, i32 }
          cleanup
  br label %945

937:                                              ; preds = %930
  %938 = landingpad { ptr, i32 }
          cleanup
  br label %944

939:                                              ; preds = %931
  %940 = landingpad { ptr, i32 }
          cleanup
  br label %943

941:                                              ; preds = %933
  %942 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  br label %943

943:                                              ; preds = %941, %939
  %.pn487 = phi { ptr, i32 } [ %942, %941 ], [ %940, %939 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  br label %944

944:                                              ; preds = %943, %937
  %.pn487.pn = phi { ptr, i32 } [ %.pn487, %943 ], [ %938, %937 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #7
  br label %945

945:                                              ; preds = %944, %935
  %.pn487.pn.pn = phi { ptr, i32 } [ %.pn487.pn, %944 ], [ %936, %935 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #7
  br label %3131

946:                                              ; preds = %925, %934
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 4 dereferenceable(28) %74, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %80, ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(10) @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %947 unwind label %949

947:                                              ; preds = %946
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  %948 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  br i1 %948, label %965, label %951

949:                                              ; preds = %946
  %950 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %969

951:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %952 unwind label %957

952:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #7
  %953 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %954 unwind label %959

954:                                              ; preds = %952
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %83, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 77, ptr noundef %953)
          to label %955 unwind label %959

955:                                              ; preds = %954
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %956 unwind label %961

956:                                              ; preds = %955
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  br label %965

957:                                              ; preds = %951
  %958 = landingpad { ptr, i32 }
          cleanup
  br label %964

959:                                              ; preds = %954, %952
  %960 = landingpad { ptr, i32 }
          cleanup
  br label %963

961:                                              ; preds = %955
  %962 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #7
  br label %963

963:                                              ; preds = %961, %959
  %.pn491 = phi { ptr, i32 } [ %962, %961 ], [ %960, %959 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br label %964

964:                                              ; preds = %963, %957
  %.pn491.pn = phi { ptr, i32 } [ %.pn491, %963 ], [ %958, %957 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #7
  br label %969

965:                                              ; preds = %947, %956
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %85) #7
  store i32 4, ptr %85, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %87) #7
  call void @_ZNK4chen10ip_address5bytesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %87, ptr noundef nonnull align 4 dereferenceable(28) %74)
  %966 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  store i64 %966, ptr %86, align 8, !tbaa !14
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %84, ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.70, ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %967 unwind label %970

967:                                              ; preds = %965
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #7
  %968 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
  br i1 %968, label %986, label %972

969:                                              ; preds = %964, %949
  %.pn491.pn.pn = phi { ptr, i32 } [ %.pn491.pn, %964 ], [ %950, %949 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #7
  br label %3131

970:                                              ; preds = %965
  %971 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #7
  br label %990

972:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %973 unwind label %978

973:                                              ; preds = %972
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #7
  %974 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %975 unwind label %980

975:                                              ; preds = %973
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 78, ptr noundef %974)
          to label %976 unwind label %980

976:                                              ; preds = %975
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %977 unwind label %982

977:                                              ; preds = %976
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  br label %986

978:                                              ; preds = %972
  %979 = landingpad { ptr, i32 }
          cleanup
  br label %985

980:                                              ; preds = %975, %973
  %981 = landingpad { ptr, i32 }
          cleanup
  br label %984

982:                                              ; preds = %976
  %983 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  br label %984

984:                                              ; preds = %982, %980
  %.pn495 = phi { ptr, i32 } [ %983, %982 ], [ %981, %980 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  br label %985

985:                                              ; preds = %984, %978
  %.pn495.pn = phi { ptr, i32 } [ %.pn495, %984 ], [ %979, %978 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  br label %990

986:                                              ; preds = %967, %977
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  %987 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28) %74, i8 noundef zeroext 2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 4 dereferenceable(28) %74, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %90, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(8) @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %988 unwind label %991

988:                                              ; preds = %986
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  %989 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
  br i1 %989, label %1007, label %993

990:                                              ; preds = %985, %970
  %.pn495.pn.pn = phi { ptr, i32 } [ %.pn495.pn, %985 ], [ %971, %970 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #7
  br label %3131

991:                                              ; preds = %986
  %992 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  br label %1011

993:                                              ; preds = %988
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %994 unwind label %999

994:                                              ; preds = %993
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #7
  %995 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %996 unwind label %1001

996:                                              ; preds = %994
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 81, ptr noundef %995)
          to label %997 unwind label %1001

997:                                              ; preds = %996
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %998 unwind label %1003

998:                                              ; preds = %997
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  br label %1007

999:                                              ; preds = %993
  %1000 = landingpad { ptr, i32 }
          cleanup
  br label %1006

1001:                                             ; preds = %996, %994
  %1002 = landingpad { ptr, i32 }
          cleanup
  br label %1005

1003:                                             ; preds = %997
  %1004 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  br label %1005

1005:                                             ; preds = %1003, %1001
  %.pn499 = phi { ptr, i32 } [ %1004, %1003 ], [ %1002, %1001 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  br label %1006

1006:                                             ; preds = %1005, %999
  %.pn499.pn = phi { ptr, i32 } [ %.pn499, %1005 ], [ %1000, %999 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  br label %1011

1007:                                             ; preds = %988, %998
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  %1008 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSEPKc(ptr noundef nonnull align 4 dereferenceable(28) %74, ptr noundef nonnull @.str.72)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 4 dereferenceable(28) %74, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %94, ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(15) @.str.72, ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %1009 unwind label %1012

1009:                                             ; preds = %1007
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  %1010 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %94)
  br i1 %1010, label %1028, label %1014

1011:                                             ; preds = %1006, %991
  %.pn499.pn.pn = phi { ptr, i32 } [ %.pn499.pn, %1006 ], [ %992, %991 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  br label %3131

1012:                                             ; preds = %1007
  %1013 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  br label %1031

1014:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1015 unwind label %1020

1015:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #7
  %1016 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %1017 unwind label %1022

1017:                                             ; preds = %1015
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %97, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 84, ptr noundef %1016)
          to label %1018 unwind label %1022

1018:                                             ; preds = %1017
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1019 unwind label %1024

1019:                                             ; preds = %1018
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #7
  br label %1028

1020:                                             ; preds = %1014
  %1021 = landingpad { ptr, i32 }
          cleanup
  br label %1027

1022:                                             ; preds = %1017, %1015
  %1023 = landingpad { ptr, i32 }
          cleanup
  br label %1026

1024:                                             ; preds = %1018
  %1025 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  br label %1026

1026:                                             ; preds = %1024, %1022
  %.pn503 = phi { ptr, i32 } [ %1025, %1024 ], [ %1023, %1022 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  br label %1027

1027:                                             ; preds = %1026, %1020
  %.pn503.pn = phi { ptr, i32 } [ %.pn503, %1026 ], [ %1021, %1020 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #7
  br label %1031

1028:                                             ; preds = %1009, %1019
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %98) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #7
  store i32 24, ptr %99, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #7
  %1029 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %74)
  store i8 %1029, ptr %100, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %98, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %99, ptr noundef nonnull align 1 dereferenceable(1) %100)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #7
  %1030 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
  br i1 %1030, label %1046, label %1032

1031:                                             ; preds = %1027, %1012
  %.pn503.pn.pn = phi { ptr, i32 } [ %.pn503.pn, %1027 ], [ %1013, %1012 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #7
  br label %3131

1032:                                             ; preds = %1028
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1033 unwind label %1038

1033:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #7
  %1034 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1035 unwind label %1040

1035:                                             ; preds = %1033
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %102, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 85, ptr noundef %1034)
          to label %1036 unwind label %1040

1036:                                             ; preds = %1035
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1037 unwind label %1042

1037:                                             ; preds = %1036
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  br label %1046

1038:                                             ; preds = %1032
  %1039 = landingpad { ptr, i32 }
          cleanup
  br label %1045

1040:                                             ; preds = %1035, %1033
  %1041 = landingpad { ptr, i32 }
          cleanup
  br label %1044

1042:                                             ; preds = %1036
  %1043 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  br label %1044

1044:                                             ; preds = %1042, %1040
  %.pn507 = phi { ptr, i32 } [ %1043, %1042 ], [ %1041, %1040 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #7
  br label %1045

1045:                                             ; preds = %1044, %1038
  %.pn507.pn = phi { ptr, i32 } [ %.pn507, %1044 ], [ %1039, %1038 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #7
  br label %3131

1046:                                             ; preds = %1028, %1037
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %103, i32 noundef 2130706433)
  %1047 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %74, ptr noundef nonnull align 4 dereferenceable(8) %103)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %104) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #7
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %105, ptr noundef nonnull align 4 dereferenceable(28) %74, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %104, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %1048 unwind label %1050

1048:                                             ; preds = %1046
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #7
  %1049 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %104)
  br i1 %1049, label %1066, label %1052

1050:                                             ; preds = %1046
  %1051 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #7
  br label %1069

1052:                                             ; preds = %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %1053 unwind label %1058

1053:                                             ; preds = %1052
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #7
  %1054 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %104)
          to label %1055 unwind label %1060

1055:                                             ; preds = %1053
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %107, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 88, ptr noundef %1054)
          to label %1056 unwind label %1060

1056:                                             ; preds = %1055
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %1057 unwind label %1062

1057:                                             ; preds = %1056
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  br label %1066

1058:                                             ; preds = %1052
  %1059 = landingpad { ptr, i32 }
          cleanup
  br label %1065

1060:                                             ; preds = %1055, %1053
  %1061 = landingpad { ptr, i32 }
          cleanup
  br label %1064

1062:                                             ; preds = %1056
  %1063 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #7
  br label %1064

1064:                                             ; preds = %1062, %1060
  %.pn510 = phi { ptr, i32 } [ %1063, %1062 ], [ %1061, %1060 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #7
  br label %1065

1065:                                             ; preds = %1064, %1058
  %.pn510.pn = phi { ptr, i32 } [ %.pn510, %1064 ], [ %1059, %1058 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #7
  br label %1069

1066:                                             ; preds = %1048, %1057
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %109) #7
  store i32 32, ptr %109, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #7
  %1067 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %74)
  store i8 %1067, ptr %110, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %108, ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %109, ptr noundef nonnull align 1 dereferenceable(1) %110)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #7
  %1068 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
  br i1 %1068, label %1084, label %1070

1069:                                             ; preds = %1065, %1050
  %.pn510.pn.pn = phi { ptr, i32 } [ %.pn510.pn, %1065 ], [ %1051, %1050 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #7
  br label %3131

1070:                                             ; preds = %1066
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %111) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %1071 unwind label %1076

1071:                                             ; preds = %1070
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %112) #7
  %1072 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %1073 unwind label %1078

1073:                                             ; preds = %1071
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %112, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 89, ptr noundef %1072)
          to label %1074 unwind label %1078

1074:                                             ; preds = %1073
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %1075 unwind label %1080

1075:                                             ; preds = %1074
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %111) #7
  br label %1084

1076:                                             ; preds = %1070
  %1077 = landingpad { ptr, i32 }
          cleanup
  br label %1083

1078:                                             ; preds = %1073, %1071
  %1079 = landingpad { ptr, i32 }
          cleanup
  br label %1082

1080:                                             ; preds = %1074
  %1081 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #7
  br label %1082

1082:                                             ; preds = %1080, %1078
  %.pn514 = phi { ptr, i32 } [ %1081, %1080 ], [ %1079, %1078 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #7
  br label %1083

1083:                                             ; preds = %1082, %1076
  %.pn514.pn = phi { ptr, i32 } [ %.pn514, %1082 ], [ %1077, %1076 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %111) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #7
  br label %3131

1084:                                             ; preds = %1066, %1075
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %114) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %115) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %115, ptr noundef nonnull @.str.7)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %114, ptr noundef nonnull align 4 dereferenceable(28) %115, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %113, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.79, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %1085 unwind label %1087

1085:                                             ; preds = %1084
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #7
  %1086 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
  br i1 %1086, label %1103, label %1089

1087:                                             ; preds = %1084
  %1088 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #7
  br label %1106

1089:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %1090 unwind label %1095

1090:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %117) #7
  %1091 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %1092 unwind label %1097

1092:                                             ; preds = %1090
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %117, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 92, ptr noundef %1091)
          to label %1093 unwind label %1097

1093:                                             ; preds = %1092
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %1094 unwind label %1099

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

1095:                                             ; preds = %1089
  %1096 = landingpad { ptr, i32 }
          cleanup
  br label %1102

1097:                                             ; preds = %1092, %1090
  %1098 = landingpad { ptr, i32 }
          cleanup
  br label %1101

1099:                                             ; preds = %1093
  %1100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #7
  br label %1101

1101:                                             ; preds = %1099, %1097
  %.pn517 = phi { ptr, i32 } [ %1100, %1099 ], [ %1098, %1097 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #7
  br label %1102

1102:                                             ; preds = %1101, %1095
  %.pn517.pn = phi { ptr, i32 } [ %.pn517, %1101 ], [ %1096, %1095 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #7
  br label %1106

1103:                                             ; preds = %1085, %1094
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %119) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %120) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %120, ptr noundef nonnull @.str.81)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 4 dereferenceable(28) %120, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %118, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1104 unwind label %1107

1104:                                             ; preds = %1103
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %120) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #7
  %1105 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
  br i1 %1105, label %1123, label %1109

1106:                                             ; preds = %1102, %1087
  %.pn517.pn.pn = phi { ptr, i32 } [ %.pn517.pn, %1102 ], [ %1088, %1087 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #7
  br label %3131

1107:                                             ; preds = %1103
  %1108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %120) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #7
  br label %1126

1109:                                             ; preds = %1104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1110 unwind label %1115

1110:                                             ; preds = %1109
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #7
  %1111 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
          to label %1112 unwind label %1117

1112:                                             ; preds = %1110
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 93, ptr noundef %1111)
          to label %1113 unwind label %1117

1113:                                             ; preds = %1112
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1114 unwind label %1119

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

1115:                                             ; preds = %1109
  %1116 = landingpad { ptr, i32 }
          cleanup
  br label %1122

1117:                                             ; preds = %1112, %1110
  %1118 = landingpad { ptr, i32 }
          cleanup
  br label %1121

1119:                                             ; preds = %1113
  %1120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #7
  br label %1121

1121:                                             ; preds = %1119, %1117
  %.pn521 = phi { ptr, i32 } [ %1120, %1119 ], [ %1118, %1117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #7
  br label %1122

1122:                                             ; preds = %1121, %1115
  %.pn521.pn = phi { ptr, i32 } [ %.pn521, %1121 ], [ %1116, %1115 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #7
  br label %1126

1123:                                             ; preds = %1104, %1114
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %125) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %125, ptr noundef nonnull @.str.54)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 4 dereferenceable(28) %125, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %123, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.82, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1124 unwind label %1127

1124:                                             ; preds = %1123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #7
  %1125 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
  br i1 %1125, label %1143, label %1129

1126:                                             ; preds = %1122, %1107
  %.pn521.pn.pn = phi { ptr, i32 } [ %.pn521.pn, %1122 ], [ %1108, %1107 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #7
  br label %3131

1127:                                             ; preds = %1123
  %1128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #7
  br label %1146

1129:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %126) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1130 unwind label %1135

1130:                                             ; preds = %1129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #7
  %1131 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
          to label %1132 unwind label %1137

1132:                                             ; preds = %1130
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %127, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 94, ptr noundef %1131)
          to label %1133 unwind label %1137

1133:                                             ; preds = %1132
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1134 unwind label %1139

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

1135:                                             ; preds = %1129
  %1136 = landingpad { ptr, i32 }
          cleanup
  br label %1142

1137:                                             ; preds = %1132, %1130
  %1138 = landingpad { ptr, i32 }
          cleanup
  br label %1141

1139:                                             ; preds = %1133
  %1140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #7
  br label %1141

1141:                                             ; preds = %1139, %1137
  %.pn525 = phi { ptr, i32 } [ %1140, %1139 ], [ %1138, %1137 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #7
  br label %1142

1142:                                             ; preds = %1141, %1135
  %.pn525.pn = phi { ptr, i32 } [ %.pn525, %1141 ], [ %1136, %1135 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #7
  br label %1146

1143:                                             ; preds = %1124, %1134
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %128) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %129) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %130) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %131) #7
  call void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8) %131, i32 noundef 2130706433)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %130, ptr noundef nonnull align 4 dereferenceable(8) %131)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %129, ptr noundef nonnull align 4 dereferenceable(28) %130, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %128, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %129)
          to label %1144 unwind label %1147

1144:                                             ; preds = %1143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %130) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %129) #7
  %1145 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %128)
  br i1 %1145, label %1163, label %1149

1146:                                             ; preds = %1142, %1127
  %.pn525.pn.pn = phi { ptr, i32 } [ %.pn525.pn, %1142 ], [ %1128, %1127 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #7
  br label %3131

1147:                                             ; preds = %1143
  %1148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %130) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %129) #7
  br label %1166

1149:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %1150 unwind label %1155

1150:                                             ; preds = %1149
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #7
  %1151 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %128)
          to label %1152 unwind label %1157

1152:                                             ; preds = %1150
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %133, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 95, ptr noundef %1151)
          to label %1153 unwind label %1157

1153:                                             ; preds = %1152
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %1154 unwind label %1159

1154:                                             ; preds = %1153
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #7
  br label %1163

1155:                                             ; preds = %1149
  %1156 = landingpad { ptr, i32 }
          cleanup
  br label %1162

1157:                                             ; preds = %1152, %1150
  %1158 = landingpad { ptr, i32 }
          cleanup
  br label %1161

1159:                                             ; preds = %1153
  %1160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #7
  br label %1161

1161:                                             ; preds = %1159, %1157
  %.pn529 = phi { ptr, i32 } [ %1160, %1159 ], [ %1158, %1157 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #7
  br label %1162

1162:                                             ; preds = %1161, %1155
  %.pn529.pn = phi { ptr, i32 } [ %.pn529, %1161 ], [ %1156, %1155 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  br label %1166

1163:                                             ; preds = %1144, %1154
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %134) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %135) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %136) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %136, ptr noundef nonnull @.str.7)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %135, ptr noundef nonnull align 4 dereferenceable(28) %136, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %134, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.79, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %135)
          to label %1164 unwind label %1167

1164:                                             ; preds = %1163
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %136) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #7
  %1165 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %134)
  br i1 %1165, label %1183, label %1169

1166:                                             ; preds = %1162, %1147
  %.pn529.pn.pn = phi { ptr, i32 } [ %.pn529.pn, %1162 ], [ %1148, %1147 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #7
  br label %3131

1167:                                             ; preds = %1163
  %1168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %136) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %135) #7
  br label %1186

1169:                                             ; preds = %1164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1170 unwind label %1175

1170:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #7
  %1171 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %134)
          to label %1172 unwind label %1177

1172:                                             ; preds = %1170
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %138, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 97, ptr noundef %1171)
          to label %1173 unwind label %1177

1173:                                             ; preds = %1172
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1174 unwind label %1179

1174:                                             ; preds = %1173
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #7
  br label %1183

1175:                                             ; preds = %1169
  %1176 = landingpad { ptr, i32 }
          cleanup
  br label %1182

1177:                                             ; preds = %1172, %1170
  %1178 = landingpad { ptr, i32 }
          cleanup
  br label %1181

1179:                                             ; preds = %1173
  %1180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  br label %1181

1181:                                             ; preds = %1179, %1177
  %.pn533 = phi { ptr, i32 } [ %1180, %1179 ], [ %1178, %1177 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #7
  br label %1182

1182:                                             ; preds = %1181, %1175
  %.pn533.pn = phi { ptr, i32 } [ %.pn533, %1181 ], [ %1176, %1175 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #7
  br label %1186

1183:                                             ; preds = %1164, %1174
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %139) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %140) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %141) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %141, ptr noundef nonnull @.str.45)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %140, ptr noundef nonnull align 4 dereferenceable(28) %141, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %139, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.85, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %140)
          to label %1184 unwind label %1187

1184:                                             ; preds = %1183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %141) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #7
  %1185 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %139)
  br i1 %1185, label %1203, label %1189

1186:                                             ; preds = %1182, %1167
  %.pn533.pn.pn = phi { ptr, i32 } [ %.pn533.pn, %1182 ], [ %1168, %1167 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #7
  br label %3131

1187:                                             ; preds = %1183
  %1188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %141) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #7
  br label %1206

1189:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %1190 unwind label %1195

1190:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #7
  %1191 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %139)
          to label %1192 unwind label %1197

1192:                                             ; preds = %1190
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %143, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 98, ptr noundef %1191)
          to label %1193 unwind label %1197

1193:                                             ; preds = %1192
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %1194 unwind label %1199

1194:                                             ; preds = %1193
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #7
  br label %1203

1195:                                             ; preds = %1189
  %1196 = landingpad { ptr, i32 }
          cleanup
  br label %1202

1197:                                             ; preds = %1192, %1190
  %1198 = landingpad { ptr, i32 }
          cleanup
  br label %1201

1199:                                             ; preds = %1193
  %1200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #7
  br label %1201

1201:                                             ; preds = %1199, %1197
  %.pn537 = phi { ptr, i32 } [ %1200, %1199 ], [ %1198, %1197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #7
  br label %1202

1202:                                             ; preds = %1201, %1195
  %.pn537.pn = phi { ptr, i32 } [ %.pn537, %1201 ], [ %1196, %1195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #7
  br label %1206

1203:                                             ; preds = %1184, %1194
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %144) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %145) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %146) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #7
  call void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8) %147, i32 noundef 2130706433, i8 noundef zeroext 8)
  call void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28) %146, ptr noundef nonnull align 4 dereferenceable(8) %147)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %145, ptr noundef nonnull align 4 dereferenceable(28) %146, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %144, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.86, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %145)
          to label %1204 unwind label %1207

1204:                                             ; preds = %1203
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %145) #7
  %1205 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %144)
  br i1 %1205, label %1223, label %1209

1206:                                             ; preds = %1202, %1187
  %.pn537.pn.pn = phi { ptr, i32 } [ %.pn537.pn, %1202 ], [ %1188, %1187 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #7
  br label %3131

1207:                                             ; preds = %1203
  %1208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %145) #7
  br label %1229

1209:                                             ; preds = %1204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148)
          to label %1210 unwind label %1215

1210:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %149) #7
  %1211 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %1212 unwind label %1217

1212:                                             ; preds = %1210
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %149, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 99, ptr noundef %1211)
          to label %1213 unwind label %1217

1213:                                             ; preds = %1212
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %148)
          to label %1214 unwind label %1219

1214:                                             ; preds = %1213
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #7
  br label %1223

1215:                                             ; preds = %1209
  %1216 = landingpad { ptr, i32 }
          cleanup
  br label %1222

1217:                                             ; preds = %1212, %1210
  %1218 = landingpad { ptr, i32 }
          cleanup
  br label %1221

1219:                                             ; preds = %1213
  %1220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #7
  br label %1221

1221:                                             ; preds = %1219, %1217
  %.pn541 = phi { ptr, i32 } [ %1220, %1219 ], [ %1218, %1217 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #7
  br label %1222

1222:                                             ; preds = %1221, %1215
  %.pn541.pn = phi { ptr, i32 } [ %.pn541, %1221 ], [ %1216, %1215 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #7
  br label %1229

1223:                                             ; preds = %1204, %1214
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %151) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %153) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %154) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %153, ptr noundef nonnull @.str.90, ptr noundef nonnull align 1 dereferenceable(1) %154)
          to label %1224 unwind label %1230

1224:                                             ; preds = %1223
  invoke void @_ZN4chen10ip_addressC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEh(ptr noundef nonnull align 4 dereferenceable(28) %152, ptr noundef nonnull align 8 dereferenceable(32) %153, i8 noundef zeroext 30)
          to label %1225 unwind label %1232

1225:                                             ; preds = %1224
  invoke void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %151, ptr noundef nonnull align 4 dereferenceable(28) %152, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %1226 unwind label %1232

1226:                                             ; preds = %1225
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %150, ptr noundef nonnull @.str.87, ptr noundef nonnull @.str.88, ptr noundef nonnull align 1 dereferenceable(15) @.str.89, ptr noundef nonnull align 8 dereferenceable(32) %151)
          to label %1227 unwind label %1234

1227:                                             ; preds = %1226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %154) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %152) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #7
  %1228 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %150)
  br i1 %1228, label %1252, label %1238

1229:                                             ; preds = %1222, %1207
  %.pn541.pn.pn = phi { ptr, i32 } [ %.pn541.pn, %1222 ], [ %1208, %1207 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  br label %3131

1230:                                             ; preds = %1223
  %1231 = landingpad { ptr, i32 }
          cleanup
  br label %1237

1232:                                             ; preds = %1225, %1224
  %1233 = landingpad { ptr, i32 }
          cleanup
  br label %1236

1234:                                             ; preds = %1226
  %1235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #7
  br label %1236

1236:                                             ; preds = %1234, %1232
  %.pn545 = phi { ptr, i32 } [ %1235, %1234 ], [ %1233, %1232 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  br label %1237

1237:                                             ; preds = %1236, %1230
  %.pn545.pn = phi { ptr, i32 } [ %.pn545, %1236 ], [ %1231, %1230 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %154) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %153) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %152) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #7
  br label %1255

1238:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %155) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1239 unwind label %1244

1239:                                             ; preds = %1238
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %156) #7
  %1240 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %150)
          to label %1241 unwind label %1246

1241:                                             ; preds = %1239
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 100, ptr noundef %1240)
          to label %1242 unwind label %1246

1242:                                             ; preds = %1241
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1243 unwind label %1248

1243:                                             ; preds = %1242
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #7
  br label %1252

1244:                                             ; preds = %1238
  %1245 = landingpad { ptr, i32 }
          cleanup
  br label %1251

1246:                                             ; preds = %1241, %1239
  %1247 = landingpad { ptr, i32 }
          cleanup
  br label %1250

1248:                                             ; preds = %1242
  %1249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #7
  br label %1250

1250:                                             ; preds = %1248, %1246
  %.pn548 = phi { ptr, i32 } [ %1249, %1248 ], [ %1247, %1246 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #7
  br label %1251

1251:                                             ; preds = %1250, %1244
  %.pn548.pn = phi { ptr, i32 } [ %.pn548, %1250 ], [ %1245, %1244 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #7
  br label %1255

1252:                                             ; preds = %1227, %1243
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %157) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %158) #7
  store i32 8, ptr %158, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %159) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %160) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %160, ptr noundef nonnull @.str.45)
  %1253 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %160)
  store i8 %1253, ptr %159, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %157, ptr noundef nonnull @.str.91, ptr noundef nonnull @.str.92, ptr noundef nonnull align 4 dereferenceable(4) %158, ptr noundef nonnull align 1 dereferenceable(1) %159)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %160) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %159) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %158) #7
  %1254 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
  br i1 %1254, label %1270, label %1256

1255:                                             ; preds = %1251, %1237
  %.pn548.pn.pn = phi { ptr, i32 } [ %.pn548.pn, %1251 ], [ %.pn545.pn, %1237 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #7
  br label %3131

1256:                                             ; preds = %1252
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %161) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1257 unwind label %1262

1257:                                             ; preds = %1256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #7
  %1258 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
          to label %1259 unwind label %1264

1259:                                             ; preds = %1257
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %162, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 103, ptr noundef %1258)
          to label %1260 unwind label %1264

1260:                                             ; preds = %1259
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1261 unwind label %1266

1261:                                             ; preds = %1260
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #7
  br label %1270

1262:                                             ; preds = %1256
  %1263 = landingpad { ptr, i32 }
          cleanup
  br label %1269

1264:                                             ; preds = %1259, %1257
  %1265 = landingpad { ptr, i32 }
          cleanup
  br label %1268

1266:                                             ; preds = %1260
  %1267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #7
  br label %1268

1268:                                             ; preds = %1266, %1264
  %.pn552 = phi { ptr, i32 } [ %1267, %1266 ], [ %1265, %1264 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #7
  br label %1269

1269:                                             ; preds = %1268, %1262
  %.pn552.pn = phi { ptr, i32 } [ %.pn552, %1268 ], [ %1263, %1262 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #7
  br label %3131

1270:                                             ; preds = %1252, %1261
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %157) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %163) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %164) #7
  store i32 16, ptr %164, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %165) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %166) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %166, ptr noundef nonnull @.str.95)
  %1271 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %166)
  store i8 %1271, ptr %165, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %163, ptr noundef nonnull @.str.93, ptr noundef nonnull @.str.94, ptr noundef nonnull align 4 dereferenceable(4) %164, ptr noundef nonnull align 1 dereferenceable(1) %165)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %166) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %165) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %164) #7
  %1272 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %163)
  br i1 %1272, label %1287, label %1273

1273:                                             ; preds = %1270
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1274 unwind label %1279

1274:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #7
  %1275 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %163)
          to label %1276 unwind label %1281

1276:                                             ; preds = %1274
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %168, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 104, ptr noundef %1275)
          to label %1277 unwind label %1281

1277:                                             ; preds = %1276
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1278 unwind label %1283

1278:                                             ; preds = %1277
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #7
  br label %1287

1279:                                             ; preds = %1273
  %1280 = landingpad { ptr, i32 }
          cleanup
  br label %1286

1281:                                             ; preds = %1276, %1274
  %1282 = landingpad { ptr, i32 }
          cleanup
  br label %1285

1283:                                             ; preds = %1277
  %1284 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #7
  br label %1285

1285:                                             ; preds = %1283, %1281
  %.pn555 = phi { ptr, i32 } [ %1284, %1283 ], [ %1282, %1281 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #7
  br label %1286

1286:                                             ; preds = %1285, %1279
  %.pn555.pn = phi { ptr, i32 } [ %.pn555, %1285 ], [ %1280, %1279 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %163) #7
  br label %3131

1287:                                             ; preds = %1270, %1278
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %163) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %169) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %170) #7
  store i32 24, ptr %170, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %172) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %172, ptr noundef nonnull @.str.97)
  %1288 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %172)
  store i8 %1288, 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.75, ptr noundef nonnull @.str.96, ptr noundef nonnull align 4 dereferenceable(4) %170, ptr noundef nonnull align 1 dereferenceable(1) %171)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %172) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %170) #7
  %1289 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  br i1 %1289, label %1304, label %1290

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

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

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

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

1295:                                             ; preds = %1294
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #7
  br label %1304

1296:                                             ; preds = %1290
  %1297 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1298:                                             ; preds = %1293, %1291
  %1299 = landingpad { ptr, i32 }
          cleanup
  br label %1302

1300:                                             ; preds = %1294
  %1301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #7
  br label %1302

1302:                                             ; preds = %1300, %1298
  %.pn558 = phi { ptr, i32 } [ %1301, %1300 ], [ %1299, %1298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #7
  br label %1303

1303:                                             ; preds = %1302, %1296
  %.pn558.pn = phi { ptr, i32 } [ %.pn558, %1302 ], [ %1297, %1296 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %169) #7
  br label %3131

1304:                                             ; preds = %1287, %1295
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %169) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %175) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %176) #7
  store i32 26, ptr %176, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %177) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %178) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %178, ptr noundef nonnull @.str.100)
  %1305 = call noundef zeroext i8 @_ZNK4chen10ip_address4cidrEv(ptr noundef nonnull align 4 dereferenceable(28) %178)
  store i8 %1305, ptr %177, align 1, !tbaa !16
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %175, ptr noundef nonnull @.str.98, ptr noundef nonnull @.str.99, ptr noundef nonnull align 4 dereferenceable(4) %176, ptr noundef nonnull align 1 dereferenceable(1) %177)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %178) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %177) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %176) #7
  %1306 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %175)
  br i1 %1306, label %1321, label %1307

1307:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %179) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %1308 unwind label %1313

1308:                                             ; preds = %1307
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %180) #7
  %1309 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %175)
          to label %1310 unwind label %1315

1310:                                             ; preds = %1308
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %180, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 106, ptr noundef %1309)
          to label %1311 unwind label %1315

1311:                                             ; preds = %1310
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %1312 unwind label %1317

1312:                                             ; preds = %1311
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %180) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #7
  br label %1321

1313:                                             ; preds = %1307
  %1314 = landingpad { ptr, i32 }
          cleanup
  br label %1320

1315:                                             ; preds = %1310, %1308
  %1316 = landingpad { ptr, i32 }
          cleanup
  br label %1319

1317:                                             ; preds = %1311
  %1318 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #7
  br label %1319

1319:                                             ; preds = %1317, %1315
  %.pn561 = phi { ptr, i32 } [ %1318, %1317 ], [ %1316, %1315 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %180) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #7
  br label %1320

1320:                                             ; preds = %1319, %1313
  %.pn561.pn = phi { ptr, i32 } [ %.pn561, %1319 ], [ %1314, %1313 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %175) #7
  br label %3131

1321:                                             ; preds = %1304, %1312
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %175) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %181) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %182) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %183) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %183, ptr noundef nonnull @.str.48)
  %1322 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %183)
  %1323 = call noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8) %1322)
  store i32 %1323, ptr %182, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %184) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %185) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %185, ptr noundef nonnull @.str.45)
  %1324 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %185)
  %1325 = call noundef i32 @_ZNK4chen11ip_version47netmaskEv(ptr noundef nonnull align 4 dereferenceable(8) %1324)
  store i32 %1325, ptr %184, align 4, !tbaa !12
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %181, ptr noundef nonnull @.str.101, ptr noundef nonnull @.str.102, ptr noundef nonnull align 4 dereferenceable(4) %182, ptr noundef nonnull align 4 dereferenceable(4) %184)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %185) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %184) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %183) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %182) #7
  %1326 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
  br i1 %1326, label %1341, label %1327

1327:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %186) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %1328 unwind label %1333

1328:                                             ; preds = %1327
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #7
  %1329 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
          to label %1330 unwind label %1335

1330:                                             ; preds = %1328
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %187, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 108, ptr noundef %1329)
          to label %1331 unwind label %1335

1331:                                             ; preds = %1330
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %1332 unwind label %1337

1332:                                             ; preds = %1331
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #7
  br label %1341

1333:                                             ; preds = %1327
  %1334 = landingpad { ptr, i32 }
          cleanup
  br label %1340

1335:                                             ; preds = %1330, %1328
  %1336 = landingpad { ptr, i32 }
          cleanup
  br label %1339

1337:                                             ; preds = %1331
  %1338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #7
  br label %1339

1339:                                             ; preds = %1337, %1335
  %.pn564 = phi { ptr, i32 } [ %1338, %1337 ], [ %1336, %1335 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #7
  br label %1340

1340:                                             ; preds = %1339, %1333
  %.pn564.pn = phi { ptr, i32 } [ %.pn564, %1339 ], [ %1334, %1333 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #7
  br label %3131

1341:                                             ; preds = %1321, %1332
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %181) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %181) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %188) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %189) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %190) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %190, ptr noundef nonnull @.str.105)
  %1342 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %190)
  %1343 = call noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8) %1342)
  store i32 %1343, ptr %189, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %191) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %192) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %192, ptr noundef nonnull @.str.45)
  %1344 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %192)
  %1345 = call noundef i32 @_ZNK4chen11ip_version48wildcardEv(ptr noundef nonnull align 4 dereferenceable(8) %1344)
  store i32 %1345, ptr %191, align 4, !tbaa !12
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjjEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %188, ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.104, ptr noundef nonnull align 4 dereferenceable(4) %189, ptr noundef nonnull align 4 dereferenceable(4) %191)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %191) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %190) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %189) #7
  %1346 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
  br i1 %1346, label %1361, label %1347

1347:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %193) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %1348 unwind label %1353

1348:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #7
  %1349 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
          to label %1350 unwind label %1355

1350:                                             ; preds = %1348
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %194, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 109, ptr noundef %1349)
          to label %1351 unwind label %1355

1351:                                             ; preds = %1350
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %1352 unwind label %1357

1352:                                             ; preds = %1351
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #7
  br label %1361

1353:                                             ; preds = %1347
  %1354 = landingpad { ptr, i32 }
          cleanup
  br label %1360

1355:                                             ; preds = %1350, %1348
  %1356 = landingpad { ptr, i32 }
          cleanup
  br label %1359

1357:                                             ; preds = %1351
  %1358 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #7
  br label %1359

1359:                                             ; preds = %1357, %1355
  %.pn567 = phi { ptr, i32 } [ %1358, %1357 ], [ %1356, %1355 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %193) #7
  br label %1360

1360:                                             ; preds = %1359, %1353
  %.pn567.pn = phi { ptr, i32 } [ %.pn567, %1359 ], [ %1354, %1353 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %193) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #7
  br label %3131

1361:                                             ; preds = %1341, %1352
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %195) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %196) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %197) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %198) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %198, ptr noundef nonnull @.str.45)
  call void @_ZNK4chen10ip_address7networkEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %197, ptr noundef nonnull align 4 dereferenceable(28) %198)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %196, ptr noundef nonnull align 4 dereferenceable(28) %197, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %195, ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.107, ptr noundef nonnull align 1 dereferenceable(12) @.str.108, ptr noundef nonnull align 8 dereferenceable(32) %196)
          to label %1362 unwind label %1364

1362:                                             ; preds = %1361
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %198) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %197) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #7
  %1363 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %195)
  br i1 %1363, label %1380, label %1366

1364:                                             ; preds = %1361
  %1365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %198) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %197) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #7
  br label %1383

1366:                                             ; preds = %1362
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %199) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %199)
          to label %1367 unwind label %1372

1367:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %200) #7
  %1368 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %195)
          to label %1369 unwind label %1374

1369:                                             ; preds = %1367
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %200, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 111, ptr noundef %1368)
          to label %1370 unwind label %1374

1370:                                             ; preds = %1369
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %199)
          to label %1371 unwind label %1376

1371:                                             ; preds = %1370
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #7
  br label %1380

1372:                                             ; preds = %1366
  %1373 = landingpad { ptr, i32 }
          cleanup
  br label %1379

1374:                                             ; preds = %1369, %1367
  %1375 = landingpad { ptr, i32 }
          cleanup
  br label %1378

1376:                                             ; preds = %1370
  %1377 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #7
  br label %1378

1378:                                             ; preds = %1376, %1374
  %.pn570 = phi { ptr, i32 } [ %1377, %1376 ], [ %1375, %1374 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #7
  br label %1379

1379:                                             ; preds = %1378, %1372
  %.pn570.pn = phi { ptr, i32 } [ %.pn570, %1378 ], [ %1373, %1372 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195) #7
  br label %1383

1380:                                             ; preds = %1362, %1371
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %195) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %201) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %202) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %203) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %204) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %204, ptr noundef nonnull @.str.45)
  call void @_ZNK4chen10ip_address7minhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %203, ptr noundef nonnull align 4 dereferenceable(28) %204)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %202, ptr noundef nonnull align 4 dereferenceable(28) %203, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %201, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.109, ptr noundef nonnull align 1 dereferenceable(12) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %1381 unwind label %1384

1381:                                             ; preds = %1380
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %204) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %203) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %202) #7
  %1382 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %201)
  br i1 %1382, label %1400, label %1386

1383:                                             ; preds = %1379, %1364
  %.pn570.pn.pn = phi { ptr, i32 } [ %.pn570.pn, %1379 ], [ %1365, %1364 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %195) #7
  br label %3131

1384:                                             ; preds = %1380
  %1385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %204) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %203) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %202) #7
  br label %1403

1386:                                             ; preds = %1381
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %205) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %1387 unwind label %1392

1387:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %206) #7
  %1388 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %201)
          to label %1389 unwind label %1394

1389:                                             ; preds = %1387
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %206, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 112, ptr noundef %1388)
          to label %1390 unwind label %1394

1390:                                             ; preds = %1389
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %1391 unwind label %1396

1391:                                             ; preds = %1390
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %206) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %206) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #7
  br label %1400

1392:                                             ; preds = %1386
  %1393 = landingpad { ptr, i32 }
          cleanup
  br label %1399

1394:                                             ; preds = %1389, %1387
  %1395 = landingpad { ptr, i32 }
          cleanup
  br label %1398

1396:                                             ; preds = %1390
  %1397 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %206) #7
  br label %1398

1398:                                             ; preds = %1396, %1394
  %.pn574 = phi { ptr, i32 } [ %1397, %1396 ], [ %1395, %1394 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %206) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #7
  br label %1399

1399:                                             ; preds = %1398, %1392
  %.pn574.pn = phi { ptr, i32 } [ %.pn574, %1398 ], [ %1393, %1392 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #7
  br label %1403

1400:                                             ; preds = %1381, %1391
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %207) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %208) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %209) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %210) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %210, ptr noundef nonnull @.str.45)
  call void @_ZNK4chen10ip_address7maxhostEv(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %209, ptr noundef nonnull align 4 dereferenceable(28) %210)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %208, ptr noundef nonnull align 4 dereferenceable(28) %209, i1 noundef zeroext true, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA18_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %207, ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.111, ptr noundef nonnull align 1 dereferenceable(18) @.str.112, ptr noundef nonnull align 8 dereferenceable(32) %208)
          to label %1401 unwind label %1404

1401:                                             ; preds = %1400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %210) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %209) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %208) #7
  %1402 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %207)
  br i1 %1402, label %1420, label %1406

1403:                                             ; preds = %1399, %1384
  %.pn574.pn.pn = phi { ptr, i32 } [ %.pn574.pn, %1399 ], [ %1385, %1384 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #7
  br label %3131

1404:                                             ; preds = %1400
  %1405 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %210) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %209) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %208) #7
  br label %1425

1406:                                             ; preds = %1401
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %211) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %1407 unwind label %1412

1407:                                             ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %212) #7
  %1408 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %207)
          to label %1409 unwind label %1414

1409:                                             ; preds = %1407
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %212, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 113, ptr noundef %1408)
          to label %1410 unwind label %1414

1410:                                             ; preds = %1409
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %1411 unwind label %1416

1411:                                             ; preds = %1410
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #7
  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) %212) #7
  br label %1418

1418:                                             ; preds = %1416, %1414
  %.pn578 = phi { ptr, i32 } [ %1417, %1416 ], [ %1415, %1414 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #7
  br label %1419

1419:                                             ; preds = %1418, %1412
  %.pn578.pn = phi { ptr, i32 } [ %.pn578, %1418 ], [ %1413, %1412 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #7
  br label %1425

1420:                                             ; preds = %1401, %1411
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %213) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %214) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %215) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %216) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %216, ptr noundef nonnull @.str.45)
  %1421 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %216)
  %1422 = call i64 @_ZNK4chen11ip_version49broadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %1421)
  store i64 %1422, ptr %215, align 8
  call void @_ZNK4chen11ip_version43strB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %214, ptr noundef nonnull align 4 dereferenceable(8) %215, i1 noundef zeroext true)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA18_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %213, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114, ptr noundef nonnull align 1 dereferenceable(18) @.str.115, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %1423 unwind label %1426

1423:                                             ; preds = %1420
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %216) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #7
  %1424 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
  br i1 %1424, label %1442, label %1428

1425:                                             ; preds = %1419, %1404
  %.pn578.pn.pn = phi { ptr, i32 } [ %.pn578.pn, %1419 ], [ %1405, %1404 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #7
  br label %3131

1426:                                             ; preds = %1420
  %1427 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %216) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %214) #7
  br label %1446

1428:                                             ; preds = %1423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %217) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1429 unwind label %1434

1429:                                             ; preds = %1428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #7
  %1430 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
          to label %1431 unwind label %1436

1431:                                             ; preds = %1429
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %218, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 114, ptr noundef %1430)
          to label %1432 unwind label %1436

1432:                                             ; preds = %1431
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %1433 unwind label %1438

1433:                                             ; preds = %1432
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #7
  br label %1442

1434:                                             ; preds = %1428
  %1435 = landingpad { ptr, i32 }
          cleanup
  br label %1441

1436:                                             ; preds = %1431, %1429
  %1437 = landingpad { ptr, i32 }
          cleanup
  br label %1440

1438:                                             ; preds = %1432
  %1439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #7
  br label %1440

1440:                                             ; preds = %1438, %1436
  %.pn582 = phi { ptr, i32 } [ %1439, %1438 ], [ %1437, %1436 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #7
  br label %1441

1441:                                             ; preds = %1440, %1434
  %.pn582.pn = phi { ptr, i32 } [ %.pn582, %1440 ], [ %1435, %1434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #7
  br label %1446

1442:                                             ; preds = %1423, %1433
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %219) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %220) #7
  store i32 16777214, ptr %220, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %222) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %222, ptr noundef nonnull @.str.45)
  %1443 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %222)
  %1444 = call noundef i64 @_ZNK4chen11ip_version45hostsEv(ptr noundef nonnull align 4 dereferenceable(8) %1443)
  store i64 %1444, ptr %221, align 8, !tbaa !14
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIjmEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %219, ptr noundef nonnull @.str.116, ptr noundef nonnull @.str.117, ptr noundef nonnull align 4 dereferenceable(4) %220, ptr noundef nonnull align 8 dereferenceable(8) %221)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %222) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %220) #7
  %1445 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %219)
  br i1 %1445, label %1461, label %1447

1446:                                             ; preds = %1441, %1426
  %.pn582.pn.pn = phi { ptr, i32 } [ %.pn582.pn, %1441 ], [ %1427, %1426 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #7
  br label %3131

1447:                                             ; preds = %1442
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %223) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %1448 unwind label %1453

1448:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %224) #7
  %1449 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %219)
          to label %1450 unwind label %1455

1450:                                             ; preds = %1448
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 115, ptr noundef %1449)
          to label %1451 unwind label %1455

1451:                                             ; preds = %1450
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %1452 unwind label %1457

1452:                                             ; preds = %1451
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %224) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %224) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %223) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %223) #7
  br label %1461

1453:                                             ; preds = %1447
  %1454 = landingpad { ptr, i32 }
          cleanup
  br label %1460

1455:                                             ; preds = %1450, %1448
  %1456 = landingpad { ptr, i32 }
          cleanup
  br label %1459

1457:                                             ; preds = %1451
  %1458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %224) #7
  br label %1459

1459:                                             ; preds = %1457, %1455
  %.pn586 = phi { ptr, i32 } [ %1458, %1457 ], [ %1456, %1455 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %224) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %223) #7
  br label %1460

1460:                                             ; preds = %1459, %1453
  %.pn586.pn = phi { ptr, i32 } [ %.pn586, %1459 ], [ %1454, %1453 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %223) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #7
  br label %3131

1461:                                             ; preds = %1442, %1452
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %225) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %226) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %227) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %227, ptr noundef nonnull @.str.43)
  %1462 = call noundef zeroext i1 @_ZNK4chen10ip_address13isUnspecifiedEv(ptr noundef nonnull align 4 dereferenceable(28) %227)
  %1463 = zext i1 %1462 to i8
  store i8 %1463, ptr %226, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull align 1 dereferenceable(1) %226, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %227) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %226) #7
  %1464 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %225)
  br i1 %1464, label %1482, label %1465

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

1466:                                             ; preds = %1465
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %229) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %230) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %230, ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull @.str.118, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1467 unwind label %1473

1467:                                             ; preds = %1466
  %1468 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %230) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %229, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 118, ptr noundef %1468)
          to label %1469 unwind label %1475

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

1470:                                             ; preds = %1469
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %229) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %230) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %229) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %228) #7
  br label %1482

1471:                                             ; preds = %1465
  %1472 = landingpad { ptr, i32 }
          cleanup
  br label %1481

1473:                                             ; preds = %1466
  %1474 = landingpad { ptr, i32 }
          cleanup
  br label %1480

1475:                                             ; preds = %1467
  %1476 = landingpad { ptr, i32 }
          cleanup
  br label %1479

1477:                                             ; preds = %1469
  %1478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %229) #7
  br label %1479

1479:                                             ; preds = %1477, %1475
  %.pn589 = phi { ptr, i32 } [ %1478, %1477 ], [ %1476, %1475 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #7
  br label %1480

1480:                                             ; preds = %1479, %1473
  %.pn589.pn = phi { ptr, i32 } [ %.pn589, %1479 ], [ %1474, %1473 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %230) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %229) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #7
  br label %1481

1481:                                             ; preds = %1480, %1471
  %.pn589.pn.pn = phi { ptr, i32 } [ %.pn589.pn, %1480 ], [ %1472, %1471 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %228) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %225) #7
  br label %3131

1482:                                             ; preds = %1461, %1470
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %225) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %225) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %231) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %232) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %233) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %233, ptr noundef nonnull @.str.43)
  %1483 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %233)
  %1484 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1483)
  %1485 = zext i1 %1484 to i8
  store i8 %1485, ptr %232, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %231, ptr noundef nonnull align 1 dereferenceable(1) %232, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %233) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #7
  %1486 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %231)
  br i1 %1486, label %1504, label %1487

1487:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %234) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %1488 unwind label %1493

1488:                                             ; preds = %1487
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %235) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %236) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %236, ptr noundef nonnull align 8 dereferenceable(16) %231, ptr noundef nonnull @.str.119, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1489 unwind label %1495

1489:                                             ; preds = %1488
  %1490 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %236) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %235, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 120, ptr noundef %1490)
          to label %1491 unwind label %1497

1491:                                             ; preds = %1489
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %1492 unwind label %1499

1492:                                             ; preds = %1491
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %236) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #7
  br label %1504

1493:                                             ; preds = %1487
  %1494 = landingpad { ptr, i32 }
          cleanup
  br label %1503

1495:                                             ; preds = %1488
  %1496 = landingpad { ptr, i32 }
          cleanup
  br label %1502

1497:                                             ; preds = %1489
  %1498 = landingpad { ptr, i32 }
          cleanup
  br label %1501

1499:                                             ; preds = %1491
  %1500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #7
  br label %1501

1501:                                             ; preds = %1499, %1497
  %.pn593 = phi { ptr, i32 } [ %1500, %1499 ], [ %1498, %1497 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #7
  br label %1502

1502:                                             ; preds = %1501, %1495
  %.pn593.pn = phi { ptr, i32 } [ %.pn593, %1501 ], [ %1496, %1495 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %236) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #7
  br label %1503

1503:                                             ; preds = %1502, %1493
  %.pn593.pn.pn = phi { ptr, i32 } [ %.pn593.pn, %1502 ], [ %1494, %1493 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %231) #7
  br label %3131

1504:                                             ; preds = %1482, %1492
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %231) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %237) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %238) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %239) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %239, ptr noundef nonnull @.str.7)
  %1505 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %239)
  %1506 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1505)
  %1507 = zext i1 %1506 to i8
  store i8 %1507, ptr %238, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef nonnull align 1 dereferenceable(1) %238, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %239) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %238) #7
  %1508 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %237)
  br i1 %1508, label %1526, label %1509

1509:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %240) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240)
          to label %1510 unwind label %1515

1510:                                             ; preds = %1509
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %241) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %242) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %242, ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef nonnull @.str.120, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1511 unwind label %1517

1511:                                             ; preds = %1510
  %1512 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %242) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %241, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 121, ptr noundef %1512)
          to label %1513 unwind label %1519

1513:                                             ; preds = %1511
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull align 8 dereferenceable(8) %240)
          to label %1514 unwind label %1521

1514:                                             ; preds = %1513
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %242) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %240) #7
  br label %1526

1515:                                             ; preds = %1509
  %1516 = landingpad { ptr, i32 }
          cleanup
  br label %1525

1517:                                             ; preds = %1510
  %1518 = landingpad { ptr, i32 }
          cleanup
  br label %1524

1519:                                             ; preds = %1511
  %1520 = landingpad { ptr, i32 }
          cleanup
  br label %1523

1521:                                             ; preds = %1513
  %1522 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #7
  br label %1523

1523:                                             ; preds = %1521, %1519
  %.pn597 = phi { ptr, i32 } [ %1522, %1521 ], [ %1520, %1519 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %242) #7
  br label %1524

1524:                                             ; preds = %1523, %1517
  %.pn597.pn = phi { ptr, i32 } [ %.pn597, %1523 ], [ %1518, %1517 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %242) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #7
  br label %1525

1525:                                             ; preds = %1524, %1515
  %.pn597.pn.pn = phi { ptr, i32 } [ %.pn597.pn, %1524 ], [ %1516, %1515 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %240) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #7
  br label %3131

1526:                                             ; preds = %1504, %1514
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %243) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %244) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %245) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %245, ptr noundef nonnull @.str.121)
  %1527 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %245)
  %1528 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1527)
  %1529 = zext i1 %1528 to i8
  store i8 %1529, ptr %244, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %243, ptr noundef nonnull align 1 dereferenceable(1) %244, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %245) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %244) #7
  %1530 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %243)
  br i1 %1530, label %1548, label %1531

1531:                                             ; preds = %1526
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %246) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246)
          to label %1532 unwind label %1537

1532:                                             ; preds = %1531
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %247) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %248) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %248, ptr noundef nonnull align 8 dereferenceable(16) %243, ptr noundef nonnull @.str.122, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1533 unwind label %1539

1533:                                             ; preds = %1532
  %1534 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %248) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %247, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 122, ptr noundef %1534)
          to label %1535 unwind label %1541

1535:                                             ; preds = %1533
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %246)
          to label %1536 unwind label %1543

1536:                                             ; preds = %1535
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %248) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #7
  br label %1548

1537:                                             ; preds = %1531
  %1538 = landingpad { ptr, i32 }
          cleanup
  br label %1547

1539:                                             ; preds = %1532
  %1540 = landingpad { ptr, i32 }
          cleanup
  br label %1546

1541:                                             ; preds = %1533
  %1542 = landingpad { ptr, i32 }
          cleanup
  br label %1545

1543:                                             ; preds = %1535
  %1544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #7
  br label %1545

1545:                                             ; preds = %1543, %1541
  %.pn601 = phi { ptr, i32 } [ %1544, %1543 ], [ %1542, %1541 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #7
  br label %1546

1546:                                             ; preds = %1545, %1539
  %.pn601.pn = phi { ptr, i32 } [ %.pn601, %1545 ], [ %1540, %1539 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %248) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #7
  br label %1547

1547:                                             ; preds = %1546, %1537
  %.pn601.pn.pn = phi { ptr, i32 } [ %.pn601.pn, %1546 ], [ %1538, %1537 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %243) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %243) #7
  br label %3131

1548:                                             ; preds = %1526, %1536
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %243) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %243) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %249) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %250) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %251) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %251, ptr noundef nonnull @.str.123)
  %1549 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %251)
  %1550 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1549)
  %1551 = zext i1 %1550 to i8
  store i8 %1551, ptr %250, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef nonnull align 1 dereferenceable(1) %250, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %251) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %250) #7
  %1552 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %249)
  br i1 %1552, label %1570, label %1553

1553:                                             ; preds = %1548
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %252) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252)
          to label %1554 unwind label %1559

1554:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %253) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %254) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %254, ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1555 unwind label %1561

1555:                                             ; preds = %1554
  %1556 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %254) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %253, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 123, ptr noundef %1556)
          to label %1557 unwind label %1563

1557:                                             ; preds = %1555
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(8) %252)
          to label %1558 unwind label %1565

1558:                                             ; preds = %1557
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %252) #7
  br label %1570

1559:                                             ; preds = %1553
  %1560 = landingpad { ptr, i32 }
          cleanup
  br label %1569

1561:                                             ; preds = %1554
  %1562 = landingpad { ptr, i32 }
          cleanup
  br label %1568

1563:                                             ; preds = %1555
  %1564 = landingpad { ptr, i32 }
          cleanup
  br label %1567

1565:                                             ; preds = %1557
  %1566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #7
  br label %1567

1567:                                             ; preds = %1565, %1563
  %.pn605 = phi { ptr, i32 } [ %1566, %1565 ], [ %1564, %1563 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #7
  br label %1568

1568:                                             ; preds = %1567, %1561
  %.pn605.pn = phi { ptr, i32 } [ %.pn605, %1567 ], [ %1562, %1561 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #7
  br label %1569

1569:                                             ; preds = %1568, %1559
  %.pn605.pn.pn = phi { ptr, i32 } [ %.pn605.pn, %1568 ], [ %1560, %1559 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %252) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %249) #7
  br label %3131

1570:                                             ; preds = %1548, %1558
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %249) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %249) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %255) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %256) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %257) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %257, ptr noundef nonnull @.str.125)
  %1571 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %257)
  %1572 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1571)
  %1573 = zext i1 %1572 to i8
  store i8 %1573, ptr %256, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %255, ptr noundef nonnull align 1 dereferenceable(1) %256, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %257) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %256) #7
  %1574 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %255)
  br i1 %1574, label %1592, label %1575

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

1576:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %259) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %260) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %260, ptr noundef nonnull align 8 dereferenceable(16) %255, ptr noundef nonnull @.str.126, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1577 unwind label %1583

1577:                                             ; preds = %1576
  %1578 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %260) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %259, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 124, ptr noundef %1578)
          to label %1579 unwind label %1585

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

1580:                                             ; preds = %1579
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %258) #7
  br label %1592

1581:                                             ; preds = %1575
  %1582 = landingpad { ptr, i32 }
          cleanup
  br label %1591

1583:                                             ; preds = %1576
  %1584 = landingpad { ptr, i32 }
          cleanup
  br label %1590

1585:                                             ; preds = %1577
  %1586 = landingpad { ptr, i32 }
          cleanup
  br label %1589

1587:                                             ; preds = %1579
  %1588 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #7
  br label %1589

1589:                                             ; preds = %1587, %1585
  %.pn609 = phi { ptr, i32 } [ %1588, %1587 ], [ %1586, %1585 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #7
  br label %1590

1590:                                             ; preds = %1589, %1583
  %.pn609.pn = phi { ptr, i32 } [ %.pn609, %1589 ], [ %1584, %1583 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %258) #7
  br label %1591

1591:                                             ; preds = %1590, %1581
  %.pn609.pn.pn = phi { ptr, i32 } [ %.pn609.pn, %1590 ], [ %1582, %1581 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %258) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %255) #7
  br label %3131

1592:                                             ; preds = %1570, %1580
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %255) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %261) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %262) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %263) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %263, ptr noundef nonnull @.str.127)
  %1593 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %263)
  %1594 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1593)
  %1595 = zext i1 %1594 to i8
  store i8 %1595, ptr %262, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull align 1 dereferenceable(1) %262, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %263) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %262) #7
  %1596 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %261)
  br i1 %1596, label %1614, label %1597

1597:                                             ; preds = %1592
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %264) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %1598 unwind label %1603

1598:                                             ; preds = %1597
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %265) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %266) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %266, ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1599 unwind label %1605

1599:                                             ; preds = %1598
  %1600 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %266) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %265, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 125, ptr noundef %1600)
          to label %1601 unwind label %1607

1601:                                             ; preds = %1599
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %1602 unwind label %1609

1602:                                             ; preds = %1601
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %266) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %264) #7
  br label %1614

1603:                                             ; preds = %1597
  %1604 = landingpad { ptr, i32 }
          cleanup
  br label %1613

1605:                                             ; preds = %1598
  %1606 = landingpad { ptr, i32 }
          cleanup
  br label %1612

1607:                                             ; preds = %1599
  %1608 = landingpad { ptr, i32 }
          cleanup
  br label %1611

1609:                                             ; preds = %1601
  %1610 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %265) #7
  br label %1611

1611:                                             ; preds = %1609, %1607
  %.pn613 = phi { ptr, i32 } [ %1610, %1609 ], [ %1608, %1607 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #7
  br label %1612

1612:                                             ; preds = %1611, %1605
  %.pn613.pn = phi { ptr, i32 } [ %.pn613, %1611 ], [ %1606, %1605 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %266) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %265) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #7
  br label %1613

1613:                                             ; preds = %1612, %1603
  %.pn613.pn.pn = phi { ptr, i32 } [ %.pn613.pn, %1612 ], [ %1604, %1603 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %264) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %261) #7
  br label %3131

1614:                                             ; preds = %1592, %1602
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %261) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %267) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %268) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %269) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %269, ptr noundef nonnull @.str.129)
  %1615 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %269)
  %1616 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1615)
  %1617 = zext i1 %1616 to i8
  store i8 %1617, ptr %268, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull align 1 dereferenceable(1) %268, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %269) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #7
  %1618 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %267)
  br i1 %1618, label %1636, label %1619

1619:                                             ; preds = %1614
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %270) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %270)
          to label %1620 unwind label %1625

1620:                                             ; preds = %1619
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %271) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %272) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %272, ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull @.str.130, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1621 unwind label %1627

1621:                                             ; preds = %1620
  %1622 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %272) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %271, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 126, ptr noundef %1622)
          to label %1623 unwind label %1629

1623:                                             ; preds = %1621
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull align 8 dereferenceable(8) %270)
          to label %1624 unwind label %1631

1624:                                             ; preds = %1623
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %271) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %272) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #7
  br label %1636

1625:                                             ; preds = %1619
  %1626 = landingpad { ptr, i32 }
          cleanup
  br label %1635

1627:                                             ; preds = %1620
  %1628 = landingpad { ptr, i32 }
          cleanup
  br label %1634

1629:                                             ; preds = %1621
  %1630 = landingpad { ptr, i32 }
          cleanup
  br label %1633

1631:                                             ; preds = %1623
  %1632 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %271) #7
  br label %1633

1633:                                             ; preds = %1631, %1629
  %.pn617 = phi { ptr, i32 } [ %1632, %1631 ], [ %1630, %1629 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #7
  br label %1634

1634:                                             ; preds = %1633, %1627
  %.pn617.pn = phi { ptr, i32 } [ %.pn617, %1633 ], [ %1628, %1627 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %272) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %271) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #7
  br label %1635

1635:                                             ; preds = %1634, %1625
  %.pn617.pn.pn = phi { ptr, i32 } [ %.pn617.pn, %1634 ], [ %1626, %1625 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %267) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %267) #7
  br label %3131

1636:                                             ; preds = %1614, %1624
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %267) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %267) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %273) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %274) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %275) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %275, ptr noundef nonnull @.str.131)
  %1637 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %275)
  %1638 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1637)
  %1639 = zext i1 %1638 to i8
  store i8 %1639, ptr %274, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %273, ptr noundef nonnull align 1 dereferenceable(1) %274, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %275) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #7
  %1640 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %273)
  br i1 %1640, label %1658, label %1641

1641:                                             ; preds = %1636
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %276) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %276)
          to label %1642 unwind label %1647

1642:                                             ; preds = %1641
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %277) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %278) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %278, ptr noundef nonnull align 8 dereferenceable(16) %273, ptr noundef nonnull @.str.132, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1643 unwind label %1649

1643:                                             ; preds = %1642
  %1644 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %278) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %277, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 127, ptr noundef %1644)
          to label %1645 unwind label %1651

1645:                                             ; preds = %1643
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(8) %276)
          to label %1646 unwind label %1653

1646:                                             ; preds = %1645
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %277) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %278) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #7
  br label %1658

1647:                                             ; preds = %1641
  %1648 = landingpad { ptr, i32 }
          cleanup
  br label %1657

1649:                                             ; preds = %1642
  %1650 = landingpad { ptr, i32 }
          cleanup
  br label %1656

1651:                                             ; preds = %1643
  %1652 = landingpad { ptr, i32 }
          cleanup
  br label %1655

1653:                                             ; preds = %1645
  %1654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %277) #7
  br label %1655

1655:                                             ; preds = %1653, %1651
  %.pn621 = phi { ptr, i32 } [ %1654, %1653 ], [ %1652, %1651 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #7
  br label %1656

1656:                                             ; preds = %1655, %1649
  %.pn621.pn = phi { ptr, i32 } [ %.pn621, %1655 ], [ %1650, %1649 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %278) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %277) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %276) #7
  br label %1657

1657:                                             ; preds = %1656, %1647
  %.pn621.pn.pn = phi { ptr, i32 } [ %.pn621.pn, %1656 ], [ %1648, %1647 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %273) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %273) #7
  br label %3131

1658:                                             ; preds = %1636, %1646
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %273) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %273) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %279) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %280) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %281) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %281, ptr noundef nonnull @.str.133)
  %1659 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %281)
  %1660 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1659)
  %1661 = zext i1 %1660 to i8
  store i8 %1661, ptr %280, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %279, ptr noundef nonnull align 1 dereferenceable(1) %280, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %281) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %280) #7
  %1662 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %279)
  br i1 %1662, label %1680, label %1663

1663:                                             ; preds = %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %282) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %282)
          to label %1664 unwind label %1669

1664:                                             ; preds = %1663
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %283) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %284) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %284, ptr noundef nonnull align 8 dereferenceable(16) %279, ptr noundef nonnull @.str.134, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1665 unwind label %1671

1665:                                             ; preds = %1664
  %1666 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %284) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %283, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 128, ptr noundef %1666)
          to label %1667 unwind label %1673

1667:                                             ; preds = %1665
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull align 8 dereferenceable(8) %282)
          to label %1668 unwind label %1675

1668:                                             ; preds = %1667
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %283) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %284) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %284) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #7
  br label %1680

1669:                                             ; preds = %1663
  %1670 = landingpad { ptr, i32 }
          cleanup
  br label %1679

1671:                                             ; preds = %1664
  %1672 = landingpad { ptr, i32 }
          cleanup
  br label %1678

1673:                                             ; preds = %1665
  %1674 = landingpad { ptr, i32 }
          cleanup
  br label %1677

1675:                                             ; preds = %1667
  %1676 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %283) #7
  br label %1677

1677:                                             ; preds = %1675, %1673
  %.pn625 = phi { ptr, i32 } [ %1676, %1675 ], [ %1674, %1673 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %284) #7
  br label %1678

1678:                                             ; preds = %1677, %1671
  %.pn625.pn = phi { ptr, i32 } [ %.pn625, %1677 ], [ %1672, %1671 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %284) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %282) #7
  br label %1679

1679:                                             ; preds = %1678, %1669
  %.pn625.pn.pn = phi { ptr, i32 } [ %.pn625.pn, %1678 ], [ %1670, %1669 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %279) #7
  br label %3131

1680:                                             ; preds = %1658, %1668
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %279) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %279) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %285) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %286) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %287) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %287, ptr noundef nonnull @.str.135)
  %1681 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %287)
  %1682 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1681)
  %1683 = zext i1 %1682 to i8
  store i8 %1683, ptr %286, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %285, ptr noundef nonnull align 1 dereferenceable(1) %286, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %287) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %286) #7
  %1684 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %285)
  br i1 %1684, label %1702, label %1685

1685:                                             ; preds = %1680
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %288) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %288)
          to label %1686 unwind label %1691

1686:                                             ; preds = %1685
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %289) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %290) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %290, ptr noundef nonnull align 8 dereferenceable(16) %285, ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1687 unwind label %1693

1687:                                             ; preds = %1686
  %1688 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %290) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %289, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 129, ptr noundef %1688)
          to label %1689 unwind label %1695

1689:                                             ; preds = %1687
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(8) %288)
          to label %1690 unwind label %1697

1690:                                             ; preds = %1689
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %290) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #7
  br label %1702

1691:                                             ; preds = %1685
  %1692 = landingpad { ptr, i32 }
          cleanup
  br label %1701

1693:                                             ; preds = %1686
  %1694 = landingpad { ptr, i32 }
          cleanup
  br label %1700

1695:                                             ; preds = %1687
  %1696 = landingpad { ptr, i32 }
          cleanup
  br label %1699

1697:                                             ; preds = %1689
  %1698 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #7
  br label %1699

1699:                                             ; preds = %1697, %1695
  %.pn629 = phi { ptr, i32 } [ %1698, %1697 ], [ %1696, %1695 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #7
  br label %1700

1700:                                             ; preds = %1699, %1693
  %.pn629.pn = phi { ptr, i32 } [ %.pn629, %1699 ], [ %1694, %1693 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %290) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #7
  br label %1701

1701:                                             ; preds = %1700, %1691
  %.pn629.pn.pn = phi { ptr, i32 } [ %.pn629.pn, %1700 ], [ %1692, %1691 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #7
  br label %3131

1702:                                             ; preds = %1680, %1690
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %291) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %292) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %293) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %293, ptr noundef nonnull @.str.137)
  %1703 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %293)
  %1704 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1703)
  %1705 = zext i1 %1704 to i8
  store i8 %1705, ptr %292, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %291, ptr noundef nonnull align 1 dereferenceable(1) %292, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %293) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %292) #7
  %1706 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %291)
  br i1 %1706, label %1724, label %1707

1707:                                             ; preds = %1702
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %294) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %1708 unwind label %1713

1708:                                             ; preds = %1707
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %295) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %296) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %296, ptr noundef nonnull align 8 dereferenceable(16) %291, ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1709 unwind label %1715

1709:                                             ; preds = %1708
  %1710 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %296) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %295, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 130, ptr noundef %1710)
          to label %1711 unwind label %1717

1711:                                             ; preds = %1709
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %1712 unwind label %1719

1712:                                             ; preds = %1711
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %296) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #7
  br label %1724

1713:                                             ; preds = %1707
  %1714 = landingpad { ptr, i32 }
          cleanup
  br label %1723

1715:                                             ; preds = %1708
  %1716 = landingpad { ptr, i32 }
          cleanup
  br label %1722

1717:                                             ; preds = %1709
  %1718 = landingpad { ptr, i32 }
          cleanup
  br label %1721

1719:                                             ; preds = %1711
  %1720 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #7
  br label %1721

1721:                                             ; preds = %1719, %1717
  %.pn633 = phi { ptr, i32 } [ %1720, %1719 ], [ %1718, %1717 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %296) #7
  br label %1722

1722:                                             ; preds = %1721, %1715
  %.pn633.pn = phi { ptr, i32 } [ %.pn633, %1721 ], [ %1716, %1715 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %296) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %295) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #7
  br label %1723

1723:                                             ; preds = %1722, %1713
  %.pn633.pn.pn = phi { ptr, i32 } [ %.pn633.pn, %1722 ], [ %1714, %1713 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %291) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %291) #7
  br label %3131

1724:                                             ; preds = %1702, %1712
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %291) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %291) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %297) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %298) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %299) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %299, ptr noundef nonnull @.str.139)
  %1725 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %299)
  %1726 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1725)
  %1727 = zext i1 %1726 to i8
  store i8 %1727, ptr %298, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %297, ptr noundef nonnull align 1 dereferenceable(1) %298, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %299) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #7
  %1728 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %297)
  br i1 %1728, label %1746, label %1729

1729:                                             ; preds = %1724
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %300) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %1730 unwind label %1735

1730:                                             ; preds = %1729
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %301) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %302) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %302, ptr noundef nonnull align 8 dereferenceable(16) %297, ptr noundef nonnull @.str.140, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1731 unwind label %1737

1731:                                             ; preds = %1730
  %1732 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %302) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %301, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 131, ptr noundef %1732)
          to label %1733 unwind label %1739

1733:                                             ; preds = %1731
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %1734 unwind label %1741

1734:                                             ; preds = %1733
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %302) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #7
  br label %1746

1735:                                             ; preds = %1729
  %1736 = landingpad { ptr, i32 }
          cleanup
  br label %1745

1737:                                             ; preds = %1730
  %1738 = landingpad { ptr, i32 }
          cleanup
  br label %1744

1739:                                             ; preds = %1731
  %1740 = landingpad { ptr, i32 }
          cleanup
  br label %1743

1741:                                             ; preds = %1733
  %1742 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #7
  br label %1743

1743:                                             ; preds = %1741, %1739
  %.pn637 = phi { ptr, i32 } [ %1742, %1741 ], [ %1740, %1739 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #7
  br label %1744

1744:                                             ; preds = %1743, %1737
  %.pn637.pn = phi { ptr, i32 } [ %.pn637, %1743 ], [ %1738, %1737 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %302) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %300) #7
  br label %1745

1745:                                             ; preds = %1744, %1735
  %.pn637.pn.pn = phi { ptr, i32 } [ %.pn637.pn, %1744 ], [ %1736, %1735 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %297) #7
  br label %3131

1746:                                             ; preds = %1724, %1734
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %297) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %303) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %305) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %305, ptr noundef nonnull @.str.141)
  %1747 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %305)
  %1748 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1747)
  %1749 = zext i1 %1748 to i8
  store i8 %1749, ptr %304, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %303, ptr noundef nonnull align 1 dereferenceable(1) %304, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %305) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #7
  %1750 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %303)
  br i1 %1750, label %1768, label %1751

1751:                                             ; preds = %1746
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %306) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %1752 unwind label %1757

1752:                                             ; preds = %1751
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %307) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %308) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %308, ptr noundef nonnull align 8 dereferenceable(16) %303, ptr noundef nonnull @.str.142, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1753 unwind label %1759

1753:                                             ; preds = %1752
  %1754 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %308) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %307, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 132, ptr noundef %1754)
          to label %1755 unwind label %1761

1755:                                             ; preds = %1753
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %1756 unwind label %1763

1756:                                             ; preds = %1755
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %308) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %308) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #7
  br label %1768

1757:                                             ; preds = %1751
  %1758 = landingpad { ptr, i32 }
          cleanup
  br label %1767

1759:                                             ; preds = %1752
  %1760 = landingpad { ptr, i32 }
          cleanup
  br label %1766

1761:                                             ; preds = %1753
  %1762 = landingpad { ptr, i32 }
          cleanup
  br label %1765

1763:                                             ; preds = %1755
  %1764 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #7
  br label %1765

1765:                                             ; preds = %1763, %1761
  %.pn641 = phi { ptr, i32 } [ %1764, %1763 ], [ %1762, %1761 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %308) #7
  br label %1766

1766:                                             ; preds = %1765, %1759
  %.pn641.pn = phi { ptr, i32 } [ %.pn641, %1765 ], [ %1760, %1759 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %308) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %307) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #7
  br label %1767

1767:                                             ; preds = %1766, %1757
  %.pn641.pn.pn = phi { ptr, i32 } [ %.pn641.pn, %1766 ], [ %1758, %1757 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %303) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %303) #7
  br label %3131

1768:                                             ; preds = %1746, %1756
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %303) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %303) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %309) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %310) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %311) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %311, ptr noundef nonnull @.str.143)
  %1769 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %311)
  %1770 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1769)
  %1771 = zext i1 %1770 to i8
  store i8 %1771, ptr %310, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %309, ptr noundef nonnull align 1 dereferenceable(1) %310, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %311) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %310) #7
  %1772 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %309)
  br i1 %1772, label %1790, label %1773

1773:                                             ; preds = %1768
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %312) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %1774 unwind label %1779

1774:                                             ; preds = %1773
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %313) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %314) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %314, ptr noundef nonnull align 8 dereferenceable(16) %309, ptr noundef nonnull @.str.144, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1775 unwind label %1781

1775:                                             ; preds = %1774
  %1776 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %314) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %313, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 133, ptr noundef %1776)
          to label %1777 unwind label %1783

1777:                                             ; preds = %1775
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %1778 unwind label %1785

1778:                                             ; preds = %1777
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %314) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #7
  br label %1790

1779:                                             ; preds = %1773
  %1780 = landingpad { ptr, i32 }
          cleanup
  br label %1789

1781:                                             ; preds = %1774
  %1782 = landingpad { ptr, i32 }
          cleanup
  br label %1788

1783:                                             ; preds = %1775
  %1784 = landingpad { ptr, i32 }
          cleanup
  br label %1787

1785:                                             ; preds = %1777
  %1786 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #7
  br label %1787

1787:                                             ; preds = %1785, %1783
  %.pn645 = phi { ptr, i32 } [ %1786, %1785 ], [ %1784, %1783 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #7
  br label %1788

1788:                                             ; preds = %1787, %1781
  %.pn645.pn = phi { ptr, i32 } [ %.pn645, %1787 ], [ %1782, %1781 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %314) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %313) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #7
  br label %1789

1789:                                             ; preds = %1788, %1779
  %.pn645.pn.pn = phi { ptr, i32 } [ %.pn645.pn, %1788 ], [ %1780, %1779 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %312) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #7
  br label %3131

1790:                                             ; preds = %1768, %1778
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %309) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %309) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %315) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %316) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %317) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %317, ptr noundef nonnull @.str.145)
  %1791 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %317)
  %1792 = call noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8) %1791)
  %1793 = zext i1 %1792 to i8
  store i8 %1793, ptr %316, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %315, ptr noundef nonnull align 1 dereferenceable(1) %316, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %317) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #7
  %1794 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %315)
  br i1 %1794, label %1812, label %1795

1795:                                             ; preds = %1790
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %318) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %1796 unwind label %1801

1796:                                             ; preds = %1795
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %319) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %320) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %320, ptr noundef nonnull align 8 dereferenceable(16) %315, ptr noundef nonnull @.str.146, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1797 unwind label %1803

1797:                                             ; preds = %1796
  %1798 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %320) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %319, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 134, ptr noundef %1798)
          to label %1799 unwind label %1805

1799:                                             ; preds = %1797
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %1800 unwind label %1807

1800:                                             ; preds = %1799
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %319) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #7
  br label %1812

1801:                                             ; preds = %1795
  %1802 = landingpad { ptr, i32 }
          cleanup
  br label %1811

1803:                                             ; preds = %1796
  %1804 = landingpad { ptr, i32 }
          cleanup
  br label %1810

1805:                                             ; preds = %1797
  %1806 = landingpad { ptr, i32 }
          cleanup
  br label %1809

1807:                                             ; preds = %1799
  %1808 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #7
  br label %1809

1809:                                             ; preds = %1807, %1805
  %.pn649 = phi { ptr, i32 } [ %1808, %1807 ], [ %1806, %1805 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #7
  br label %1810

1810:                                             ; preds = %1809, %1803
  %.pn649.pn = phi { ptr, i32 } [ %.pn649, %1809 ], [ %1804, %1803 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %320) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %319) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #7
  br label %1811

1811:                                             ; preds = %1810, %1801
  %.pn649.pn.pn = phi { ptr, i32 } [ %.pn649.pn, %1810 ], [ %1802, %1801 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %318) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %315) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %315) #7
  br label %3131

1812:                                             ; preds = %1790, %1800
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %315) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %315) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %321) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %322) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %323) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %323, ptr noundef nonnull @.str.137)
  %1813 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %323)
  %1814 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %1813)
  %1815 = zext i1 %1814 to i8
  store i8 %1815, ptr %322, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %321, ptr noundef nonnull align 1 dereferenceable(1) %322, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %323) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %322) #7
  %1816 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %321)
  br i1 %1816, label %1834, label %1817

1817:                                             ; preds = %1812
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %324) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324)
          to label %1818 unwind label %1823

1818:                                             ; preds = %1817
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %325) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %326) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %326, ptr noundef nonnull align 8 dereferenceable(16) %321, ptr noundef nonnull @.str.147, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1819 unwind label %1825

1819:                                             ; preds = %1818
  %1820 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %326) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %325, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 136, ptr noundef %1820)
          to label %1821 unwind label %1827

1821:                                             ; preds = %1819
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull align 8 dereferenceable(8) %324)
          to label %1822 unwind label %1829

1822:                                             ; preds = %1821
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %326) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %325) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %324) #7
  br label %1834

1823:                                             ; preds = %1817
  %1824 = landingpad { ptr, i32 }
          cleanup
  br label %1833

1825:                                             ; preds = %1818
  %1826 = landingpad { ptr, i32 }
          cleanup
  br label %1832

1827:                                             ; preds = %1819
  %1828 = landingpad { ptr, i32 }
          cleanup
  br label %1831

1829:                                             ; preds = %1821
  %1830 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #7
  br label %1831

1831:                                             ; preds = %1829, %1827
  %.pn653 = phi { ptr, i32 } [ %1830, %1829 ], [ %1828, %1827 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %326) #7
  br label %1832

1832:                                             ; preds = %1831, %1825
  %.pn653.pn = phi { ptr, i32 } [ %.pn653, %1831 ], [ %1826, %1825 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %326) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %325) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #7
  br label %1833

1833:                                             ; preds = %1832, %1823
  %.pn653.pn.pn = phi { ptr, i32 } [ %.pn653.pn, %1832 ], [ %1824, %1823 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %324) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %321) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #7
  br label %3131

1834:                                             ; preds = %1812, %1822
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %321) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %327) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %328) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %329) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %329, ptr noundef nonnull @.str.139)
  %1835 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %329)
  %1836 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %1835)
  %1837 = zext i1 %1836 to i8
  store i8 %1837, ptr %328, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %327, ptr noundef nonnull align 1 dereferenceable(1) %328, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %329) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %328) #7
  %1838 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %327)
  br i1 %1838, label %1856, label %1839

1839:                                             ; preds = %1834
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %330) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %1840 unwind label %1845

1840:                                             ; preds = %1839
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %331) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %332) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %332, ptr noundef nonnull align 8 dereferenceable(16) %327, ptr noundef nonnull @.str.148, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1841 unwind label %1847

1841:                                             ; preds = %1840
  %1842 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %332) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %331, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 137, ptr noundef %1842)
          to label %1843 unwind label %1849

1843:                                             ; preds = %1841
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %1844 unwind label %1851

1844:                                             ; preds = %1843
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %332) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %331) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #7
  br label %1856

1845:                                             ; preds = %1839
  %1846 = landingpad { ptr, i32 }
          cleanup
  br label %1855

1847:                                             ; preds = %1840
  %1848 = landingpad { ptr, i32 }
          cleanup
  br label %1854

1849:                                             ; preds = %1841
  %1850 = landingpad { ptr, i32 }
          cleanup
  br label %1853

1851:                                             ; preds = %1843
  %1852 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #7
  br label %1853

1853:                                             ; preds = %1851, %1849
  %.pn657 = phi { ptr, i32 } [ %1852, %1851 ], [ %1850, %1849 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %332) #7
  br label %1854

1854:                                             ; preds = %1853, %1847
  %.pn657.pn = phi { ptr, i32 } [ %.pn657, %1853 ], [ %1848, %1847 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %332) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %331) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #7
  br label %1855

1855:                                             ; preds = %1854, %1845
  %.pn657.pn.pn = phi { ptr, i32 } [ %.pn657.pn, %1854 ], [ %1846, %1845 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %327) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %327) #7
  br label %3131

1856:                                             ; preds = %1834, %1844
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %327) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %327) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %333) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %334) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %335) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %335, ptr noundef nonnull @.str.141)
  %1857 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %335)
  %1858 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %1857)
  %1859 = zext i1 %1858 to i8
  store i8 %1859, ptr %334, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef nonnull align 1 dereferenceable(1) %334, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %335) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %334) #7
  %1860 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %333)
  br i1 %1860, label %1878, label %1861

1861:                                             ; preds = %1856
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %336) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %336)
          to label %1862 unwind label %1867

1862:                                             ; preds = %1861
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %337) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %338) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %338, ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef nonnull @.str.149, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1863 unwind label %1869

1863:                                             ; preds = %1862
  %1864 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %338) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %337, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 138, ptr noundef %1864)
          to label %1865 unwind label %1871

1865:                                             ; preds = %1863
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull align 8 dereferenceable(8) %336)
          to label %1866 unwind label %1873

1866:                                             ; preds = %1865
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %338) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %338) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %337) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %336) #7
  br label %1878

1867:                                             ; preds = %1861
  %1868 = landingpad { ptr, i32 }
          cleanup
  br label %1877

1869:                                             ; preds = %1862
  %1870 = landingpad { ptr, i32 }
          cleanup
  br label %1876

1871:                                             ; preds = %1863
  %1872 = landingpad { ptr, i32 }
          cleanup
  br label %1875

1873:                                             ; preds = %1865
  %1874 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #7
  br label %1875

1875:                                             ; preds = %1873, %1871
  %.pn661 = phi { ptr, i32 } [ %1874, %1873 ], [ %1872, %1871 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %338) #7
  br label %1876

1876:                                             ; preds = %1875, %1869
  %.pn661.pn = phi { ptr, i32 } [ %.pn661, %1875 ], [ %1870, %1869 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %338) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %337) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #7
  br label %1877

1877:                                             ; preds = %1876, %1867
  %.pn661.pn.pn = phi { ptr, i32 } [ %.pn661.pn, %1876 ], [ %1868, %1867 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %336) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %333) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #7
  br label %3131

1878:                                             ; preds = %1856, %1866
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %333) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %333) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %339) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %340) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %341) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %341, ptr noundef nonnull @.str.143)
  %1879 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %341)
  %1880 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %1879)
  %1881 = zext i1 %1880 to i8
  store i8 %1881, ptr %340, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %339, ptr noundef nonnull align 1 dereferenceable(1) %340, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %341) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %340) #7
  %1882 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %339)
  br i1 %1882, label %1900, label %1883

1883:                                             ; preds = %1878
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %342) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %342)
          to label %1884 unwind label %1889

1884:                                             ; preds = %1883
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %343) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %344) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %344, ptr noundef nonnull align 8 dereferenceable(16) %339, ptr noundef nonnull @.str.150, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1885 unwind label %1891

1885:                                             ; preds = %1884
  %1886 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %344) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %343, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 139, ptr noundef %1886)
          to label %1887 unwind label %1893

1887:                                             ; preds = %1885
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull align 8 dereferenceable(8) %342)
          to label %1888 unwind label %1895

1888:                                             ; preds = %1887
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %343) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %344) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %344) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %343) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %342) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %342) #7
  br label %1900

1889:                                             ; preds = %1883
  %1890 = landingpad { ptr, i32 }
          cleanup
  br label %1899

1891:                                             ; preds = %1884
  %1892 = landingpad { ptr, i32 }
          cleanup
  br label %1898

1893:                                             ; preds = %1885
  %1894 = landingpad { ptr, i32 }
          cleanup
  br label %1897

1895:                                             ; preds = %1887
  %1896 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %343) #7
  br label %1897

1897:                                             ; preds = %1895, %1893
  %.pn665 = phi { ptr, i32 } [ %1896, %1895 ], [ %1894, %1893 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %344) #7
  br label %1898

1898:                                             ; preds = %1897, %1891
  %.pn665.pn = phi { ptr, i32 } [ %.pn665, %1897 ], [ %1892, %1891 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %344) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %343) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %342) #7
  br label %1899

1899:                                             ; preds = %1898, %1889
  %.pn665.pn.pn = phi { ptr, i32 } [ %.pn665.pn, %1898 ], [ %1890, %1889 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %342) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %339) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %339) #7
  br label %3131

1900:                                             ; preds = %1878, %1888
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %339) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %339) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %345) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %346) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %347) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %347, ptr noundef nonnull @.str.145)
  %1901 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %347)
  %1902 = call noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8) %1901)
  %1903 = zext i1 %1902 to i8
  store i8 %1903, ptr %346, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %345, ptr noundef nonnull align 1 dereferenceable(1) %346, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %347) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %346) #7
  %1904 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %345)
  br i1 %1904, label %1922, label %1905

1905:                                             ; preds = %1900
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %348) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %1906 unwind label %1911

1906:                                             ; preds = %1905
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %349) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %350) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %350, ptr noundef nonnull align 8 dereferenceable(16) %345, ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1907 unwind label %1913

1907:                                             ; preds = %1906
  %1908 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %350) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %349, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 140, ptr noundef %1908)
          to label %1909 unwind label %1915

1909:                                             ; preds = %1907
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %1910 unwind label %1917

1910:                                             ; preds = %1909
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %349) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %348) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %348) #7
  br label %1922

1911:                                             ; preds = %1905
  %1912 = landingpad { ptr, i32 }
          cleanup
  br label %1921

1913:                                             ; preds = %1906
  %1914 = landingpad { ptr, i32 }
          cleanup
  br label %1920

1915:                                             ; preds = %1907
  %1916 = landingpad { ptr, i32 }
          cleanup
  br label %1919

1917:                                             ; preds = %1909
  %1918 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #7
  br label %1919

1919:                                             ; preds = %1917, %1915
  %.pn669 = phi { ptr, i32 } [ %1918, %1917 ], [ %1916, %1915 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #7
  br label %1920

1920:                                             ; preds = %1919, %1913
  %.pn669.pn = phi { ptr, i32 } [ %.pn669, %1919 ], [ %1914, %1913 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %350) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %349) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %348) #7
  br label %1921

1921:                                             ; preds = %1920, %1911
  %.pn669.pn.pn = phi { ptr, i32 } [ %.pn669.pn, %1920 ], [ %1912, %1911 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %348) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %345) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %345) #7
  br label %3131

1922:                                             ; preds = %1900, %1910
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %345) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %345) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %351) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %352) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %353) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %353, ptr noundef nonnull @.str.7)
  %1923 = call noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %353)
  %1924 = zext i1 %1923 to i8
  store i8 %1924, ptr %352, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull align 1 dereferenceable(1) %352, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %353) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %352) #7
  %1925 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %351)
  br i1 %1925, label %1943, label %1926

1926:                                             ; preds = %1922
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %354) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %1927 unwind label %1932

1927:                                             ; preds = %1926
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %355) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %356) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %356, ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1928 unwind label %1934

1928:                                             ; preds = %1927
  %1929 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %356) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %355, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 142, ptr noundef %1929)
          to label %1930 unwind label %1936

1930:                                             ; preds = %1928
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %1931 unwind label %1938

1931:                                             ; preds = %1930
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %355) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %356) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %356) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %355) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #7
  br label %1943

1932:                                             ; preds = %1926
  %1933 = landingpad { ptr, i32 }
          cleanup
  br label %1942

1934:                                             ; preds = %1927
  %1935 = landingpad { ptr, i32 }
          cleanup
  br label %1941

1936:                                             ; preds = %1928
  %1937 = landingpad { ptr, i32 }
          cleanup
  br label %1940

1938:                                             ; preds = %1930
  %1939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %355) #7
  br label %1940

1940:                                             ; preds = %1938, %1936
  %.pn673 = phi { ptr, i32 } [ %1939, %1938 ], [ %1937, %1936 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %356) #7
  br label %1941

1941:                                             ; preds = %1940, %1934
  %.pn673.pn = phi { ptr, i32 } [ %.pn673, %1940 ], [ %1935, %1934 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %356) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %355) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #7
  br label %1942

1942:                                             ; preds = %1941, %1932
  %.pn673.pn.pn = phi { ptr, i32 } [ %.pn673.pn, %1941 ], [ %1933, %1932 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %351) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %351) #7
  br label %3131

1943:                                             ; preds = %1922, %1931
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %351) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %351) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %357) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %358) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %359) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %359, ptr noundef nonnull @.str.58)
  %1944 = call noundef zeroext i1 @_ZNK4chen10ip_address10isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(28) %359)
  %1945 = xor i1 %1944, true
  %1946 = zext i1 %1945 to i8
  store i8 %1946, ptr %358, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull align 1 dereferenceable(1) %358, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %359) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %358) #7
  %1947 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %357)
  br i1 %1947, label %1965, label %1948

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

1949:                                             ; preds = %1948
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %361) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %362) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %362, ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %1950 unwind label %1956

1950:                                             ; preds = %1949
  %1951 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %362) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %361, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 143, ptr noundef %1951)
          to label %1952 unwind label %1958

1952:                                             ; preds = %1950
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 8 dereferenceable(8) %360)
          to label %1953 unwind label %1960

1953:                                             ; preds = %1952
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %362) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %361) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %360) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %360) #7
  br label %1965

1954:                                             ; preds = %1948
  %1955 = landingpad { ptr, i32 }
          cleanup
  br label %1964

1956:                                             ; preds = %1949
  %1957 = landingpad { ptr, i32 }
          cleanup
  br label %1963

1958:                                             ; preds = %1950
  %1959 = landingpad { ptr, i32 }
          cleanup
  br label %1962

1960:                                             ; preds = %1952
  %1961 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #7
  br label %1962

1962:                                             ; preds = %1960, %1958
  %.pn677 = phi { ptr, i32 } [ %1961, %1960 ], [ %1959, %1958 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #7
  br label %1963

1963:                                             ; preds = %1962, %1956
  %.pn677.pn = phi { ptr, i32 } [ %.pn677, %1962 ], [ %1957, %1956 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %362) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %361) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %360) #7
  br label %1964

1964:                                             ; preds = %1963, %1954
  %.pn677.pn.pn = phi { ptr, i32 } [ %.pn677.pn, %1963 ], [ %1955, %1954 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %360) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %357) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %357) #7
  br label %3131

1965:                                             ; preds = %1943, %1953
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %357) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %357) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %363) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %364) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %365) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %365, ptr noundef nonnull @.str.121)
  %1966 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %365)
  %1967 = call noundef zeroext i1 @_ZNK4chen11ip_version411isLinkLocalEv(ptr noundef nonnull align 4 dereferenceable(8) %1966)
  %1968 = zext i1 %1967 to i8
  store i8 %1968, ptr %364, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %363, ptr noundef nonnull align 1 dereferenceable(1) %364, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %365) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %364) #7
  %1969 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %363)
  br i1 %1969, label %1987, label %1970

1970:                                             ; preds = %1965
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %366) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %366)
          to label %1971 unwind label %1976

1971:                                             ; preds = %1970
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %367) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %368) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %368, ptr noundef nonnull align 8 dereferenceable(16) %363, ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1972 unwind label %1978

1972:                                             ; preds = %1971
  %1973 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %368) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %367, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 145, ptr noundef %1973)
          to label %1974 unwind label %1980

1974:                                             ; preds = %1972
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %367, ptr noundef nonnull align 8 dereferenceable(8) %366)
          to label %1975 unwind label %1982

1975:                                             ; preds = %1974
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %367) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %368) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %367) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %366) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %366) #7
  br label %1987

1976:                                             ; preds = %1970
  %1977 = landingpad { ptr, i32 }
          cleanup
  br label %1986

1978:                                             ; preds = %1971
  %1979 = landingpad { ptr, i32 }
          cleanup
  br label %1985

1980:                                             ; preds = %1972
  %1981 = landingpad { ptr, i32 }
          cleanup
  br label %1984

1982:                                             ; preds = %1974
  %1983 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %367) #7
  br label %1984

1984:                                             ; preds = %1982, %1980
  %.pn681 = phi { ptr, i32 } [ %1983, %1982 ], [ %1981, %1980 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #7
  br label %1985

1985:                                             ; preds = %1984, %1978
  %.pn681.pn = phi { ptr, i32 } [ %.pn681, %1984 ], [ %1979, %1978 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %368) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %367) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %366) #7
  br label %1986

1986:                                             ; preds = %1985, %1976
  %.pn681.pn.pn = phi { ptr, i32 } [ %.pn681.pn, %1985 ], [ %1977, %1976 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %366) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %363) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %363) #7
  br label %3131

1987:                                             ; preds = %1965, %1975
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %363) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %363) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %369) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %370) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %371) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %371, ptr noundef nonnull @.str.155)
  %1988 = call noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %371)
  %1989 = zext i1 %1988 to i8
  store i8 %1989, ptr %370, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull align 1 dereferenceable(1) %370, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %371) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %370) #7
  %1990 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %369)
  br i1 %1990, label %2008, label %1991

1991:                                             ; preds = %1987
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %372) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %372)
          to label %1992 unwind label %1997

1992:                                             ; preds = %1991
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %373) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %374) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %374, ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull @.str.156, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %1993 unwind label %1999

1993:                                             ; preds = %1992
  %1994 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %374) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %373, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 147, ptr noundef %1994)
          to label %1995 unwind label %2001

1995:                                             ; preds = %1993
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %373, ptr noundef nonnull align 8 dereferenceable(8) %372)
          to label %1996 unwind label %2003

1996:                                             ; preds = %1995
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %373) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %373) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %372) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %372) #7
  br label %2008

1997:                                             ; preds = %1991
  %1998 = landingpad { ptr, i32 }
          cleanup
  br label %2007

1999:                                             ; preds = %1992
  %2000 = landingpad { ptr, i32 }
          cleanup
  br label %2006

2001:                                             ; preds = %1993
  %2002 = landingpad { ptr, i32 }
          cleanup
  br label %2005

2003:                                             ; preds = %1995
  %2004 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %373) #7
  br label %2005

2005:                                             ; preds = %2003, %2001
  %.pn685 = phi { ptr, i32 } [ %2004, %2003 ], [ %2002, %2001 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #7
  br label %2006

2006:                                             ; preds = %2005, %1999
  %.pn685.pn = phi { ptr, i32 } [ %.pn685, %2005 ], [ %2000, %1999 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %373) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %372) #7
  br label %2007

2007:                                             ; preds = %2006, %1997
  %.pn685.pn.pn = phi { ptr, i32 } [ %.pn685.pn, %2006 ], [ %1998, %1997 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %372) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %369) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %369) #7
  br label %3131

2008:                                             ; preds = %1987, %1996
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %369) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %369) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %375) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %376) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %377) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %377, ptr noundef nonnull @.str.157)
  %2009 = call noundef zeroext i1 @_ZNK4chen10ip_address11isMulticastEv(ptr noundef nonnull align 4 dereferenceable(28) %377)
  %2010 = xor i1 %2009, true
  %2011 = zext i1 %2010 to i8
  store i8 %2011, ptr %376, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %375, ptr noundef nonnull align 1 dereferenceable(1) %376, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %377) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %376) #7
  %2012 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %375)
  br i1 %2012, label %2030, label %2013

2013:                                             ; preds = %2008
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %378) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378)
          to label %2014 unwind label %2019

2014:                                             ; preds = %2013
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %379) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %380) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %380, ptr noundef nonnull align 8 dereferenceable(16) %375, ptr noundef nonnull @.str.158, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2015 unwind label %2021

2015:                                             ; preds = %2014
  %2016 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %380) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %379, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 148, ptr noundef %2016)
          to label %2017 unwind label %2023

2017:                                             ; preds = %2015
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(8) %378)
          to label %2018 unwind label %2025

2018:                                             ; preds = %2017
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %379) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %380) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %380) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %379) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #7
  br label %2030

2019:                                             ; preds = %2013
  %2020 = landingpad { ptr, i32 }
          cleanup
  br label %2029

2021:                                             ; preds = %2014
  %2022 = landingpad { ptr, i32 }
          cleanup
  br label %2028

2023:                                             ; preds = %2015
  %2024 = landingpad { ptr, i32 }
          cleanup
  br label %2027

2025:                                             ; preds = %2017
  %2026 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %379) #7
  br label %2027

2027:                                             ; preds = %2025, %2023
  %.pn689 = phi { ptr, i32 } [ %2026, %2025 ], [ %2024, %2023 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %380) #7
  br label %2028

2028:                                             ; preds = %2027, %2021
  %.pn689.pn = phi { ptr, i32 } [ %.pn689, %2027 ], [ %2022, %2021 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %380) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %379) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #7
  br label %2029

2029:                                             ; preds = %2028, %2019
  %.pn689.pn.pn = phi { ptr, i32 } [ %.pn689.pn, %2028 ], [ %2020, %2019 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %375) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %375) #7
  br label %3131

2030:                                             ; preds = %2008, %2018
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %375) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %375) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %381) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %382) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %383) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %383, ptr noundef nonnull @.str.159)
  %2031 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %383)
  %2032 = call noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %2031)
  %2033 = zext i1 %2032 to i8
  store i8 %2033, ptr %382, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %381, ptr noundef nonnull align 1 dereferenceable(1) %382, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %383) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %382) #7
  %2034 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %381)
  br i1 %2034, label %2052, label %2035

2035:                                             ; preds = %2030
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %384) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %2036 unwind label %2041

2036:                                             ; preds = %2035
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %385) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %386) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %386, ptr noundef nonnull align 8 dereferenceable(16) %381, ptr noundef nonnull @.str.160, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2037 unwind label %2043

2037:                                             ; preds = %2036
  %2038 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %386) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %385, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 150, ptr noundef %2038)
          to label %2039 unwind label %2045

2039:                                             ; preds = %2037
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %2040 unwind label %2047

2040:                                             ; preds = %2039
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %386) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %386) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %385) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %384) #7
  br label %2052

2041:                                             ; preds = %2035
  %2042 = landingpad { ptr, i32 }
          cleanup
  br label %2051

2043:                                             ; preds = %2036
  %2044 = landingpad { ptr, i32 }
          cleanup
  br label %2050

2045:                                             ; preds = %2037
  %2046 = landingpad { ptr, i32 }
          cleanup
  br label %2049

2047:                                             ; preds = %2039
  %2048 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #7
  br label %2049

2049:                                             ; preds = %2047, %2045
  %.pn693 = phi { ptr, i32 } [ %2048, %2047 ], [ %2046, %2045 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %386) #7
  br label %2050

2050:                                             ; preds = %2049, %2043
  %.pn693.pn = phi { ptr, i32 } [ %.pn693, %2049 ], [ %2044, %2043 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %386) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %385) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #7
  br label %2051

2051:                                             ; preds = %2050, %2041
  %.pn693.pn.pn = phi { ptr, i32 } [ %.pn693.pn, %2050 ], [ %2042, %2041 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %384) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %381) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %381) #7
  br label %3131

2052:                                             ; preds = %2030, %2040
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %381) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %381) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %387) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %388) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %389) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %389, ptr noundef nonnull @.str.97)
  %2053 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %389)
  %2054 = call noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8) %2053)
  %2055 = xor i1 %2054, true
  %2056 = zext i1 %2055 to i8
  store i8 %2056, ptr %388, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %387, ptr noundef nonnull align 1 dereferenceable(1) %388, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %389) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %388) #7
  %2057 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %387)
  br i1 %2057, label %2075, label %2058

2058:                                             ; preds = %2052
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %390) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %390)
          to label %2059 unwind label %2064

2059:                                             ; preds = %2058
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %391) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %392) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %392, ptr noundef nonnull align 8 dereferenceable(16) %387, ptr noundef nonnull @.str.161, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2060 unwind label %2066

2060:                                             ; preds = %2059
  %2061 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %392) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %391, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 151, ptr noundef %2061)
          to label %2062 unwind label %2068

2062:                                             ; preds = %2060
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef nonnull align 8 dereferenceable(8) %390)
          to label %2063 unwind label %2070

2063:                                             ; preds = %2062
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %391) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %392) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %392) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %391) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %390) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %390) #7
  br label %2075

2064:                                             ; preds = %2058
  %2065 = landingpad { ptr, i32 }
          cleanup
  br label %2074

2066:                                             ; preds = %2059
  %2067 = landingpad { ptr, i32 }
          cleanup
  br label %2073

2068:                                             ; preds = %2060
  %2069 = landingpad { ptr, i32 }
          cleanup
  br label %2072

2070:                                             ; preds = %2062
  %2071 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %391) #7
  br label %2072

2072:                                             ; preds = %2070, %2068
  %.pn697 = phi { ptr, i32 } [ %2071, %2070 ], [ %2069, %2068 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %392) #7
  br label %2073

2073:                                             ; preds = %2072, %2066
  %.pn697.pn = phi { ptr, i32 } [ %.pn697, %2072 ], [ %2067, %2066 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %392) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %391) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %390) #7
  br label %2074

2074:                                             ; preds = %2073, %2064
  %.pn697.pn.pn = phi { ptr, i32 } [ %.pn697.pn, %2073 ], [ %2065, %2064 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %390) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %387) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %387) #7
  br label %3131

2075:                                             ; preds = %2052, %2063
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %387) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %387) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %393) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %394) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %395) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %395, ptr noundef nonnull @.str.43)
  %2076 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %395)
  %2077 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2076)
  %2078 = zext i1 %2077 to i8
  store i8 %2078, ptr %394, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %393, ptr noundef nonnull align 1 dereferenceable(1) %394, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %395) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %394) #7
  %2079 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %393)
  br i1 %2079, label %2097, label %2080

2080:                                             ; preds = %2075
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %396) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %396)
          to label %2081 unwind label %2086

2081:                                             ; preds = %2080
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %397) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %398) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %398, ptr noundef nonnull align 8 dereferenceable(16) %393, ptr noundef nonnull @.str.162, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2082 unwind label %2088

2082:                                             ; preds = %2081
  %2083 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %398) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %397, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 154, ptr noundef %2083)
          to label %2084 unwind label %2090

2084:                                             ; preds = %2082
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %397, ptr noundef nonnull align 8 dereferenceable(8) %396)
          to label %2085 unwind label %2092

2085:                                             ; preds = %2084
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %397) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %397) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %396) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %396) #7
  br label %2097

2086:                                             ; preds = %2080
  %2087 = landingpad { ptr, i32 }
          cleanup
  br label %2096

2088:                                             ; preds = %2081
  %2089 = landingpad { ptr, i32 }
          cleanup
  br label %2095

2090:                                             ; preds = %2082
  %2091 = landingpad { ptr, i32 }
          cleanup
  br label %2094

2092:                                             ; preds = %2084
  %2093 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %397) #7
  br label %2094

2094:                                             ; preds = %2092, %2090
  %.pn701 = phi { ptr, i32 } [ %2093, %2092 ], [ %2091, %2090 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %398) #7
  br label %2095

2095:                                             ; preds = %2094, %2088
  %.pn701.pn = phi { ptr, i32 } [ %.pn701, %2094 ], [ %2089, %2088 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %398) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %397) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %396) #7
  br label %2096

2096:                                             ; preds = %2095, %2086
  %.pn701.pn.pn = phi { ptr, i32 } [ %.pn701.pn, %2095 ], [ %2087, %2086 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %396) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %393) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %393) #7
  br label %3131

2097:                                             ; preds = %2075, %2085
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %393) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %393) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %399) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %400) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %401) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %401, ptr noundef nonnull @.str.43)
  %2098 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %401)
  %2099 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2098)
  %2100 = xor i1 %2099, true
  %2101 = zext i1 %2100 to i8
  store i8 %2101, ptr %400, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %399, ptr noundef nonnull align 1 dereferenceable(1) %400, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %401) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %400) #7
  %2102 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %399)
  br i1 %2102, label %2120, label %2103

2103:                                             ; preds = %2097
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %402) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %402)
          to label %2104 unwind label %2109

2104:                                             ; preds = %2103
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %403) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %404) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %404, ptr noundef nonnull align 8 dereferenceable(16) %399, ptr noundef nonnull @.str.163, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2105 unwind label %2111

2105:                                             ; preds = %2104
  %2106 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %404) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %403, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 155, ptr noundef %2106)
          to label %2107 unwind label %2113

2107:                                             ; preds = %2105
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %403, ptr noundef nonnull align 8 dereferenceable(8) %402)
          to label %2108 unwind label %2115

2108:                                             ; preds = %2107
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %403) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %402) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %402) #7
  br label %2120

2109:                                             ; preds = %2103
  %2110 = landingpad { ptr, i32 }
          cleanup
  br label %2119

2111:                                             ; preds = %2104
  %2112 = landingpad { ptr, i32 }
          cleanup
  br label %2118

2113:                                             ; preds = %2105
  %2114 = landingpad { ptr, i32 }
          cleanup
  br label %2117

2115:                                             ; preds = %2107
  %2116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #7
  br label %2117

2117:                                             ; preds = %2115, %2113
  %.pn705 = phi { ptr, i32 } [ %2116, %2115 ], [ %2114, %2113 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #7
  br label %2118

2118:                                             ; preds = %2117, %2111
  %.pn705.pn = phi { ptr, i32 } [ %.pn705, %2117 ], [ %2112, %2111 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %404) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %403) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %402) #7
  br label %2119

2119:                                             ; preds = %2118, %2109
  %.pn705.pn.pn = phi { ptr, i32 } [ %.pn705.pn, %2118 ], [ %2110, %2109 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %402) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %399) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %399) #7
  br label %3131

2120:                                             ; preds = %2097, %2108
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %399) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %399) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %405) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %406) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %407) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %407, ptr noundef nonnull @.str.43)
  %2121 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %407)
  %2122 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2121)
  %2123 = xor i1 %2122, true
  %2124 = zext i1 %2123 to i8
  store i8 %2124, ptr %406, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %405, ptr noundef nonnull align 1 dereferenceable(1) %406, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %407) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %406) #7
  %2125 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %405)
  br i1 %2125, label %2143, label %2126

2126:                                             ; preds = %2120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %408) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %408)
          to label %2127 unwind label %2132

2127:                                             ; preds = %2126
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %409) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %410) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %410, ptr noundef nonnull align 8 dereferenceable(16) %405, ptr noundef nonnull @.str.164, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2128 unwind label %2134

2128:                                             ; preds = %2127
  %2129 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %410) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %409, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 156, ptr noundef %2129)
          to label %2130 unwind label %2136

2130:                                             ; preds = %2128
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef nonnull align 8 dereferenceable(8) %408)
          to label %2131 unwind label %2138

2131:                                             ; preds = %2130
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %410) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %409) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %408) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %408) #7
  br label %2143

2132:                                             ; preds = %2126
  %2133 = landingpad { ptr, i32 }
          cleanup
  br label %2142

2134:                                             ; preds = %2127
  %2135 = landingpad { ptr, i32 }
          cleanup
  br label %2141

2136:                                             ; preds = %2128
  %2137 = landingpad { ptr, i32 }
          cleanup
  br label %2140

2138:                                             ; preds = %2130
  %2139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #7
  br label %2140

2140:                                             ; preds = %2138, %2136
  %.pn709 = phi { ptr, i32 } [ %2139, %2138 ], [ %2137, %2136 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #7
  br label %2141

2141:                                             ; preds = %2140, %2134
  %.pn709.pn = phi { ptr, i32 } [ %.pn709, %2140 ], [ %2135, %2134 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %410) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %409) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %408) #7
  br label %2142

2142:                                             ; preds = %2141, %2132
  %.pn709.pn.pn = phi { ptr, i32 } [ %.pn709.pn, %2141 ], [ %2133, %2132 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %408) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %405) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %405) #7
  br label %3131

2143:                                             ; preds = %2120, %2131
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %405) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %405) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %411) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %412) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %413) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %413, ptr noundef nonnull @.str.137)
  %2144 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %413)
  %2145 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2144)
  %2146 = zext i1 %2145 to i8
  store i8 %2146, ptr %412, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %411, ptr noundef nonnull align 1 dereferenceable(1) %412, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %413) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %412) #7
  %2147 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %411)
  br i1 %2147, label %2165, label %2148

2148:                                             ; preds = %2143
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %414) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %2149 unwind label %2154

2149:                                             ; preds = %2148
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %415) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %416) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %416, ptr noundef nonnull align 8 dereferenceable(16) %411, ptr noundef nonnull @.str.165, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2150 unwind label %2156

2150:                                             ; preds = %2149
  %2151 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %416) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %415, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 158, ptr noundef %2151)
          to label %2152 unwind label %2158

2152:                                             ; preds = %2150
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %2153 unwind label %2160

2153:                                             ; preds = %2152
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %416) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %415) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %414) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %414) #7
  br label %2165

2154:                                             ; preds = %2148
  %2155 = landingpad { ptr, i32 }
          cleanup
  br label %2164

2156:                                             ; preds = %2149
  %2157 = landingpad { ptr, i32 }
          cleanup
  br label %2163

2158:                                             ; preds = %2150
  %2159 = landingpad { ptr, i32 }
          cleanup
  br label %2162

2160:                                             ; preds = %2152
  %2161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #7
  br label %2162

2162:                                             ; preds = %2160, %2158
  %.pn713 = phi { ptr, i32 } [ %2161, %2160 ], [ %2159, %2158 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #7
  br label %2163

2163:                                             ; preds = %2162, %2156
  %.pn713.pn = phi { ptr, i32 } [ %.pn713, %2162 ], [ %2157, %2156 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %416) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %415) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %414) #7
  br label %2164

2164:                                             ; preds = %2163, %2154
  %.pn713.pn.pn = phi { ptr, i32 } [ %.pn713.pn, %2163 ], [ %2155, %2154 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %414) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %411) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %411) #7
  br label %3131

2165:                                             ; preds = %2143, %2153
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %411) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %411) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %417) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %418) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %419) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %419, ptr noundef nonnull @.str.137)
  %2166 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %419)
  %2167 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2166)
  %2168 = xor i1 %2167, true
  %2169 = zext i1 %2168 to i8
  store i8 %2169, ptr %418, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %417, ptr noundef nonnull align 1 dereferenceable(1) %418, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %419) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %418) #7
  %2170 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %417)
  br i1 %2170, label %2188, label %2171

2171:                                             ; preds = %2165
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %420) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %420)
          to label %2172 unwind label %2177

2172:                                             ; preds = %2171
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %421) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %422) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %422, ptr noundef nonnull align 8 dereferenceable(16) %417, ptr noundef nonnull @.str.166, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2173 unwind label %2179

2173:                                             ; preds = %2172
  %2174 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %422) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %421, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 159, ptr noundef %2174)
          to label %2175 unwind label %2181

2175:                                             ; preds = %2173
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull align 8 dereferenceable(8) %420)
          to label %2176 unwind label %2183

2176:                                             ; preds = %2175
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %421) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %422) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %421) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %420) #7
  br label %2188

2177:                                             ; preds = %2171
  %2178 = landingpad { ptr, i32 }
          cleanup
  br label %2187

2179:                                             ; preds = %2172
  %2180 = landingpad { ptr, i32 }
          cleanup
  br label %2186

2181:                                             ; preds = %2173
  %2182 = landingpad { ptr, i32 }
          cleanup
  br label %2185

2183:                                             ; preds = %2175
  %2184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %421) #7
  br label %2185

2185:                                             ; preds = %2183, %2181
  %.pn717 = phi { ptr, i32 } [ %2184, %2183 ], [ %2182, %2181 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %422) #7
  br label %2186

2186:                                             ; preds = %2185, %2179
  %.pn717.pn = phi { ptr, i32 } [ %.pn717, %2185 ], [ %2180, %2179 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %422) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %421) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #7
  br label %2187

2187:                                             ; preds = %2186, %2177
  %.pn717.pn.pn = phi { ptr, i32 } [ %.pn717.pn, %2186 ], [ %2178, %2177 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %420) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %417) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %417) #7
  br label %3131

2188:                                             ; preds = %2165, %2176
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %417) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %417) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %423) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %424) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %425) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %425, ptr noundef nonnull @.str.137)
  %2189 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %425)
  %2190 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2189)
  %2191 = xor i1 %2190, true
  %2192 = zext i1 %2191 to i8
  store i8 %2192, ptr %424, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %423, ptr noundef nonnull align 1 dereferenceable(1) %424, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %425) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %424) #7
  %2193 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %423)
  br i1 %2193, label %2211, label %2194

2194:                                             ; preds = %2188
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %426) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %426)
          to label %2195 unwind label %2200

2195:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %427) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %428) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %428, ptr noundef nonnull align 8 dereferenceable(16) %423, ptr noundef nonnull @.str.167, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2196 unwind label %2202

2196:                                             ; preds = %2195
  %2197 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %428) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %427, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 160, ptr noundef %2197)
          to label %2198 unwind label %2204

2198:                                             ; preds = %2196
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %427, ptr noundef nonnull align 8 dereferenceable(8) %426)
          to label %2199 unwind label %2206

2199:                                             ; preds = %2198
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %427) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %428) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %428) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %427) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %426) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %426) #7
  br label %2211

2200:                                             ; preds = %2194
  %2201 = landingpad { ptr, i32 }
          cleanup
  br label %2210

2202:                                             ; preds = %2195
  %2203 = landingpad { ptr, i32 }
          cleanup
  br label %2209

2204:                                             ; preds = %2196
  %2205 = landingpad { ptr, i32 }
          cleanup
  br label %2208

2206:                                             ; preds = %2198
  %2207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %427) #7
  br label %2208

2208:                                             ; preds = %2206, %2204
  %.pn721 = phi { ptr, i32 } [ %2207, %2206 ], [ %2205, %2204 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %428) #7
  br label %2209

2209:                                             ; preds = %2208, %2202
  %.pn721.pn = phi { ptr, i32 } [ %.pn721, %2208 ], [ %2203, %2202 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %428) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %427) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %426) #7
  br label %2210

2210:                                             ; preds = %2209, %2200
  %.pn721.pn.pn = phi { ptr, i32 } [ %.pn721.pn, %2209 ], [ %2201, %2200 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %426) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %423) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %423) #7
  br label %3131

2211:                                             ; preds = %2188, %2199
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %423) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %423) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %429) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %430) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %431) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %431, ptr noundef nonnull @.str.168)
  %2212 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %431)
  %2213 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2212)
  %2214 = zext i1 %2213 to i8
  store i8 %2214, ptr %430, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %429, ptr noundef nonnull align 1 dereferenceable(1) %430, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %431) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %430) #7
  %2215 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %429)
  br i1 %2215, label %2233, label %2216

2216:                                             ; preds = %2211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %432) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %432)
          to label %2217 unwind label %2222

2217:                                             ; preds = %2216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %433) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %434) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %434, ptr noundef nonnull align 8 dereferenceable(16) %429, ptr noundef nonnull @.str.169, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2218 unwind label %2224

2218:                                             ; preds = %2217
  %2219 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %434) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %433, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 162, ptr noundef %2219)
          to label %2220 unwind label %2226

2220:                                             ; preds = %2218
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull align 8 dereferenceable(8) %432)
          to label %2221 unwind label %2228

2221:                                             ; preds = %2220
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %434) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %434) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %433) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %432) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %432) #7
  br label %2233

2222:                                             ; preds = %2216
  %2223 = landingpad { ptr, i32 }
          cleanup
  br label %2232

2224:                                             ; preds = %2217
  %2225 = landingpad { ptr, i32 }
          cleanup
  br label %2231

2226:                                             ; preds = %2218
  %2227 = landingpad { ptr, i32 }
          cleanup
  br label %2230

2228:                                             ; preds = %2220
  %2229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %433) #7
  br label %2230

2230:                                             ; preds = %2228, %2226
  %.pn725 = phi { ptr, i32 } [ %2229, %2228 ], [ %2227, %2226 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %434) #7
  br label %2231

2231:                                             ; preds = %2230, %2224
  %.pn725.pn = phi { ptr, i32 } [ %.pn725, %2230 ], [ %2225, %2224 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %434) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %433) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %432) #7
  br label %2232

2232:                                             ; preds = %2231, %2222
  %.pn725.pn.pn = phi { ptr, i32 } [ %.pn725.pn, %2231 ], [ %2223, %2222 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %432) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %429) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %429) #7
  br label %3131

2233:                                             ; preds = %2211, %2221
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %429) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %429) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %435) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %436) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %437) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %437, ptr noundef nonnull @.str.168)
  %2234 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %437)
  %2235 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2234)
  %2236 = xor i1 %2235, true
  %2237 = zext i1 %2236 to i8
  store i8 %2237, ptr %436, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %435, ptr noundef nonnull align 1 dereferenceable(1) %436, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %437) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %436) #7
  %2238 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %435)
  br i1 %2238, label %2256, label %2239

2239:                                             ; preds = %2233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %438) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %438)
          to label %2240 unwind label %2245

2240:                                             ; preds = %2239
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %439) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %440) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %440, ptr noundef nonnull align 8 dereferenceable(16) %435, ptr noundef nonnull @.str.170, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2241 unwind label %2247

2241:                                             ; preds = %2240
  %2242 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %440) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %439, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 163, ptr noundef %2242)
          to label %2243 unwind label %2249

2243:                                             ; preds = %2241
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %439, ptr noundef nonnull align 8 dereferenceable(8) %438)
          to label %2244 unwind label %2251

2244:                                             ; preds = %2243
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %440) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %440) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %439) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %438) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %438) #7
  br label %2256

2245:                                             ; preds = %2239
  %2246 = landingpad { ptr, i32 }
          cleanup
  br label %2255

2247:                                             ; preds = %2240
  %2248 = landingpad { ptr, i32 }
          cleanup
  br label %2254

2249:                                             ; preds = %2241
  %2250 = landingpad { ptr, i32 }
          cleanup
  br label %2253

2251:                                             ; preds = %2243
  %2252 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #7
  br label %2253

2253:                                             ; preds = %2251, %2249
  %.pn729 = phi { ptr, i32 } [ %2252, %2251 ], [ %2250, %2249 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %440) #7
  br label %2254

2254:                                             ; preds = %2253, %2247
  %.pn729.pn = phi { ptr, i32 } [ %.pn729, %2253 ], [ %2248, %2247 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %440) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %439) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %438) #7
  br label %2255

2255:                                             ; preds = %2254, %2245
  %.pn729.pn.pn = phi { ptr, i32 } [ %.pn729.pn, %2254 ], [ %2246, %2245 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %438) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %435) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %435) #7
  br label %3131

2256:                                             ; preds = %2233, %2244
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %435) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %435) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %441) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %442) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %443) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %443, ptr noundef nonnull @.str.168)
  %2257 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %443)
  %2258 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2257)
  %2259 = xor i1 %2258, true
  %2260 = zext i1 %2259 to i8
  store i8 %2260, ptr %442, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %441, ptr noundef nonnull align 1 dereferenceable(1) %442, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %443) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %442) #7
  %2261 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %441)
  br i1 %2261, label %2279, label %2262

2262:                                             ; preds = %2256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %444) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444)
          to label %2263 unwind label %2268

2263:                                             ; preds = %2262
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %445) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %446) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %446, ptr noundef nonnull align 8 dereferenceable(16) %441, ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2264 unwind label %2270

2264:                                             ; preds = %2263
  %2265 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %446) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %445, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 164, ptr noundef %2265)
          to label %2266 unwind label %2272

2266:                                             ; preds = %2264
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull align 8 dereferenceable(8) %444)
          to label %2267 unwind label %2274

2267:                                             ; preds = %2266
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %446) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %446) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %445) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %444) #7
  br label %2279

2268:                                             ; preds = %2262
  %2269 = landingpad { ptr, i32 }
          cleanup
  br label %2278

2270:                                             ; preds = %2263
  %2271 = landingpad { ptr, i32 }
          cleanup
  br label %2277

2272:                                             ; preds = %2264
  %2273 = landingpad { ptr, i32 }
          cleanup
  br label %2276

2274:                                             ; preds = %2266
  %2275 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %445) #7
  br label %2276

2276:                                             ; preds = %2274, %2272
  %.pn733 = phi { ptr, i32 } [ %2275, %2274 ], [ %2273, %2272 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %446) #7
  br label %2277

2277:                                             ; preds = %2276, %2270
  %.pn733.pn = phi { ptr, i32 } [ %.pn733, %2276 ], [ %2271, %2270 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %446) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %445) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #7
  br label %2278

2278:                                             ; preds = %2277, %2268
  %.pn733.pn.pn = phi { ptr, i32 } [ %.pn733.pn, %2277 ], [ %2269, %2268 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %444) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %441) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %441) #7
  br label %3131

2279:                                             ; preds = %2256, %2267
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %441) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %441) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %447) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %448) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %449) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %449, ptr noundef nonnull @.str.172)
  %2280 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %449)
  %2281 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2280)
  %2282 = xor i1 %2281, true
  %2283 = zext i1 %2282 to i8
  store i8 %2283, ptr %448, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %447, ptr noundef nonnull align 1 dereferenceable(1) %448, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %449) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %448) #7
  %2284 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %447)
  br i1 %2284, label %2302, label %2285

2285:                                             ; preds = %2279
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %450) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %450)
          to label %2286 unwind label %2291

2286:                                             ; preds = %2285
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %451) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %452) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %452, ptr noundef nonnull align 8 dereferenceable(16) %447, ptr noundef nonnull @.str.173, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2287 unwind label %2293

2287:                                             ; preds = %2286
  %2288 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %452) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %451, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 167, ptr noundef %2288)
          to label %2289 unwind label %2295

2289:                                             ; preds = %2287
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull align 8 dereferenceable(8) %450)
          to label %2290 unwind label %2297

2290:                                             ; preds = %2289
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %451) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %452) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %451) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %450) #7
  br label %2302

2291:                                             ; preds = %2285
  %2292 = landingpad { ptr, i32 }
          cleanup
  br label %2301

2293:                                             ; preds = %2286
  %2294 = landingpad { ptr, i32 }
          cleanup
  br label %2300

2295:                                             ; preds = %2287
  %2296 = landingpad { ptr, i32 }
          cleanup
  br label %2299

2297:                                             ; preds = %2289
  %2298 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %451) #7
  br label %2299

2299:                                             ; preds = %2297, %2295
  %.pn737 = phi { ptr, i32 } [ %2298, %2297 ], [ %2296, %2295 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %452) #7
  br label %2300

2300:                                             ; preds = %2299, %2293
  %.pn737.pn = phi { ptr, i32 } [ %.pn737, %2299 ], [ %2294, %2293 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %452) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %451) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #7
  br label %2301

2301:                                             ; preds = %2300, %2291
  %.pn737.pn.pn = phi { ptr, i32 } [ %.pn737.pn, %2300 ], [ %2292, %2291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %450) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %447) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %447) #7
  br label %3131

2302:                                             ; preds = %2279, %2290
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %447) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %447) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %453) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %454) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %455) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %455, ptr noundef nonnull @.str.172)
  %2303 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %455)
  %2304 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2303)
  %2305 = zext i1 %2304 to i8
  store i8 %2305, ptr %454, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %453, ptr noundef nonnull align 1 dereferenceable(1) %454, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %455) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %454) #7
  %2306 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %453)
  br i1 %2306, label %2324, label %2307

2307:                                             ; preds = %2302
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %456) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %456)
          to label %2308 unwind label %2313

2308:                                             ; preds = %2307
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %457) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %458) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %458, ptr noundef nonnull align 8 dereferenceable(16) %453, ptr noundef nonnull @.str.174, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2309 unwind label %2315

2309:                                             ; preds = %2308
  %2310 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %458) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %457, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 168, ptr noundef %2310)
          to label %2311 unwind label %2317

2311:                                             ; preds = %2309
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef nonnull align 8 dereferenceable(8) %456)
          to label %2312 unwind label %2319

2312:                                             ; preds = %2311
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %458) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %458) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %457) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %456) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %456) #7
  br label %2324

2313:                                             ; preds = %2307
  %2314 = landingpad { ptr, i32 }
          cleanup
  br label %2323

2315:                                             ; preds = %2308
  %2316 = landingpad { ptr, i32 }
          cleanup
  br label %2322

2317:                                             ; preds = %2309
  %2318 = landingpad { ptr, i32 }
          cleanup
  br label %2321

2319:                                             ; preds = %2311
  %2320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %457) #7
  br label %2321

2321:                                             ; preds = %2319, %2317
  %.pn741 = phi { ptr, i32 } [ %2320, %2319 ], [ %2318, %2317 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %458) #7
  br label %2322

2322:                                             ; preds = %2321, %2315
  %.pn741.pn = phi { ptr, i32 } [ %.pn741, %2321 ], [ %2316, %2315 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %458) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %457) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %456) #7
  br label %2323

2323:                                             ; preds = %2322, %2313
  %.pn741.pn.pn = phi { ptr, i32 } [ %.pn741.pn, %2322 ], [ %2314, %2313 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %456) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %453) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %453) #7
  br label %3131

2324:                                             ; preds = %2302, %2312
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %453) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %453) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %459) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %460) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %461) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %461, ptr noundef nonnull @.str.172)
  %2325 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %461)
  %2326 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2325)
  %2327 = xor i1 %2326, true
  %2328 = zext i1 %2327 to i8
  store i8 %2328, ptr %460, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %459, ptr noundef nonnull align 1 dereferenceable(1) %460, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %461) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %460) #7
  %2329 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %459)
  br i1 %2329, label %2347, label %2330

2330:                                             ; preds = %2324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %462) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %462)
          to label %2331 unwind label %2336

2331:                                             ; preds = %2330
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %463) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %464) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %464, ptr noundef nonnull align 8 dereferenceable(16) %459, ptr noundef nonnull @.str.175, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2332 unwind label %2338

2332:                                             ; preds = %2331
  %2333 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %464) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %463, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 169, ptr noundef %2333)
          to label %2334 unwind label %2340

2334:                                             ; preds = %2332
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(8) %462)
          to label %2335 unwind label %2342

2335:                                             ; preds = %2334
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %463) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %464) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %464) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %463) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %462) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %462) #7
  br label %2347

2336:                                             ; preds = %2330
  %2337 = landingpad { ptr, i32 }
          cleanup
  br label %2346

2338:                                             ; preds = %2331
  %2339 = landingpad { ptr, i32 }
          cleanup
  br label %2345

2340:                                             ; preds = %2332
  %2341 = landingpad { ptr, i32 }
          cleanup
  br label %2344

2342:                                             ; preds = %2334
  %2343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %463) #7
  br label %2344

2344:                                             ; preds = %2342, %2340
  %.pn745 = phi { ptr, i32 } [ %2343, %2342 ], [ %2341, %2340 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %464) #7
  br label %2345

2345:                                             ; preds = %2344, %2338
  %.pn745.pn = phi { ptr, i32 } [ %.pn745, %2344 ], [ %2339, %2338 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %464) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %463) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %462) #7
  br label %2346

2346:                                             ; preds = %2345, %2336
  %.pn745.pn.pn = phi { ptr, i32 } [ %.pn745.pn, %2345 ], [ %2337, %2336 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %462) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %459) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %459) #7
  br label %3131

2347:                                             ; preds = %2324, %2335
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %459) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %459) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %465) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %466) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %467) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %467, ptr noundef nonnull @.str.176)
  %2348 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %467)
  %2349 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2348)
  %2350 = xor i1 %2349, true
  %2351 = zext i1 %2350 to i8
  store i8 %2351, ptr %466, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %465, ptr noundef nonnull align 1 dereferenceable(1) %466, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %467) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %466) #7
  %2352 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %465)
  br i1 %2352, label %2370, label %2353

2353:                                             ; preds = %2347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %468) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %2354 unwind label %2359

2354:                                             ; preds = %2353
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %469) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %470) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %470, ptr noundef nonnull align 8 dereferenceable(16) %465, ptr noundef nonnull @.str.177, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2355 unwind label %2361

2355:                                             ; preds = %2354
  %2356 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %470) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %469, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 171, ptr noundef %2356)
          to label %2357 unwind label %2363

2357:                                             ; preds = %2355
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %2358 unwind label %2365

2358:                                             ; preds = %2357
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %469) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %470) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %470) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %469) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %468) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %468) #7
  br label %2370

2359:                                             ; preds = %2353
  %2360 = landingpad { ptr, i32 }
          cleanup
  br label %2369

2361:                                             ; preds = %2354
  %2362 = landingpad { ptr, i32 }
          cleanup
  br label %2368

2363:                                             ; preds = %2355
  %2364 = landingpad { ptr, i32 }
          cleanup
  br label %2367

2365:                                             ; preds = %2357
  %2366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %469) #7
  br label %2367

2367:                                             ; preds = %2365, %2363
  %.pn749 = phi { ptr, i32 } [ %2366, %2365 ], [ %2364, %2363 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %470) #7
  br label %2368

2368:                                             ; preds = %2367, %2361
  %.pn749.pn = phi { ptr, i32 } [ %.pn749, %2367 ], [ %2362, %2361 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %470) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %469) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %468) #7
  br label %2369

2369:                                             ; preds = %2368, %2359
  %.pn749.pn.pn = phi { ptr, i32 } [ %.pn749.pn, %2368 ], [ %2360, %2359 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %468) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %465) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %465) #7
  br label %3131

2370:                                             ; preds = %2347, %2358
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %465) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %465) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %471) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %472) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %473) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %473, ptr noundef nonnull @.str.176)
  %2371 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %473)
  %2372 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2371)
  %2373 = zext i1 %2372 to i8
  store i8 %2373, ptr %472, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %471, ptr noundef nonnull align 1 dereferenceable(1) %472, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %473) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %472) #7
  %2374 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %471)
  br i1 %2374, label %2392, label %2375

2375:                                             ; preds = %2370
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %474) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %474)
          to label %2376 unwind label %2381

2376:                                             ; preds = %2375
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %475) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %476) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %476, ptr noundef nonnull align 8 dereferenceable(16) %471, ptr noundef nonnull @.str.178, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2377 unwind label %2383

2377:                                             ; preds = %2376
  %2378 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %476) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %475, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 172, ptr noundef %2378)
          to label %2379 unwind label %2385

2379:                                             ; preds = %2377
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) %474)
          to label %2380 unwind label %2387

2380:                                             ; preds = %2379
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %476) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %476) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %475) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %474) #7
  br label %2392

2381:                                             ; preds = %2375
  %2382 = landingpad { ptr, i32 }
          cleanup
  br label %2391

2383:                                             ; preds = %2376
  %2384 = landingpad { ptr, i32 }
          cleanup
  br label %2390

2385:                                             ; preds = %2377
  %2386 = landingpad { ptr, i32 }
          cleanup
  br label %2389

2387:                                             ; preds = %2379
  %2388 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #7
  br label %2389

2389:                                             ; preds = %2387, %2385
  %.pn753 = phi { ptr, i32 } [ %2388, %2387 ], [ %2386, %2385 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %476) #7
  br label %2390

2390:                                             ; preds = %2389, %2383
  %.pn753.pn = phi { ptr, i32 } [ %.pn753, %2389 ], [ %2384, %2383 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %476) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %475) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #7
  br label %2391

2391:                                             ; preds = %2390, %2381
  %.pn753.pn.pn = phi { ptr, i32 } [ %.pn753.pn, %2390 ], [ %2382, %2381 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %474) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %471) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %471) #7
  br label %3131

2392:                                             ; preds = %2370, %2380
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %471) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %471) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %477) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %478) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %479) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %479, ptr noundef nonnull @.str.176)
  %2393 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %479)
  %2394 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2393)
  %2395 = xor i1 %2394, true
  %2396 = zext i1 %2395 to i8
  store i8 %2396, ptr %478, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %477, ptr noundef nonnull align 1 dereferenceable(1) %478, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %479) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %478) #7
  %2397 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %477)
  br i1 %2397, label %2415, label %2398

2398:                                             ; preds = %2392
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %480) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %2399 unwind label %2404

2399:                                             ; preds = %2398
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %481) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %482) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %482, ptr noundef nonnull align 8 dereferenceable(16) %477, ptr noundef nonnull @.str.179, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2400 unwind label %2406

2400:                                             ; preds = %2399
  %2401 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %482) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %481, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 173, ptr noundef %2401)
          to label %2402 unwind label %2408

2402:                                             ; preds = %2400
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %481, ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %2403 unwind label %2410

2403:                                             ; preds = %2402
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %482) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %481) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %480) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %480) #7
  br label %2415

2404:                                             ; preds = %2398
  %2405 = landingpad { ptr, i32 }
          cleanup
  br label %2414

2406:                                             ; preds = %2399
  %2407 = landingpad { ptr, i32 }
          cleanup
  br label %2413

2408:                                             ; preds = %2400
  %2409 = landingpad { ptr, i32 }
          cleanup
  br label %2412

2410:                                             ; preds = %2402
  %2411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #7
  br label %2412

2412:                                             ; preds = %2410, %2408
  %.pn757 = phi { ptr, i32 } [ %2411, %2410 ], [ %2409, %2408 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #7
  br label %2413

2413:                                             ; preds = %2412, %2406
  %.pn757.pn = phi { ptr, i32 } [ %.pn757, %2412 ], [ %2407, %2406 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %482) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %481) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %480) #7
  br label %2414

2414:                                             ; preds = %2413, %2404
  %.pn757.pn.pn = phi { ptr, i32 } [ %.pn757.pn, %2413 ], [ %2405, %2404 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %480) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %477) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %477) #7
  br label %3131

2415:                                             ; preds = %2392, %2403
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %477) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %477) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %483) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %484) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %485) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %485, ptr noundef nonnull @.str.180)
  %2416 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %485)
  %2417 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2416)
  %2418 = xor i1 %2417, true
  %2419 = zext i1 %2418 to i8
  store i8 %2419, ptr %484, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %483, ptr noundef nonnull align 1 dereferenceable(1) %484, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %485) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %484) #7
  %2420 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %483)
  br i1 %2420, label %2438, label %2421

2421:                                             ; preds = %2415
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %486) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %486)
          to label %2422 unwind label %2427

2422:                                             ; preds = %2421
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %487) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %488) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %488, ptr noundef nonnull align 8 dereferenceable(16) %483, ptr noundef nonnull @.str.181, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2423 unwind label %2429

2423:                                             ; preds = %2422
  %2424 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %488) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %487, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 175, ptr noundef %2424)
          to label %2425 unwind label %2431

2425:                                             ; preds = %2423
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef nonnull align 8 dereferenceable(8) %486)
          to label %2426 unwind label %2433

2426:                                             ; preds = %2425
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %487) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %488) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %488) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %487) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %486) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %486) #7
  br label %2438

2427:                                             ; preds = %2421
  %2428 = landingpad { ptr, i32 }
          cleanup
  br label %2437

2429:                                             ; preds = %2422
  %2430 = landingpad { ptr, i32 }
          cleanup
  br label %2436

2431:                                             ; preds = %2423
  %2432 = landingpad { ptr, i32 }
          cleanup
  br label %2435

2433:                                             ; preds = %2425
  %2434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %487) #7
  br label %2435

2435:                                             ; preds = %2433, %2431
  %.pn761 = phi { ptr, i32 } [ %2434, %2433 ], [ %2432, %2431 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %488) #7
  br label %2436

2436:                                             ; preds = %2435, %2429
  %.pn761.pn = phi { ptr, i32 } [ %.pn761, %2435 ], [ %2430, %2429 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %488) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %487) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %486) #7
  br label %2437

2437:                                             ; preds = %2436, %2427
  %.pn761.pn.pn = phi { ptr, i32 } [ %.pn761.pn, %2436 ], [ %2428, %2427 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %486) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %483) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %483) #7
  br label %3131

2438:                                             ; preds = %2415, %2426
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %483) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %483) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %489) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %490) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %491) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %491, ptr noundef nonnull @.str.180)
  %2439 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %491)
  %2440 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2439)
  %2441 = zext i1 %2440 to i8
  store i8 %2441, ptr %490, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %489, ptr noundef nonnull align 1 dereferenceable(1) %490, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %491) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %490) #7
  %2442 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %489)
  br i1 %2442, label %2460, label %2443

2443:                                             ; preds = %2438
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %492) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %2444 unwind label %2449

2444:                                             ; preds = %2443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %493) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %494) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %494, ptr noundef nonnull align 8 dereferenceable(16) %489, ptr noundef nonnull @.str.182, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2445 unwind label %2451

2445:                                             ; preds = %2444
  %2446 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %494) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %493, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 176, ptr noundef %2446)
          to label %2447 unwind label %2453

2447:                                             ; preds = %2445
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %493, ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %2448 unwind label %2455

2448:                                             ; preds = %2447
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %493) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %494) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %493) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %492) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %492) #7
  br label %2460

2449:                                             ; preds = %2443
  %2450 = landingpad { ptr, i32 }
          cleanup
  br label %2459

2451:                                             ; preds = %2444
  %2452 = landingpad { ptr, i32 }
          cleanup
  br label %2458

2453:                                             ; preds = %2445
  %2454 = landingpad { ptr, i32 }
          cleanup
  br label %2457

2455:                                             ; preds = %2447
  %2456 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %493) #7
  br label %2457

2457:                                             ; preds = %2455, %2453
  %.pn765 = phi { ptr, i32 } [ %2456, %2455 ], [ %2454, %2453 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #7
  br label %2458

2458:                                             ; preds = %2457, %2451
  %.pn765.pn = phi { ptr, i32 } [ %.pn765, %2457 ], [ %2452, %2451 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %494) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %493) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %492) #7
  br label %2459

2459:                                             ; preds = %2458, %2449
  %.pn765.pn.pn = phi { ptr, i32 } [ %.pn765.pn, %2458 ], [ %2450, %2449 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %492) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %489) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %489) #7
  br label %3131

2460:                                             ; preds = %2438, %2448
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %489) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %489) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %495) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %496) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %497) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %497, ptr noundef nonnull @.str.180)
  %2461 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %497)
  %2462 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2461)
  %2463 = xor i1 %2462, true
  %2464 = zext i1 %2463 to i8
  store i8 %2464, ptr %496, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %495, ptr noundef nonnull align 1 dereferenceable(1) %496, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %497) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %496) #7
  %2465 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %495)
  br i1 %2465, label %2483, label %2466

2466:                                             ; preds = %2460
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %498) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %498)
          to label %2467 unwind label %2472

2467:                                             ; preds = %2466
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %499) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %500) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %500, ptr noundef nonnull align 8 dereferenceable(16) %495, ptr noundef nonnull @.str.183, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2468 unwind label %2474

2468:                                             ; preds = %2467
  %2469 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %500) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %499, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 177, ptr noundef %2469)
          to label %2470 unwind label %2476

2470:                                             ; preds = %2468
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef nonnull align 8 dereferenceable(8) %498)
          to label %2471 unwind label %2478

2471:                                             ; preds = %2470
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %499) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %500) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %499) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %498) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %498) #7
  br label %2483

2472:                                             ; preds = %2466
  %2473 = landingpad { ptr, i32 }
          cleanup
  br label %2482

2474:                                             ; preds = %2467
  %2475 = landingpad { ptr, i32 }
          cleanup
  br label %2481

2476:                                             ; preds = %2468
  %2477 = landingpad { ptr, i32 }
          cleanup
  br label %2480

2478:                                             ; preds = %2470
  %2479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %499) #7
  br label %2480

2480:                                             ; preds = %2478, %2476
  %.pn769 = phi { ptr, i32 } [ %2479, %2478 ], [ %2477, %2476 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %500) #7
  br label %2481

2481:                                             ; preds = %2480, %2474
  %.pn769.pn = phi { ptr, i32 } [ %.pn769, %2480 ], [ %2475, %2474 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %500) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %499) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %498) #7
  br label %2482

2482:                                             ; preds = %2481, %2472
  %.pn769.pn.pn = phi { ptr, i32 } [ %.pn769.pn, %2481 ], [ %2473, %2472 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %498) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %495) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %495) #7
  br label %3131

2483:                                             ; preds = %2460, %2471
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %495) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %495) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %501) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %502) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %503) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %503, ptr noundef nonnull @.str.123)
  %2484 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %503)
  %2485 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2484)
  %2486 = xor i1 %2485, true
  %2487 = zext i1 %2486 to i8
  store i8 %2487, ptr %502, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %501, ptr noundef nonnull align 1 dereferenceable(1) %502, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %503) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %502) #7
  %2488 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %501)
  br i1 %2488, label %2506, label %2489

2489:                                             ; preds = %2483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %504) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %2490 unwind label %2495

2490:                                             ; preds = %2489
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %505) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %506) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %506, ptr noundef nonnull align 8 dereferenceable(16) %501, ptr noundef nonnull @.str.184, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2491 unwind label %2497

2491:                                             ; preds = %2490
  %2492 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %506) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %505, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 180, ptr noundef %2492)
          to label %2493 unwind label %2499

2493:                                             ; preds = %2491
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %2494 unwind label %2501

2494:                                             ; preds = %2493
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %506) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %506) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %505) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %504) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %504) #7
  br label %2506

2495:                                             ; preds = %2489
  %2496 = landingpad { ptr, i32 }
          cleanup
  br label %2505

2497:                                             ; preds = %2490
  %2498 = landingpad { ptr, i32 }
          cleanup
  br label %2504

2499:                                             ; preds = %2491
  %2500 = landingpad { ptr, i32 }
          cleanup
  br label %2503

2501:                                             ; preds = %2493
  %2502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %505) #7
  br label %2503

2503:                                             ; preds = %2501, %2499
  %.pn773 = phi { ptr, i32 } [ %2502, %2501 ], [ %2500, %2499 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %506) #7
  br label %2504

2504:                                             ; preds = %2503, %2497
  %.pn773.pn = phi { ptr, i32 } [ %.pn773, %2503 ], [ %2498, %2497 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %506) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %505) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %504) #7
  br label %2505

2505:                                             ; preds = %2504, %2495
  %.pn773.pn.pn = phi { ptr, i32 } [ %.pn773.pn, %2504 ], [ %2496, %2495 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %504) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %501) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %501) #7
  br label %3131

2506:                                             ; preds = %2483, %2494
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %501) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %501) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %507) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %508) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %509) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %509, ptr noundef nonnull @.str.123)
  %2507 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %509)
  %2508 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2507)
  %2509 = xor i1 %2508, true
  %2510 = zext i1 %2509 to i8
  store i8 %2510, ptr %508, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %507, ptr noundef nonnull align 1 dereferenceable(1) %508, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %509) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %508) #7
  %2511 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %507)
  br i1 %2511, label %2529, label %2512

2512:                                             ; preds = %2506
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %510) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %510)
          to label %2513 unwind label %2518

2513:                                             ; preds = %2512
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %511) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %512) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %512, ptr noundef nonnull align 8 dereferenceable(16) %507, ptr noundef nonnull @.str.185, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2514 unwind label %2520

2514:                                             ; preds = %2513
  %2515 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %512) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %511, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 181, ptr noundef %2515)
          to label %2516 unwind label %2522

2516:                                             ; preds = %2514
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %511, ptr noundef nonnull align 8 dereferenceable(8) %510)
          to label %2517 unwind label %2524

2517:                                             ; preds = %2516
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %512) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %511) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %510) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %510) #7
  br label %2529

2518:                                             ; preds = %2512
  %2519 = landingpad { ptr, i32 }
          cleanup
  br label %2528

2520:                                             ; preds = %2513
  %2521 = landingpad { ptr, i32 }
          cleanup
  br label %2527

2522:                                             ; preds = %2514
  %2523 = landingpad { ptr, i32 }
          cleanup
  br label %2526

2524:                                             ; preds = %2516
  %2525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %511) #7
  br label %2526

2526:                                             ; preds = %2524, %2522
  %.pn777 = phi { ptr, i32 } [ %2525, %2524 ], [ %2523, %2522 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %512) #7
  br label %2527

2527:                                             ; preds = %2526, %2520
  %.pn777.pn = phi { ptr, i32 } [ %.pn777, %2526 ], [ %2521, %2520 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %512) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %511) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %510) #7
  br label %2528

2528:                                             ; preds = %2527, %2518
  %.pn777.pn.pn = phi { ptr, i32 } [ %.pn777.pn, %2527 ], [ %2519, %2518 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %510) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %507) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %507) #7
  br label %3131

2529:                                             ; preds = %2506, %2517
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %507) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %507) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %513) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %514) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %515) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %515, ptr noundef nonnull @.str.123)
  %2530 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %515)
  %2531 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2530)
  %2532 = zext i1 %2531 to i8
  store i8 %2532, ptr %514, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %513, ptr noundef nonnull align 1 dereferenceable(1) %514, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %515) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %514) #7
  %2533 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
  br i1 %2533, label %2551, label %2534

2534:                                             ; preds = %2529
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %516) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %2535 unwind label %2540

2535:                                             ; preds = %2534
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %517) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %518) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %518, ptr noundef nonnull align 8 dereferenceable(16) %513, ptr noundef nonnull @.str.186, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2536 unwind label %2542

2536:                                             ; preds = %2535
  %2537 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %518) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %517, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 182, ptr noundef %2537)
          to label %2538 unwind label %2544

2538:                                             ; preds = %2536
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull align 8 dereferenceable(8) %516)
          to label %2539 unwind label %2546

2539:                                             ; preds = %2538
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %518) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %518) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %517) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %516) #7
  br label %2551

2540:                                             ; preds = %2534
  %2541 = landingpad { ptr, i32 }
          cleanup
  br label %2550

2542:                                             ; preds = %2535
  %2543 = landingpad { ptr, i32 }
          cleanup
  br label %2549

2544:                                             ; preds = %2536
  %2545 = landingpad { ptr, i32 }
          cleanup
  br label %2548

2546:                                             ; preds = %2538
  %2547 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %517) #7
  br label %2548

2548:                                             ; preds = %2546, %2544
  %.pn781 = phi { ptr, i32 } [ %2547, %2546 ], [ %2545, %2544 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %518) #7
  br label %2549

2549:                                             ; preds = %2548, %2542
  %.pn781.pn = phi { ptr, i32 } [ %.pn781, %2548 ], [ %2543, %2542 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %518) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %517) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %516) #7
  br label %2550

2550:                                             ; preds = %2549, %2540
  %.pn781.pn.pn = phi { ptr, i32 } [ %.pn781.pn, %2549 ], [ %2541, %2540 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %516) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %513) #7
  br label %3131

2551:                                             ; preds = %2529, %2539
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %513) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %513) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %519) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %520) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %521) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %521, ptr noundef nonnull @.str.90)
  %2552 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %521)
  %2553 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2552)
  %2554 = xor i1 %2553, true
  %2555 = zext i1 %2554 to i8
  store i8 %2555, ptr %520, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %519, ptr noundef nonnull align 1 dereferenceable(1) %520, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %521) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %520) #7
  %2556 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %519)
  br i1 %2556, label %2574, label %2557

2557:                                             ; preds = %2551
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %522) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %522)
          to label %2558 unwind label %2563

2558:                                             ; preds = %2557
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %523) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %524) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %524, ptr noundef nonnull align 8 dereferenceable(16) %519, ptr noundef nonnull @.str.187, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2559 unwind label %2565

2559:                                             ; preds = %2558
  %2560 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %524) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %523, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 184, ptr noundef %2560)
          to label %2561 unwind label %2567

2561:                                             ; preds = %2559
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 8 dereferenceable(8) %522)
          to label %2562 unwind label %2569

2562:                                             ; preds = %2561
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %523) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %524) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %524) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %523) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #7
  br label %2574

2563:                                             ; preds = %2557
  %2564 = landingpad { ptr, i32 }
          cleanup
  br label %2573

2565:                                             ; preds = %2558
  %2566 = landingpad { ptr, i32 }
          cleanup
  br label %2572

2567:                                             ; preds = %2559
  %2568 = landingpad { ptr, i32 }
          cleanup
  br label %2571

2569:                                             ; preds = %2561
  %2570 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %523) #7
  br label %2571

2571:                                             ; preds = %2569, %2567
  %.pn785 = phi { ptr, i32 } [ %2570, %2569 ], [ %2568, %2567 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %524) #7
  br label %2572

2572:                                             ; preds = %2571, %2565
  %.pn785.pn = phi { ptr, i32 } [ %.pn785, %2571 ], [ %2566, %2565 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %524) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %523) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #7
  br label %2573

2573:                                             ; preds = %2572, %2563
  %.pn785.pn.pn = phi { ptr, i32 } [ %.pn785.pn, %2572 ], [ %2564, %2563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %522) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %519) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %519) #7
  br label %3131

2574:                                             ; preds = %2551, %2562
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %519) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %519) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %525) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %526) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %527) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %527, ptr noundef nonnull @.str.90)
  %2575 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %527)
  %2576 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2575)
  %2577 = xor i1 %2576, true
  %2578 = zext i1 %2577 to i8
  store i8 %2578, ptr %526, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %525, ptr noundef nonnull align 1 dereferenceable(1) %526, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %527) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %526) #7
  %2579 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %525)
  br i1 %2579, label %2597, label %2580

2580:                                             ; preds = %2574
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %528) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %528)
          to label %2581 unwind label %2586

2581:                                             ; preds = %2580
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %529) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %530) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %530, ptr noundef nonnull align 8 dereferenceable(16) %525, ptr noundef nonnull @.str.188, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2582 unwind label %2588

2582:                                             ; preds = %2581
  %2583 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %530) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %529, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 185, ptr noundef %2583)
          to label %2584 unwind label %2590

2584:                                             ; preds = %2582
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef nonnull align 8 dereferenceable(8) %528)
          to label %2585 unwind label %2592

2585:                                             ; preds = %2584
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %529) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %530) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %530) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %529) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %528) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %528) #7
  br label %2597

2586:                                             ; preds = %2580
  %2587 = landingpad { ptr, i32 }
          cleanup
  br label %2596

2588:                                             ; preds = %2581
  %2589 = landingpad { ptr, i32 }
          cleanup
  br label %2595

2590:                                             ; preds = %2582
  %2591 = landingpad { ptr, i32 }
          cleanup
  br label %2594

2592:                                             ; preds = %2584
  %2593 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %529) #7
  br label %2594

2594:                                             ; preds = %2592, %2590
  %.pn789 = phi { ptr, i32 } [ %2593, %2592 ], [ %2591, %2590 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %530) #7
  br label %2595

2595:                                             ; preds = %2594, %2588
  %.pn789.pn = phi { ptr, i32 } [ %.pn789, %2594 ], [ %2589, %2588 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %530) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %529) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %528) #7
  br label %2596

2596:                                             ; preds = %2595, %2586
  %.pn789.pn.pn = phi { ptr, i32 } [ %.pn789.pn, %2595 ], [ %2587, %2586 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %528) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %525) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %525) #7
  br label %3131

2597:                                             ; preds = %2574, %2585
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %525) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %525) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %531) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %532) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %533) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %533, ptr noundef nonnull @.str.90)
  %2598 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %533)
  %2599 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2598)
  %2600 = zext i1 %2599 to i8
  store i8 %2600, ptr %532, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %531, ptr noundef nonnull align 1 dereferenceable(1) %532, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %533) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %532) #7
  %2601 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %531)
  br i1 %2601, label %2619, label %2602

2602:                                             ; preds = %2597
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %534) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %534)
          to label %2603 unwind label %2608

2603:                                             ; preds = %2602
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %535) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %536) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %536, ptr noundef nonnull align 8 dereferenceable(16) %531, ptr noundef nonnull @.str.189, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2604 unwind label %2610

2604:                                             ; preds = %2603
  %2605 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %536) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %535, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 186, ptr noundef %2605)
          to label %2606 unwind label %2612

2606:                                             ; preds = %2604
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %535, ptr noundef nonnull align 8 dereferenceable(8) %534)
          to label %2607 unwind label %2614

2607:                                             ; preds = %2606
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %535) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %536) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %536) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %535) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %534) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %534) #7
  br label %2619

2608:                                             ; preds = %2602
  %2609 = landingpad { ptr, i32 }
          cleanup
  br label %2618

2610:                                             ; preds = %2603
  %2611 = landingpad { ptr, i32 }
          cleanup
  br label %2617

2612:                                             ; preds = %2604
  %2613 = landingpad { ptr, i32 }
          cleanup
  br label %2616

2614:                                             ; preds = %2606
  %2615 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %535) #7
  br label %2616

2616:                                             ; preds = %2614, %2612
  %.pn793 = phi { ptr, i32 } [ %2615, %2614 ], [ %2613, %2612 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %536) #7
  br label %2617

2617:                                             ; preds = %2616, %2610
  %.pn793.pn = phi { ptr, i32 } [ %.pn793, %2616 ], [ %2611, %2610 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %536) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %535) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %534) #7
  br label %2618

2618:                                             ; preds = %2617, %2608
  %.pn793.pn.pn = phi { ptr, i32 } [ %.pn793.pn, %2617 ], [ %2609, %2608 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %534) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %531) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %531) #7
  br label %3131

2619:                                             ; preds = %2597, %2607
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %531) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %531) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %537) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %538) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %539) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %539, ptr noundef nonnull @.str.190)
  %2620 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %539)
  %2621 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8) %2620)
  %2622 = xor i1 %2621, true
  %2623 = zext i1 %2622 to i8
  store i8 %2623, ptr %538, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %537, ptr noundef nonnull align 1 dereferenceable(1) %538, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %539) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %538) #7
  %2624 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %537)
  br i1 %2624, label %2642, label %2625

2625:                                             ; preds = %2619
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %540) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %540)
          to label %2626 unwind label %2631

2626:                                             ; preds = %2625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %541) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %542) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %542, ptr noundef nonnull align 8 dereferenceable(16) %537, ptr noundef nonnull @.str.191, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2627 unwind label %2633

2627:                                             ; preds = %2626
  %2628 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %542) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %541, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 188, ptr noundef %2628)
          to label %2629 unwind label %2635

2629:                                             ; preds = %2627
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull align 8 dereferenceable(8) %540)
          to label %2630 unwind label %2637

2630:                                             ; preds = %2629
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %541) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %540) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %540) #7
  br label %2642

2631:                                             ; preds = %2625
  %2632 = landingpad { ptr, i32 }
          cleanup
  br label %2641

2633:                                             ; preds = %2626
  %2634 = landingpad { ptr, i32 }
          cleanup
  br label %2640

2635:                                             ; preds = %2627
  %2636 = landingpad { ptr, i32 }
          cleanup
  br label %2639

2637:                                             ; preds = %2629
  %2638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %541) #7
  br label %2639

2639:                                             ; preds = %2637, %2635
  %.pn797 = phi { ptr, i32 } [ %2638, %2637 ], [ %2636, %2635 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %542) #7
  br label %2640

2640:                                             ; preds = %2639, %2633
  %.pn797.pn = phi { ptr, i32 } [ %.pn797, %2639 ], [ %2634, %2633 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %542) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %541) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %540) #7
  br label %2641

2641:                                             ; preds = %2640, %2631
  %.pn797.pn.pn = phi { ptr, i32 } [ %.pn797.pn, %2640 ], [ %2632, %2631 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %540) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %537) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %537) #7
  br label %3131

2642:                                             ; preds = %2619, %2630
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %537) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %537) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %543) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %544) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %545) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %545, ptr noundef nonnull @.str.190)
  %2643 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %545)
  %2644 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8) %2643)
  %2645 = xor i1 %2644, true
  %2646 = zext i1 %2645 to i8
  store i8 %2646, ptr %544, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %543, ptr noundef nonnull align 1 dereferenceable(1) %544, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %545) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %544) #7
  %2647 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %543)
  br i1 %2647, label %2665, label %2648

2648:                                             ; preds = %2642
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %546) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %2649 unwind label %2654

2649:                                             ; preds = %2648
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %547) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %548) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %548, ptr noundef nonnull align 8 dereferenceable(16) %543, ptr noundef nonnull @.str.192, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.14)
          to label %2650 unwind label %2656

2650:                                             ; preds = %2649
  %2651 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %548) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %547, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 189, ptr noundef %2651)
          to label %2652 unwind label %2658

2652:                                             ; preds = %2650
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %2653 unwind label %2660

2653:                                             ; preds = %2652
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %548) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %548) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %547) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #7
  br label %2665

2654:                                             ; preds = %2648
  %2655 = landingpad { ptr, i32 }
          cleanup
  br label %2664

2656:                                             ; preds = %2649
  %2657 = landingpad { ptr, i32 }
          cleanup
  br label %2663

2658:                                             ; preds = %2650
  %2659 = landingpad { ptr, i32 }
          cleanup
  br label %2662

2660:                                             ; preds = %2652
  %2661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %547) #7
  br label %2662

2662:                                             ; preds = %2660, %2658
  %.pn801 = phi { ptr, i32 } [ %2661, %2660 ], [ %2659, %2658 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %548) #7
  br label %2663

2663:                                             ; preds = %2662, %2656
  %.pn801.pn = phi { ptr, i32 } [ %.pn801, %2662 ], [ %2657, %2656 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %548) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %547) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %546) #7
  br label %2664

2664:                                             ; preds = %2663, %2654
  %.pn801.pn.pn = phi { ptr, i32 } [ %.pn801.pn, %2663 ], [ %2655, %2654 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %546) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %543) #7
  br label %3131

2665:                                             ; preds = %2642, %2653
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %543) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %543) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %549) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %550) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %551) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %551, ptr noundef nonnull @.str.190)
  %2666 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %551)
  %2667 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8) %2666)
  %2668 = zext i1 %2667 to i8
  store i8 %2668, ptr %550, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %549, ptr noundef nonnull align 1 dereferenceable(1) %550, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %551) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %550) #7
  %2669 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %549)
  br i1 %2669, label %2687, label %2670

2670:                                             ; preds = %2665
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %552) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %552)
          to label %2671 unwind label %2676

2671:                                             ; preds = %2670
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %553) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %554) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %554, ptr noundef nonnull align 8 dereferenceable(16) %549, ptr noundef nonnull @.str.193, 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) %554) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %553, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 190, ptr noundef %2673)
          to label %2674 unwind label %2680

2674:                                             ; preds = %2672
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %553, ptr noundef nonnull align 8 dereferenceable(8) %552)
          to label %2675 unwind label %2682

2675:                                             ; preds = %2674
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %553) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %554) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %554) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %553) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %552) #7
  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) %553) #7
  br label %2684

2684:                                             ; preds = %2682, %2680
  %.pn805 = phi { ptr, i32 } [ %2683, %2682 ], [ %2681, %2680 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %554) #7
  br label %2685

2685:                                             ; preds = %2684, %2678
  %.pn805.pn = phi { ptr, i32 } [ %.pn805, %2684 ], [ %2679, %2678 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %554) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %553) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %552) #7
  br label %2686

2686:                                             ; preds = %2685, %2676
  %.pn805.pn.pn = phi { ptr, i32 } [ %.pn805.pn, %2685 ], [ %2677, %2676 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %552) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %549) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %549) #7
  br label %3131

2687:                                             ; preds = %2665, %2675
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %549) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %549) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %555) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %556) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %557) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %557, ptr noundef nonnull @.str.133)
  %2688 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %557)
  %2689 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8) %2688)
  %2690 = zext i1 %2689 to i8
  store i8 %2690, ptr %556, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %555, ptr noundef nonnull align 1 dereferenceable(1) %556, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %557) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %556) #7
  %2691 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %555)
  br i1 %2691, label %2709, label %2692

2692:                                             ; preds = %2687
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %558) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %558)
          to label %2693 unwind label %2698

2693:                                             ; preds = %2692
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %559) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %560) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %560, ptr noundef nonnull align 8 dereferenceable(16) %555, ptr noundef nonnull @.str.194, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2694 unwind label %2700

2694:                                             ; preds = %2693
  %2695 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %560) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %559, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 193, ptr noundef %2695)
          to label %2696 unwind label %2702

2696:                                             ; preds = %2694
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %559, ptr noundef nonnull align 8 dereferenceable(8) %558)
          to label %2697 unwind label %2704

2697:                                             ; preds = %2696
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %559) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %560) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %560) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %559) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %558) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %558) #7
  br label %2709

2698:                                             ; preds = %2692
  %2699 = landingpad { ptr, i32 }
          cleanup
  br label %2708

2700:                                             ; preds = %2693
  %2701 = landingpad { ptr, i32 }
          cleanup
  br label %2707

2702:                                             ; preds = %2694
  %2703 = landingpad { ptr, i32 }
          cleanup
  br label %2706

2704:                                             ; preds = %2696
  %2705 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %559) #7
  br label %2706

2706:                                             ; preds = %2704, %2702
  %.pn809 = phi { ptr, i32 } [ %2705, %2704 ], [ %2703, %2702 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %560) #7
  br label %2707

2707:                                             ; preds = %2706, %2700
  %.pn809.pn = phi { ptr, i32 } [ %.pn809, %2706 ], [ %2701, %2700 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %560) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %559) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %558) #7
  br label %2708

2708:                                             ; preds = %2707, %2698
  %.pn809.pn.pn = phi { ptr, i32 } [ %.pn809.pn, %2707 ], [ %2699, %2698 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %558) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %555) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %555) #7
  br label %3131

2709:                                             ; preds = %2687, %2697
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %555) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %555) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %561) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %562) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %563) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %563, ptr noundef nonnull @.str.195)
  %2710 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %563)
  %2711 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8) %2710)
  %2712 = zext i1 %2711 to i8
  store i8 %2712, ptr %562, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %561, ptr noundef nonnull align 1 dereferenceable(1) %562, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %563) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %562) #7
  %2713 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %561)
  br i1 %2713, label %2731, label %2714

2714:                                             ; preds = %2709
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %564) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %564)
          to label %2715 unwind label %2720

2715:                                             ; preds = %2714
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %565) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %566) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %566, ptr noundef nonnull align 8 dereferenceable(16) %561, ptr noundef nonnull @.str.196, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2716 unwind label %2722

2716:                                             ; preds = %2715
  %2717 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %566) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %565, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 194, ptr noundef %2717)
          to label %2718 unwind label %2724

2718:                                             ; preds = %2716
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef nonnull align 8 dereferenceable(8) %564)
          to label %2719 unwind label %2726

2719:                                             ; preds = %2718
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %565) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %565) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %564) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %564) #7
  br label %2731

2720:                                             ; preds = %2714
  %2721 = landingpad { ptr, i32 }
          cleanup
  br label %2730

2722:                                             ; preds = %2715
  %2723 = landingpad { ptr, i32 }
          cleanup
  br label %2729

2724:                                             ; preds = %2716
  %2725 = landingpad { ptr, i32 }
          cleanup
  br label %2728

2726:                                             ; preds = %2718
  %2727 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %565) #7
  br label %2728

2728:                                             ; preds = %2726, %2724
  %.pn813 = phi { ptr, i32 } [ %2727, %2726 ], [ %2725, %2724 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #7
  br label %2729

2729:                                             ; preds = %2728, %2722
  %.pn813.pn = phi { ptr, i32 } [ %.pn813, %2728 ], [ %2723, %2722 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %566) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %565) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %564) #7
  br label %2730

2730:                                             ; preds = %2729, %2720
  %.pn813.pn.pn = phi { ptr, i32 } [ %.pn813.pn, %2729 ], [ %2721, %2720 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %564) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %561) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %561) #7
  br label %3131

2731:                                             ; preds = %2709, %2719
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %561) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %561) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %567) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %568) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %569) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %569, ptr noundef nonnull @.str.135)
  %2732 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %569)
  %2733 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8) %2732)
  %2734 = zext i1 %2733 to i8
  store i8 %2734, ptr %568, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %567, ptr noundef nonnull align 1 dereferenceable(1) %568, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %569) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %568) #7
  %2735 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %567)
  br i1 %2735, label %2753, label %2736

2736:                                             ; preds = %2731
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %570) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %570)
          to label %2737 unwind label %2742

2737:                                             ; preds = %2736
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %571) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %572) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %572, ptr noundef nonnull align 8 dereferenceable(16) %567, ptr noundef nonnull @.str.197, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2738 unwind label %2744

2738:                                             ; preds = %2737
  %2739 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %572) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %571, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 196, ptr noundef %2739)
          to label %2740 unwind label %2746

2740:                                             ; preds = %2738
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %571, ptr noundef nonnull align 8 dereferenceable(8) %570)
          to label %2741 unwind label %2748

2741:                                             ; preds = %2740
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %572) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %571) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %570) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %570) #7
  br label %2753

2742:                                             ; preds = %2736
  %2743 = landingpad { ptr, i32 }
          cleanup
  br label %2752

2744:                                             ; preds = %2737
  %2745 = landingpad { ptr, i32 }
          cleanup
  br label %2751

2746:                                             ; preds = %2738
  %2747 = landingpad { ptr, i32 }
          cleanup
  br label %2750

2748:                                             ; preds = %2740
  %2749 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #7
  br label %2750

2750:                                             ; preds = %2748, %2746
  %.pn817 = phi { ptr, i32 } [ %2749, %2748 ], [ %2747, %2746 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #7
  br label %2751

2751:                                             ; preds = %2750, %2744
  %.pn817.pn = phi { ptr, i32 } [ %.pn817, %2750 ], [ %2745, %2744 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %572) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %571) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %570) #7
  br label %2752

2752:                                             ; preds = %2751, %2742
  %.pn817.pn.pn = phi { ptr, i32 } [ %.pn817.pn, %2751 ], [ %2743, %2742 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %570) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %567) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %567) #7
  br label %3131

2753:                                             ; preds = %2731, %2741
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %567) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %567) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %573) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %574) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %575) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %575, ptr noundef nonnull @.str.198)
  %2754 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN4chen10ip_address2v4Ev(ptr noundef nonnull align 4 dereferenceable(28) %575)
  %2755 = call noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8) %2754)
  %2756 = zext i1 %2755 to i8
  store i8 %2756, ptr %574, align 1, !tbaa !10
  call void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %573, ptr noundef nonnull align 1 dereferenceable(1) %574, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %575) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %574) #7
  %2757 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %573)
  br i1 %2757, label %2775, label %2758

2758:                                             ; preds = %2753
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %576) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %2759 unwind label %2764

2759:                                             ; preds = %2758
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %577) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %578) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %578, ptr noundef nonnull align 8 dereferenceable(16) %573, ptr noundef nonnull @.str.199, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15)
          to label %2760 unwind label %2766

2760:                                             ; preds = %2759
  %2761 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %578) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %577, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 197, ptr noundef %2761)
          to label %2762 unwind label %2768

2762:                                             ; preds = %2760
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull align 8 dereferenceable(8) %576)
          to label %2763 unwind label %2770

2763:                                             ; preds = %2762
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %578) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %578) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %576) #7
  br label %2775

2764:                                             ; preds = %2758
  %2765 = landingpad { ptr, i32 }
          cleanup
  br label %2774

2766:                                             ; preds = %2759
  %2767 = landingpad { ptr, i32 }
          cleanup
  br label %2773

2768:                                             ; preds = %2760
  %2769 = landingpad { ptr, i32 }
          cleanup
  br label %2772

2770:                                             ; preds = %2762
  %2771 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %577) #7
  br label %2772

2772:                                             ; preds = %2770, %2768
  %.pn821 = phi { ptr, i32 } [ %2771, %2770 ], [ %2769, %2768 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %578) #7
  br label %2773

2773:                                             ; preds = %2772, %2766
  %.pn821.pn = phi { ptr, i32 } [ %.pn821, %2772 ], [ %2767, %2766 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %578) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %577) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %576) #7
  br label %2774

2774:                                             ; preds = %2773, %2764
  %.pn821.pn.pn = phi { ptr, i32 } [ %.pn821.pn, %2773 ], [ %2765, %2764 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %576) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #7
  br label %3131

2775:                                             ; preds = %2753, %2763
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %573) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %573) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %579) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %580) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %580, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %581) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %581, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %579, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %580, ptr noundef nonnull align 4 dereferenceable(28) %581)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %581) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %580) #7
  %2776 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %579)
  br i1 %2776, label %2791, label %2777

2777:                                             ; preds = %2775
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %582) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %582)
          to label %2778 unwind label %2783

2778:                                             ; preds = %2777
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %583) #7
  %2779 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %579)
          to label %2780 unwind label %2785

2780:                                             ; preds = %2778
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %583, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 200, ptr noundef %2779)
          to label %2781 unwind label %2785

2781:                                             ; preds = %2780
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %583, ptr noundef nonnull align 8 dereferenceable(8) %582)
          to label %2782 unwind label %2787

2782:                                             ; preds = %2781
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %583) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %583) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %582) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %582) #7
  br label %2791

2783:                                             ; preds = %2777
  %2784 = landingpad { ptr, i32 }
          cleanup
  br label %2790

2785:                                             ; preds = %2780, %2778
  %2786 = landingpad { ptr, i32 }
          cleanup
  br label %2789

2787:                                             ; preds = %2781
  %2788 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %583) #7
  br label %2789

2789:                                             ; preds = %2787, %2785
  %.pn825 = phi { ptr, i32 } [ %2788, %2787 ], [ %2786, %2785 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %583) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %582) #7
  br label %2790

2790:                                             ; preds = %2789, %2783
  %.pn825.pn = phi { ptr, i32 } [ %.pn825, %2789 ], [ %2784, %2783 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %582) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %579) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %579) #7
  br label %3131

2791:                                             ; preds = %2775, %2782
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %579) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %579) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %584) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %585) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %585, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %586) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %586, ptr noundef nonnull @.str.45)
  call void @_ZN7testing8internal8EqHelperILb0EE7CompareIN4chen10ip_addressES5_EENS_15AssertionResultEPKcS8_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %584, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %585, ptr noundef nonnull align 4 dereferenceable(28) %586)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %586) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %585) #7
  %2792 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %584)
  br i1 %2792, label %2807, label %2793

2793:                                             ; preds = %2791
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %587) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %587)
          to label %2794 unwind label %2799

2794:                                             ; preds = %2793
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %588) #7
  %2795 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %584)
          to label %2796 unwind label %2801

2796:                                             ; preds = %2794
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %588, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 201, ptr noundef %2795)
          to label %2797 unwind label %2801

2797:                                             ; preds = %2796
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef nonnull align 8 dereferenceable(8) %587)
          to label %2798 unwind label %2803

2798:                                             ; preds = %2797
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %588) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %588) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %587) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %587) #7
  br label %2807

2799:                                             ; preds = %2793
  %2800 = landingpad { ptr, i32 }
          cleanup
  br label %2806

2801:                                             ; preds = %2796, %2794
  %2802 = landingpad { ptr, i32 }
          cleanup
  br label %2805

2803:                                             ; preds = %2797
  %2804 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %588) #7
  br label %2805

2805:                                             ; preds = %2803, %2801
  %.pn828 = phi { ptr, i32 } [ %2804, %2803 ], [ %2802, %2801 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %588) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %587) #7
  br label %2806

2806:                                             ; preds = %2805, %2799
  %.pn828.pn = phi { ptr, i32 } [ %.pn828, %2805 ], [ %2800, %2799 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %587) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %584) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %584) #7
  br label %3131

2807:                                             ; preds = %2791, %2798
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %584) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %584) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %589) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %590) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %590, ptr noundef nonnull @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %591) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %591, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %589, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %590, ptr noundef nonnull align 4 dereferenceable(28) %591)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %591) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %590) #7
  %2808 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %589)
  br i1 %2808, label %2823, label %2809

2809:                                             ; preds = %2807
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %592) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %2810 unwind label %2815

2810:                                             ; preds = %2809
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %593) #7
  %2811 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %589)
          to label %2812 unwind label %2817

2812:                                             ; preds = %2810
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %593, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 203, ptr noundef %2811)
          to label %2813 unwind label %2817

2813:                                             ; preds = %2812
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %593, ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %2814 unwind label %2819

2814:                                             ; preds = %2813
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %592) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %592) #7
  br label %2823

2815:                                             ; preds = %2809
  %2816 = landingpad { ptr, i32 }
          cleanup
  br label %2822

2817:                                             ; preds = %2812, %2810
  %2818 = landingpad { ptr, i32 }
          cleanup
  br label %2821

2819:                                             ; preds = %2813
  %2820 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %593) #7
  br label %2821

2821:                                             ; preds = %2819, %2817
  %.pn831 = phi { ptr, i32 } [ %2820, %2819 ], [ %2818, %2817 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %593) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %592) #7
  br label %2822

2822:                                             ; preds = %2821, %2815
  %.pn831.pn = phi { ptr, i32 } [ %.pn831, %2821 ], [ %2816, %2815 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %592) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %589) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %589) #7
  br label %3131

2823:                                             ; preds = %2807, %2814
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %589) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %589) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %594) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %595) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %595, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %596) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %596, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperNEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %594, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %595, ptr noundef nonnull align 4 dereferenceable(28) %596)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %596) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %595) #7
  %2824 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  br i1 %2824, label %2839, label %2825

2825:                                             ; preds = %2823
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %597) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %597)
          to label %2826 unwind label %2831

2826:                                             ; preds = %2825
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %598) #7
  %2827 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
          to label %2828 unwind label %2833

2828:                                             ; preds = %2826
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %598, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 204, ptr noundef %2827)
          to label %2829 unwind label %2833

2829:                                             ; preds = %2828
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef nonnull align 8 dereferenceable(8) %597)
          to label %2830 unwind label %2835

2830:                                             ; preds = %2829
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %598) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %598) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %597) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %597) #7
  br label %2839

2831:                                             ; preds = %2825
  %2832 = landingpad { ptr, i32 }
          cleanup
  br label %2838

2833:                                             ; preds = %2828, %2826
  %2834 = landingpad { ptr, i32 }
          cleanup
  br label %2837

2835:                                             ; preds = %2829
  %2836 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %598) #7
  br label %2837

2837:                                             ; preds = %2835, %2833
  %.pn834 = phi { ptr, i32 } [ %2836, %2835 ], [ %2834, %2833 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %598) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %597) #7
  br label %2838

2838:                                             ; preds = %2837, %2831
  %.pn834.pn = phi { ptr, i32 } [ %.pn834, %2837 ], [ %2832, %2831 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %597) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %594) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %594) #7
  br label %3131

2839:                                             ; preds = %2823, %2830
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %594) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %594) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %599) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %600) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %600, ptr noundef nonnull @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %601) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %601, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %599, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %600, ptr noundef nonnull align 4 dereferenceable(28) %601)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %601) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %600) #7
  %2840 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %599)
  br i1 %2840, label %2855, label %2841

2841:                                             ; preds = %2839
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %602) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %2842 unwind label %2847

2842:                                             ; preds = %2841
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %603) #7
  %2843 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %599)
          to label %2844 unwind label %2849

2844:                                             ; preds = %2842
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %603, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 206, ptr noundef %2843)
          to label %2845 unwind label %2849

2845:                                             ; preds = %2844
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %603, ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %2846 unwind label %2851

2846:                                             ; preds = %2845
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %603) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %602) #7
  br label %2855

2847:                                             ; preds = %2841
  %2848 = landingpad { ptr, i32 }
          cleanup
  br label %2854

2849:                                             ; preds = %2844, %2842
  %2850 = landingpad { ptr, i32 }
          cleanup
  br label %2853

2851:                                             ; preds = %2845
  %2852 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %603) #7
  br label %2853

2853:                                             ; preds = %2851, %2849
  %.pn837 = phi { ptr, i32 } [ %2852, %2851 ], [ %2850, %2849 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %603) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %602) #7
  br label %2854

2854:                                             ; preds = %2853, %2847
  %.pn837.pn = phi { ptr, i32 } [ %.pn837, %2853 ], [ %2848, %2847 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %602) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %599) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %599) #7
  br label %3131

2855:                                             ; preds = %2839, %2846
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %599) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %599) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %604) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %605) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %605, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %606) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %606, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperLTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %604, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %605, ptr noundef nonnull align 4 dereferenceable(28) %606)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %606) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %605) #7
  %2856 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %604)
  br i1 %2856, label %2871, label %2857

2857:                                             ; preds = %2855
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %607) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %607)
          to label %2858 unwind label %2863

2858:                                             ; preds = %2857
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %608) #7
  %2859 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %604)
          to label %2860 unwind label %2865

2860:                                             ; preds = %2858
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %608, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 207, ptr noundef %2859)
          to label %2861 unwind label %2865

2861:                                             ; preds = %2860
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull align 8 dereferenceable(8) %607)
          to label %2862 unwind label %2867

2862:                                             ; preds = %2861
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %608) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %608) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %607) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %607) #7
  br label %2871

2863:                                             ; preds = %2857
  %2864 = landingpad { ptr, i32 }
          cleanup
  br label %2870

2865:                                             ; preds = %2860, %2858
  %2866 = landingpad { ptr, i32 }
          cleanup
  br label %2869

2867:                                             ; preds = %2861
  %2868 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %608) #7
  br label %2869

2869:                                             ; preds = %2867, %2865
  %.pn840 = phi { ptr, i32 } [ %2868, %2867 ], [ %2866, %2865 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %608) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %607) #7
  br label %2870

2870:                                             ; preds = %2869, %2863
  %.pn840.pn = phi { ptr, i32 } [ %.pn840, %2869 ], [ %2864, %2863 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %607) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %604) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %604) #7
  br label %3131

2871:                                             ; preds = %2855, %2862
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %604) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %604) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %609) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %610) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %610, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %611) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %611, ptr noundef nonnull @.str.51)
  call void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %609, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.50, ptr noundef nonnull align 4 dereferenceable(28) %610, ptr noundef nonnull align 4 dereferenceable(28) %611)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %611) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %610) #7
  %2872 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %609)
  br i1 %2872, label %2887, label %2873

2873:                                             ; preds = %2871
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %612) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %612)
          to label %2874 unwind label %2879

2874:                                             ; preds = %2873
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %613) #7
  %2875 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %609)
          to label %2876 unwind label %2881

2876:                                             ; preds = %2874
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %613, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 209, ptr noundef %2875)
          to label %2877 unwind label %2881

2877:                                             ; preds = %2876
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %613, ptr noundef nonnull align 8 dereferenceable(8) %612)
          to label %2878 unwind label %2883

2878:                                             ; preds = %2877
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %613) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %613) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %612) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %612) #7
  br label %2887

2879:                                             ; preds = %2873
  %2880 = landingpad { ptr, i32 }
          cleanup
  br label %2886

2881:                                             ; preds = %2876, %2874
  %2882 = landingpad { ptr, i32 }
          cleanup
  br label %2885

2883:                                             ; preds = %2877
  %2884 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %613) #7
  br label %2885

2885:                                             ; preds = %2883, %2881
  %.pn843 = phi { ptr, i32 } [ %2884, %2883 ], [ %2882, %2881 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %613) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %612) #7
  br label %2886

2886:                                             ; preds = %2885, %2879
  %.pn843.pn = phi { ptr, i32 } [ %.pn843, %2885 ], [ %2880, %2879 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %612) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %609) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %609) #7
  br label %3131

2887:                                             ; preds = %2871, %2878
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %609) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %609) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %614) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %615) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %615, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %616) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %616, ptr noundef nonnull @.str.45)
  call void @_ZN7testing8internal11CmpHelperGTIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %614, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %615, ptr noundef nonnull align 4 dereferenceable(28) %616)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %616) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %615) #7
  %2888 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %614)
  br i1 %2888, label %2903, label %2889

2889:                                             ; preds = %2887
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %617) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %617)
          to label %2890 unwind label %2895

2890:                                             ; preds = %2889
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %618) #7
  %2891 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %614)
          to label %2892 unwind label %2897

2892:                                             ; preds = %2890
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %618, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 210, ptr noundef %2891)
          to label %2893 unwind label %2897

2893:                                             ; preds = %2892
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 8 dereferenceable(8) %617)
          to label %2894 unwind label %2899

2894:                                             ; preds = %2893
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %618) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %617) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %617) #7
  br label %2903

2895:                                             ; preds = %2889
  %2896 = landingpad { ptr, i32 }
          cleanup
  br label %2902

2897:                                             ; preds = %2892, %2890
  %2898 = landingpad { ptr, i32 }
          cleanup
  br label %2901

2899:                                             ; preds = %2893
  %2900 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %618) #7
  br label %2901

2901:                                             ; preds = %2899, %2897
  %.pn846 = phi { ptr, i32 } [ %2900, %2899 ], [ %2898, %2897 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %618) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %617) #7
  br label %2902

2902:                                             ; preds = %2901, %2895
  %.pn846.pn = phi { ptr, i32 } [ %.pn846, %2901 ], [ %2896, %2895 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %617) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %614) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %614) #7
  br label %3131

2903:                                             ; preds = %2887, %2894
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %614) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %614) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %619) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %620) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %620, ptr noundef nonnull @.str.51)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %621) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %621, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %619, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %620, ptr noundef nonnull align 4 dereferenceable(28) %621)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %621) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %620) #7
  %2904 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %619)
  br i1 %2904, label %2919, label %2905

2905:                                             ; preds = %2903
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %622) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %622)
          to label %2906 unwind label %2911

2906:                                             ; preds = %2905
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %623) #7
  %2907 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %619)
          to label %2908 unwind label %2913

2908:                                             ; preds = %2906
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %623, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 212, ptr noundef %2907)
          to label %2909 unwind label %2913

2909:                                             ; preds = %2908
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %623, ptr noundef nonnull align 8 dereferenceable(8) %622)
          to label %2910 unwind label %2915

2910:                                             ; preds = %2909
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %623) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %623) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %622) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %622) #7
  br label %2919

2911:                                             ; preds = %2905
  %2912 = landingpad { ptr, i32 }
          cleanup
  br label %2918

2913:                                             ; preds = %2908, %2906
  %2914 = landingpad { ptr, i32 }
          cleanup
  br label %2917

2915:                                             ; preds = %2909
  %2916 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %623) #7
  br label %2917

2917:                                             ; preds = %2915, %2913
  %.pn849 = phi { ptr, i32 } [ %2916, %2915 ], [ %2914, %2913 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %623) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %622) #7
  br label %2918

2918:                                             ; preds = %2917, %2911
  %.pn849.pn = phi { ptr, i32 } [ %.pn849, %2917 ], [ %2912, %2911 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %622) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %619) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %619) #7
  br label %3131

2919:                                             ; preds = %2903, %2910
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %619) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %619) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %624) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %625) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %625, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %626) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %626, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %624, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %625, ptr noundef nonnull align 4 dereferenceable(28) %626)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %626) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %625) #7
  %2920 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %624)
  br i1 %2920, label %2935, label %2921

2921:                                             ; preds = %2919
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %627) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %2922 unwind label %2927

2922:                                             ; preds = %2921
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %628) #7
  %2923 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %624)
          to label %2924 unwind label %2929

2924:                                             ; preds = %2922
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %628, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 213, ptr noundef %2923)
          to label %2925 unwind label %2929

2925:                                             ; preds = %2924
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %2926 unwind label %2931

2926:                                             ; preds = %2925
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %628) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %628) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %627) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %627) #7
  br label %2935

2927:                                             ; preds = %2921
  %2928 = landingpad { ptr, i32 }
          cleanup
  br label %2934

2929:                                             ; preds = %2924, %2922
  %2930 = landingpad { ptr, i32 }
          cleanup
  br label %2933

2931:                                             ; preds = %2925
  %2932 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %628) #7
  br label %2933

2933:                                             ; preds = %2931, %2929
  %.pn852 = phi { ptr, i32 } [ %2932, %2931 ], [ %2930, %2929 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %628) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %627) #7
  br label %2934

2934:                                             ; preds = %2933, %2927
  %.pn852.pn = phi { ptr, i32 } [ %.pn852, %2933 ], [ %2928, %2927 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %627) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %624) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %624) #7
  br label %3131

2935:                                             ; preds = %2919, %2926
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %624) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %624) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %629) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %630) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %630, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %631) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %631, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperLEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %629, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %630, ptr noundef nonnull align 4 dereferenceable(28) %631)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %631) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %630) #7
  %2936 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %629)
  br i1 %2936, label %2951, label %2937

2937:                                             ; preds = %2935
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %632) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %632)
          to label %2938 unwind label %2943

2938:                                             ; preds = %2937
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %633) #7
  %2939 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %629)
          to label %2940 unwind label %2945

2940:                                             ; preds = %2938
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %633, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 214, ptr noundef %2939)
          to label %2941 unwind label %2945

2941:                                             ; preds = %2940
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %633, ptr noundef nonnull align 8 dereferenceable(8) %632)
          to label %2942 unwind label %2947

2942:                                             ; preds = %2941
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %633) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %633) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %632) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %632) #7
  br label %2951

2943:                                             ; preds = %2937
  %2944 = landingpad { ptr, i32 }
          cleanup
  br label %2950

2945:                                             ; preds = %2940, %2938
  %2946 = landingpad { ptr, i32 }
          cleanup
  br label %2949

2947:                                             ; preds = %2941
  %2948 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %633) #7
  br label %2949

2949:                                             ; preds = %2947, %2945
  %.pn855 = phi { ptr, i32 } [ %2948, %2947 ], [ %2946, %2945 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %633) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %632) #7
  br label %2950

2950:                                             ; preds = %2949, %2943
  %.pn855.pn = phi { ptr, i32 } [ %.pn855, %2949 ], [ %2944, %2943 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %632) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %629) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %629) #7
  br label %3131

2951:                                             ; preds = %2935, %2942
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %629) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %629) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %634) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %635) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %635, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %636) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %636, ptr noundef nonnull @.str.51)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %634, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.50, ptr noundef nonnull align 4 dereferenceable(28) %635, ptr noundef nonnull align 4 dereferenceable(28) %636)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %636) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %635) #7
  %2952 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %634)
  br i1 %2952, label %2967, label %2953

2953:                                             ; preds = %2951
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %637) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %637)
          to label %2954 unwind label %2959

2954:                                             ; preds = %2953
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %638) #7
  %2955 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %634)
          to label %2956 unwind label %2961

2956:                                             ; preds = %2954
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %638, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 216, ptr noundef %2955)
          to label %2957 unwind label %2961

2957:                                             ; preds = %2956
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull align 8 dereferenceable(8) %637)
          to label %2958 unwind label %2963

2958:                                             ; preds = %2957
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %638) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %638) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %637) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %637) #7
  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) %638) #7
  br label %2965

2965:                                             ; preds = %2963, %2961
  %.pn858 = phi { ptr, i32 } [ %2964, %2963 ], [ %2962, %2961 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %638) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %637) #7
  br label %2966

2966:                                             ; preds = %2965, %2959
  %.pn858.pn = phi { ptr, i32 } [ %.pn858, %2965 ], [ %2960, %2959 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %637) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %634) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %634) #7
  br label %3131

2967:                                             ; preds = %2951, %2958
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %634) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %634) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %639) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %640) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %640, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %641) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %641, ptr noundef nonnull @.str.7)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %639, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.53, ptr noundef nonnull align 4 dereferenceable(28) %640, ptr noundef nonnull align 4 dereferenceable(28) %641)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %641) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %640) #7
  %2968 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %639)
  br i1 %2968, label %2983, label %2969

2969:                                             ; preds = %2967
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %642) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %642)
          to label %2970 unwind label %2975

2970:                                             ; preds = %2969
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %643) #7
  %2971 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %639)
          to label %2972 unwind label %2977

2972:                                             ; preds = %2970
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %643, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 217, ptr noundef %2971)
          to label %2973 unwind label %2977

2973:                                             ; preds = %2972
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %643, ptr noundef nonnull align 8 dereferenceable(8) %642)
          to label %2974 unwind label %2979

2974:                                             ; preds = %2973
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %643) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %643) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %642) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %642) #7
  br label %2983

2975:                                             ; preds = %2969
  %2976 = landingpad { ptr, i32 }
          cleanup
  br label %2982

2977:                                             ; preds = %2972, %2970
  %2978 = landingpad { ptr, i32 }
          cleanup
  br label %2981

2979:                                             ; preds = %2973
  %2980 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %643) #7
  br label %2981

2981:                                             ; preds = %2979, %2977
  %.pn861 = phi { ptr, i32 } [ %2980, %2979 ], [ %2978, %2977 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %643) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %642) #7
  br label %2982

2982:                                             ; preds = %2981, %2975
  %.pn861.pn = phi { ptr, i32 } [ %.pn861, %2981 ], [ %2976, %2975 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %642) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %639) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %639) #7
  br label %3131

2983:                                             ; preds = %2967, %2974
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %639) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %639) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %644) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %645) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %645, ptr noundef nonnull @.str.7)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %646) #7
  call void @_ZN4chen10ip_addressC1EPKc(ptr noundef nonnull align 4 dereferenceable(28) %646, ptr noundef nonnull @.str.45)
  call void @_ZN7testing8internal11CmpHelperGEIN4chen10ip_addressES3_EENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %644, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.44, ptr noundef nonnull align 4 dereferenceable(28) %645, ptr noundef nonnull align 4 dereferenceable(28) %646)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %646) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %645) #7
  %2984 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %644)
  br i1 %2984, label %2999, label %2985

2985:                                             ; preds = %2983
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %647) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %647)
          to label %2986 unwind label %2991

2986:                                             ; preds = %2985
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %648) #7
  %2987 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %644)
          to label %2988 unwind label %2993

2988:                                             ; preds = %2986
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %648, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 218, ptr noundef %2987)
          to label %2989 unwind label %2993

2989:                                             ; preds = %2988
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %648, ptr noundef nonnull align 8 dereferenceable(8) %647)
          to label %2990 unwind label %2995

2990:                                             ; preds = %2989
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %648) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %648) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %647) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %647) #7
  br label %2999

2991:                                             ; preds = %2985
  %2992 = landingpad { ptr, i32 }
          cleanup
  br label %2998

2993:                                             ; preds = %2988, %2986
  %2994 = landingpad { ptr, i32 }
          cleanup
  br label %2997

2995:                                             ; preds = %2989
  %2996 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %648) #7
  br label %2997

2997:                                             ; preds = %2995, %2993
  %.pn864 = phi { ptr, i32 } [ %2996, %2995 ], [ %2994, %2993 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %648) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %647) #7
  br label %2998

2998:                                             ; preds = %2997, %2991
  %.pn864.pn = phi { ptr, i32 } [ %.pn864, %2997 ], [ %2992, %2991 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %647) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %644) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %644) #7
  br label %3131

2999:                                             ; preds = %2983, %2990
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %644) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %644) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %649) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %650) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %651) #7
  call void @_ZN4chen10ip_address3anyENS0_4TypeE(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %651, i8 noundef zeroext 2)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %650, ptr noundef nonnull align 4 dereferenceable(28) %651, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %649, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.200, ptr noundef nonnull align 1 dereferenceable(8) @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %650)
          to label %3000 unwind label %3002

3000:                                             ; preds = %2999
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %650) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %651) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %650) #7
  %3001 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %649)
  br i1 %3001, label %3018, label %3004

3002:                                             ; preds = %2999
  %3003 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %650) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %651) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %650) #7
  br label %3021

3004:                                             ; preds = %3000
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %652) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %3005 unwind label %3010

3005:                                             ; preds = %3004
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %653) #7
  %3006 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %649)
          to label %3007 unwind label %3012

3007:                                             ; preds = %3005
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %653, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 221, ptr noundef %3006)
          to label %3008 unwind label %3012

3008:                                             ; preds = %3007
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %3009 unwind label %3014

3009:                                             ; preds = %3008
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %653) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %653) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %652) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %652) #7
  br label %3018

3010:                                             ; preds = %3004
  %3011 = landingpad { ptr, i32 }
          cleanup
  br label %3017

3012:                                             ; preds = %3007, %3005
  %3013 = landingpad { ptr, i32 }
          cleanup
  br label %3016

3014:                                             ; preds = %3008
  %3015 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %653) #7
  br label %3016

3016:                                             ; preds = %3014, %3012
  %.pn867 = phi { ptr, i32 } [ %3015, %3014 ], [ %3013, %3012 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %653) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %652) #7
  br label %3017

3017:                                             ; preds = %3016, %3010
  %.pn867.pn = phi { ptr, i32 } [ %.pn867, %3016 ], [ %3011, %3010 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %652) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %649) #7
  br label %3021

3018:                                             ; preds = %3000, %3009
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %649) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %649) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %654) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %655) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %656) #7
  call void @_ZN4chen10ip_address8loopbackENS0_4TypeE(ptr dead_on_unwind nonnull writable sret(%"class.chen::ip_address") align 4 %656, i8 noundef zeroext 2)
  call void @_ZNK4chen10ip_address3strB5cxx11Ebb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %655, ptr noundef nonnull align 4 dereferenceable(28) %656, i1 noundef zeroext false, i1 noundef zeroext false)
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_15AssertionResultEPKcSD_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %654, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.201, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, ptr noundef nonnull align 8 dereferenceable(32) %655)
          to label %3019 unwind label %3022

3019:                                             ; preds = %3018
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %655) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %656) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %655) #7
  %3020 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %654)
  br i1 %3020, label %3038, label %3024

3021:                                             ; preds = %3017, %3002
  %.pn867.pn.pn = phi { ptr, i32 } [ %.pn867.pn, %3017 ], [ %3003, %3002 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %649) #7
  br label %3131

3022:                                             ; preds = %3018
  %3023 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %655) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %656) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %655) #7
  br label %3047

3024:                                             ; preds = %3019
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %657) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %657)
          to label %3025 unwind label %3030

3025:                                             ; preds = %3024
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %658) #7
  %3026 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %654)
          to label %3027 unwind label %3032

3027:                                             ; preds = %3025
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %658, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 222, ptr noundef %3026)
          to label %3028 unwind label %3032

3028:                                             ; preds = %3027
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef nonnull align 8 dereferenceable(8) %657)
          to label %3029 unwind label %3034

3029:                                             ; preds = %3028
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %658) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %658) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %657) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %657) #7
  br label %3038

3030:                                             ; preds = %3024
  %3031 = landingpad { ptr, i32 }
          cleanup
  br label %3037

3032:                                             ; preds = %3027, %3025
  %3033 = landingpad { ptr, i32 }
          cleanup
  br label %3036

3034:                                             ; preds = %3028
  %3035 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %658) #7
  br label %3036

3036:                                             ; preds = %3034, %3032
  %.pn871 = phi { ptr, i32 } [ %3035, %3034 ], [ %3033, %3032 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %658) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %657) #7
  br label %3037

3037:                                             ; preds = %3036, %3030
  %.pn871.pn = phi { ptr, i32 } [ %.pn871, %3036 ], [ %3031, %3030 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %657) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %654) #7
  br label %3047

3038:                                             ; preds = %3019, %3029
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %654) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %654) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %659) #7
  store i8 0, ptr %659, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %660) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %660, ptr noundef nonnull @.str.27)
  %3039 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %660)
  br i1 %3039, label %3040, label %.thread916

3040:                                             ; preds = %3038
  %3041 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3042 unwind label %3048

3042:                                             ; preds = %3040
  br i1 %3041, label %3043, label %.critedge898

3043:                                             ; preds = %3042
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %661) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %662) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %662) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %661, ptr noundef nonnull @.str.202, ptr noundef nonnull align 1 dereferenceable(1) %662)
          to label %3044 unwind label %3050

3044:                                             ; preds = %3043
  %3045 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %661)
          to label %3046 unwind label %3052

3046:                                             ; preds = %3044
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %662) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %662) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %661) #7
  br label %.critedge898

3047:                                             ; preds = %3037, %3022
  %.pn871.pn.pn = phi { ptr, i32 } [ %.pn871.pn, %3037 ], [ %3023, %3022 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %654) #7
  br label %3131

3048:                                             ; preds = %3040
  %3049 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3055

3050:                                             ; preds = %3043
  %3051 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3054

3052:                                             ; preds = %3044
  %3053 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #7
  br label %3054

3054:                                             ; preds = %3052, %3050
  %.pn875 = phi { ptr, i32 } [ %3053, %3052 ], [ %3051, %3050 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %662) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %662) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %661) #7
  br label %3055

3055:                                             ; preds = %3054, %3048
  %.pn875.pn = phi { ptr, i32 } [ %.pn875, %3054 ], [ %3049, %3048 ]
  %.319 = extractvalue { ptr, i32 } %.pn875.pn, 0
  %.319418 = extractvalue { ptr, i32 } %.pn875.pn, 1
  %3056 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #7
  %3057 = icmp eq i32 %.319418, %3056
  %3058 = call ptr @__cxa_begin_catch(ptr %.319) #7
  br i1 %3057, label %3060, label %3059

.critedge898:                                     ; preds = %3042, %3046
  store ptr @.str.204, ptr %660, align 8, !tbaa !5
  br label %.thread916

3059:                                             ; preds = %3055
  store ptr @.str.203, ptr %660, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread916

3060:                                             ; preds = %3055
  call void @__cxa_end_catch()
  br label %3069

.thread916:                                       ; preds = %3059, %.critedge898, %3038
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %663) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %663)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %664) #7
  %3061 = load ptr, ptr %660, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %664, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 227, ptr noundef %3061)
          to label %3062 unwind label %3064

3062:                                             ; preds = %.thread916
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %664, ptr noundef nonnull align 8 dereferenceable(8) %663)
          to label %3063 unwind label %3066

3063:                                             ; preds = %3062
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %664) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %664) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %663) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %663) #7
  br label %3069

3064:                                             ; preds = %.thread916
  %3065 = landingpad { ptr, i32 }
          cleanup
  br label %3068

3066:                                             ; preds = %3062
  %3067 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %664) #7
  br label %3068

3068:                                             ; preds = %3066, %3064
  %.pn878 = phi { ptr, i32 } [ %3067, %3066 ], [ %3065, %3064 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %664) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %663) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %663) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %660) #7
  br label %3130

3069:                                             ; preds = %3060, %3063
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %660) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %665) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %665, ptr noundef nonnull @.str.27)
  %3070 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %665)
  br i1 %3070, label %3071, label %.thread920

3071:                                             ; preds = %3069
  %3072 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3073 unwind label %3078

3073:                                             ; preds = %3071
  br i1 %3072, label %3074, label %.critedge902

3074:                                             ; preds = %3073
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %666) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %667) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %667) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %666, ptr noundef nonnull @.str.205, ptr noundef nonnull align 1 dereferenceable(1) %667)
          to label %3075 unwind label %3080

3075:                                             ; preds = %3074
  %3076 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %666)
          to label %3077 unwind label %3082

3077:                                             ; preds = %3075
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %666) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %667) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %667) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %666) #7
  br label %.critedge902

3078:                                             ; preds = %3071
  %3079 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3085

3080:                                             ; preds = %3074
  %3081 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3084

3082:                                             ; preds = %3075
  %3083 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %666) #7
  br label %3084

3084:                                             ; preds = %3082, %3080
  %.pn880 = phi { ptr, i32 } [ %3083, %3082 ], [ %3081, %3080 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %667) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %667) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %666) #7
  br label %3085

3085:                                             ; preds = %3084, %3078
  %.pn880.pn = phi { ptr, i32 } [ %.pn880, %3084 ], [ %3079, %3078 ]
  %.322 = extractvalue { ptr, i32 } %.pn880.pn, 0
  %.322421 = extractvalue { ptr, i32 } %.pn880.pn, 1
  %3086 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #7
  %3087 = icmp eq i32 %.322421, %3086
  %3088 = call ptr @__cxa_begin_catch(ptr %.322) #7
  br i1 %3087, label %3090, label %3089

.critedge902:                                     ; preds = %3073, %3077
  store ptr @.str.207, ptr %665, align 8, !tbaa !5
  br label %.thread920

3089:                                             ; preds = %3085
  store ptr @.str.206, ptr %665, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread920

3090:                                             ; preds = %3085
  call void @__cxa_end_catch()
  br label %3099

.thread920:                                       ; preds = %3089, %.critedge902, %3069
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %668) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %668)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %669) #7
  %3091 = load ptr, ptr %665, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %669, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 228, ptr noundef %3091)
          to label %3092 unwind label %3094

3092:                                             ; preds = %.thread920
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef nonnull align 8 dereferenceable(8) %668)
          to label %3093 unwind label %3096

3093:                                             ; preds = %3092
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %669) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %669) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %668) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %668) #7
  br label %3099

3094:                                             ; preds = %.thread920
  %3095 = landingpad { ptr, i32 }
          cleanup
  br label %3098

3096:                                             ; preds = %3092
  %3097 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %669) #7
  br label %3098

3098:                                             ; preds = %3096, %3094
  %.pn883 = phi { ptr, i32 } [ %3097, %3096 ], [ %3095, %3094 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %669) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %668) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %668) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %665) #7
  br label %3130

3099:                                             ; preds = %3090, %3093
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %665) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %670) #7
  call void @_ZN7testing8internal12ConstCharPtrC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %670, ptr noundef nonnull @.str.27)
  %3100 = call noundef zeroext i1 @_ZNK7testing8internal12ConstCharPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %670)
  br i1 %3100, label %3101, label %.thread924

3101:                                             ; preds = %3099
  %3102 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %3103 unwind label %3108

3103:                                             ; preds = %3101
  br i1 %3102, label %3104, label %.critedge906

3104:                                             ; preds = %3103
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %671) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %672) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %672) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %671, ptr noundef nonnull @.str.208, ptr noundef nonnull align 1 dereferenceable(1) %672)
          to label %3105 unwind label %3110

3105:                                             ; preds = %3104
  %3106 = invoke noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32) %671, ptr noundef nonnull %659)
          to label %3107 unwind label %3112

3107:                                             ; preds = %3105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %671) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %672) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %672) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %671) #7
  br label %.critedge906

3108:                                             ; preds = %3101
  %3109 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3115

3110:                                             ; preds = %3104
  %3111 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %3114

3112:                                             ; preds = %3105
  %3113 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %671) #7
  br label %3114

3114:                                             ; preds = %3112, %3110
  %.pn885 = phi { ptr, i32 } [ %3113, %3112 ], [ %3111, %3110 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %672) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %672) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %671) #7
  br label %3115

3115:                                             ; preds = %3114, %3108
  %.pn885.pn = phi { ptr, i32 } [ %.pn885, %3114 ], [ %3109, %3108 ]
  %.325 = extractvalue { ptr, i32 } %.pn885.pn, 0
  %.325424 = extractvalue { ptr, i32 } %.pn885.pn, 1
  %3116 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #7
  %3117 = icmp eq i32 %.325424, %3116
  %3118 = call ptr @__cxa_begin_catch(ptr %.325) #7
  br i1 %3117, label %3120, label %3119

.critedge906:                                     ; preds = %3103, %3107
  store ptr @.str.210, ptr %670, align 8, !tbaa !5
  br label %.thread924

3119:                                             ; preds = %3115
  store ptr @.str.209, ptr %670, align 8, !tbaa !5
  call void @__cxa_end_catch()
  br label %.thread924

3120:                                             ; preds = %3115
  call void @__cxa_end_catch()
  br label %3129

.thread924:                                       ; preds = %3119, %.critedge906, %3099
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %673) #7
  call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %673)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %674) #7
  %3121 = load ptr, ptr %670, align 8, !tbaa !5
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %674, i32 noundef 1, ptr noundef nonnull @.str.4, i32 noundef 229, ptr noundef %3121)
          to label %3122 unwind label %3124

3122:                                             ; preds = %.thread924
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull align 8 dereferenceable(8) %673)
          to label %3123 unwind label %3126

3123:                                             ; preds = %3122
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %674) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %673) #7
  br label %3129

3124:                                             ; preds = %.thread924
  %3125 = landingpad { ptr, i32 }
          cleanup
  br label %3128

3126:                                             ; preds = %3122
  %3127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %674) #7
  br label %3128

3128:                                             ; preds = %3126, %3124
  %.pn888 = phi { ptr, i32 } [ %3127, %3126 ], [ %3125, %3124 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %674) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %673) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %670) #7
  br label %3130

3129:                                             ; preds = %3120, %3123
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %670) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %659) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %74) #7
  ret void

3130:                                             ; preds = %3128, %3098, %3068
  %.pn888.pn = phi { ptr, i32 } [ %.pn888, %3128 ], [ %.pn883, %3098 ], [ %.pn878, %3068 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %659) #7
  br label %3131

3131:                                             ; preds = %3130, %3047, %3021, %2998, %2982, %2966, %2950, %2934, %2918, %2902, %2886, %2870, %2854, %2838, %2822, %2806, %2790, %2774, %2752, %2730, %2708, %2686, %2664, %2641, %2618, %2596, %2573, %2550, %2528, %2505, %2482, %2459, %2437, %2414, %2391, %2369, %2346, %2323, %2301, %2278, %2255, %2232, %2210, %2187, %2164, %2142, %2119, %2096, %2074, %2051, %2029, %2007, %1986, %1964, %1942, %1921, %1899, %1877, %1855, %1833, %1811, %1789, %1767, %1745, %1723, %1701, %1679, %1657, %1635, %1613, %1591, %1569, %1547, %1525, %1503, %1481, %1460, %1446, %1425, %1403, %1383, %1360, %1340, %1320, %1303, %1286, %1269, %1255, %1229, %1206, %1186, %1166, %1146, %1126, %1106, %1083, %1069, %1045, %1031, %1011, %990, %969, %945
  %.pn888.pn.pn = phi { ptr, i32 } [ %.pn888.pn, %3130 ], [ %.pn871.pn.pn, %3047 ], [ %.pn867.pn.pn, %3021 ], [ %.pn864.pn, %2998 ], [ %.pn861.pn, %2982 ], [ %.pn858.pn, %2966 ], [ %.pn855.pn, %2950 ], [ %.pn852.pn, %2934 ], [ %.pn849.pn, %2918 ], [ %.pn846.pn, %2902 ], [ %.pn843.pn, %2886 ], [ %.pn840.pn, %2870 ], [ %.pn837.pn, %2854 ], [ %.pn834.pn, %2838 ], [ %.pn831.pn, %2822 ], [ %.pn828.pn, %2806 ], [ %.pn825.pn, %2790 ], [ %.pn821.pn.pn, %2774 ], [ %.pn817.pn.pn, %2752 ], [ %.pn813.pn.pn, %2730 ], [ %.pn809.pn.pn, %2708 ], [ %.pn805.pn.pn, %2686 ], [ %.pn801.pn.pn, %2664 ], [ %.pn797.pn.pn, %2641 ], [ %.pn793.pn.pn, %2618 ], [ %.pn789.pn.pn, %2596 ], [ %.pn785.pn.pn, %2573 ], [ %.pn781.pn.pn, %2550 ], [ %.pn777.pn.pn, %2528 ], [ %.pn773.pn.pn, %2505 ], [ %.pn769.pn.pn, %2482 ], [ %.pn765.pn.pn, %2459 ], [ %.pn761.pn.pn, %2437 ], [ %.pn757.pn.pn, %2414 ], [ %.pn753.pn.pn, %2391 ], [ %.pn749.pn.pn, %2369 ], [ %.pn745.pn.pn, %2346 ], [ %.pn741.pn.pn, %2323 ], [ %.pn737.pn.pn, %2301 ], [ %.pn733.pn.pn, %2278 ], [ %.pn729.pn.pn, %2255 ], [ %.pn725.pn.pn, %2232 ], [ %.pn721.pn.pn, %2210 ], [ %.pn717.pn.pn, %2187 ], [ %.pn713.pn.pn, %2164 ], [ %.pn709.pn.pn, %2142 ], [ %.pn705.pn.pn, %2119 ], [ %.pn701.pn.pn, %2096 ], [ %.pn697.pn.pn, %2074 ], [ %.pn693.pn.pn, %2051 ], [ %.pn689.pn.pn, %2029 ], [ %.pn685.pn.pn, %2007 ], [ %.pn681.pn.pn, %1986 ], [ %.pn677.pn.pn, %1964 ], [ %.pn673.pn.pn, %1942 ], [ %.pn669.pn.pn, %1921 ], [ %.pn665.pn.pn, %1899 ], [ %.pn661.pn.pn, %1877 ], [ %.pn657.pn.pn, %1855 ], [ %.pn653.pn.pn, %1833 ], [ %.pn649.pn.pn, %1811 ], [ %.pn645.pn.pn, %1789 ], [ %.pn641.pn.pn, %1767 ], [ %.pn637.pn.pn, %1745 ], [ %.pn633.pn.pn, %1723 ], [ %.pn629.pn.pn, %1701 ], [ %.pn625.pn.pn, %1679 ], [ %.pn621.pn.pn, %1657 ], [ %.pn617.pn.pn, %1635 ], [ %.pn613.pn.pn, %1613 ], [ %.pn609.pn.pn, %1591 ], [ %.pn605.pn.pn, %1569 ], [ %.pn601.pn.pn, %1547 ], [ %.pn597.pn.pn, %1525 ], [ %.pn593.pn.pn, %1503 ], [ %.pn589.pn.pn, %1481 ], [ %.pn586.pn, %1460 ], [ %.pn582.pn.pn, %1446 ], [ %.pn578.pn.pn, %1425 ], [ %.pn574.pn.pn, %1403 ], [ %.pn570.pn.pn, %1383 ], [ %.pn567.pn, %1360 ], [ %.pn564.pn, %1340 ], [ %.pn561.pn, %1320 ], [ %.pn558.pn, %1303 ], [ %.pn555.pn, %1286 ], [ %.pn552.pn, %1269 ], [ %.pn548.pn.pn, %1255 ], [ %.pn541.pn.pn, %1229 ], [ %.pn537.pn.pn, %1206 ], [ %.pn533.pn.pn, %1186 ], [ %.pn529.pn.pn, %1166 ], [ %.pn525.pn.pn, %1146 ], [ %.pn521.pn.pn, %1126 ], [ %.pn517.pn.pn, %1106 ], [ %.pn514.pn, %1083 ], [ %.pn510.pn.pn, %1069 ], [ %.pn507.pn, %1045 ], [ %.pn503.pn.pn, %1031 ], [ %.pn499.pn.pn, %1011 ], [ %.pn495.pn.pn, %990 ], [ %.pn491.pn.pn, %969 ], [ %.pn487.pn.pn, %945 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %74) #7
  br label %3132

3132:                                             ; preds = %3131, %924, %898, %877, %839, %823, %807, %791, %775, %761, %736, %705, %689
  %.pn888.pn.pn.pn = phi { ptr, i32 } [ %.pn888.pn.pn, %3131 ], [ %.pn485, %924 ], [ %.pn481, %898 ], [ %.pn474.pn.pn, %877 ], [ %.pn468.pn, %839 ], [ %.pn465.pn, %823 ], [ %.pn462.pn, %807 ], [ %.pn459.pn, %791 ], [ %.pn456.pn, %775 ], [ %.pn452.pn.pn, %761 ], [ %.pn445.pn.pn, %736 ], [ %.pn440.pn, %705 ], [ %.pn.pn, %689 ]
  resume { ptr, i32 } %.pn888.pn.pn.pn
}

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

declare void @_ZN4chen11ip_version4C1Ej(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) unnamed_addr #3

declare void @_ZN4chen10ip_addressC1ERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3

declare void @_ZN4chen11ip_version4C1Ejh(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, i8 noundef zeroext) unnamed_addr #3

declare void @_ZN4chen11ip_version4C1EjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, 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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA10_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(10), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; 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_addressaSENS0_4TypeE(ptr noundef nonnull align 4 dereferenceable(28), i8 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA8_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(8), ptr noundef nonnull align 8 dereferenceable(32)) 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 @_ZN7testing8internal8EqHelperILb0EE7CompareIA15_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(15), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; 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

declare noundef nonnull align 4 dereferenceable(28) ptr @_ZN4chen10ip_addressaSERKNS_11ip_version4E(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA12_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(12), ptr noundef nonnull align 8 dereferenceable(32)) 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

declare noundef i32 @_ZNK4chen11ip_version44addrEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen11ip_version47netmaskEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef i32 @_ZNK4chen11ip_version48wildcardEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIA18_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(18), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare i64 @_ZNK4chen11ip_version49broadcastEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

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

declare noundef i64 @_ZNK4chen11ip_version45hostsEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version410isReservedEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version411isLinkLocalEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version411isBroadcastEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassAEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassBEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassCEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassDEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZNK4chen11ip_version48isClassEEv(ptr noundef nonnull align 4 dereferenceable(8)) 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

declare noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef i32 @_ZN4chen11ip_version49toIntegerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPh(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3

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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !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,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass