; LLVM IR from BitFunnel/NativeJIT :: test/CodeGen (FunctionBufferTest)

; 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.NativeJIT::Register" = type { i32 }
%"class.NativeJIT::Register.40" = type { i32 }
%"class.NativeJIT::Register.49" = type { i32 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr.21" }
%"class.testing::internal::scoped_ptr.21" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.NativeJIT::FunctionSpecification" = type { i32, %"class.Allocators::StlAllocator", %"class.std::vector.18", %"class.std::vector.18", %"class.std::vector.18" }
%"class.Allocators::StlAllocator" = type { ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl" = type { %"class.Allocators::StlAllocator", %"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.testing::internal::HasNewFatalFailureHelper" = type { %"class.testing::TestPartResultReporterInterface", i8, ptr }
%"class.testing::TestPartResultReporterInterface" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.20" }
%"class.testing::internal::scoped_ptr.20" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = 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.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.41 = type { i8 }
%class.anon.43 = type { i8 }
%class.anon.45 = type { i8 }
%class.anon.47 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.NativeJIT::UnwindCode" = type { %union.anon.27 }
%union.anon.27 = type { i16 }
%"struct.NativeJIT::UnwindInfo" = type { i8, i8, i8, i8, %"struct.NativeJIT::UnwindCode" }
%struct.anon = type { i8, i8 }

@.str.3 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZN9NativeJIT3rspE = external global %"class.NativeJIT::Register", align 4
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZN9NativeJIT3rbpE = external global %"class.NativeJIT::Register", align 4
@_ZN9NativeJIT5xmm10E = external global %"class.NativeJIT::Register.40", align 4
@_ZN9NativeJIT5xmm11E = external global %"class.NativeJIT::Register.40", align 4
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [202 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [204 x i8], align 1
@_ZN9NativeJIT6xmm11sE = external global %"class.NativeJIT::Register.49", align 4
@_ZN9NativeJIT6xmm10sE = external global %"class.NativeJIT::Register.49", align 4

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

declare i32 @__gxx_personality_v0(...)

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

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

declare void @_ZN9NativeJIT11TestFixture8GetSetupEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(256)) #2

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

declare noundef nonnull align 8 dereferenceable(133) ptr @_ZN9NativeJIT13TestCaseSetup7GetCodeEv(ptr noundef nonnull align 8 dereferenceable(16)) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN9NativeJIT13TestCaseSetup12GetAllocatorEv(ptr noundef nonnull align 8 dereferenceable(16)) #2

declare noundef ptr @_ZNK9NativeJIT11TestFixture20GetDiagnosticsStreamEv(ptr noundef nonnull align 8 dereferenceable(256)) #2

declare void @_ZN9NativeJIT21FunctionSpecificationC1ERN10Allocators10IAllocatorEijjjNS0_16BaseRegisterTypeEPSo(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() #2

declare void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest18ValidateUnwindInfoERKNS_21FunctionSpecificationE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112)) #3 align 2

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

; Function Attrs: nounwind
declare void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; 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: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

declare noundef i32 @_ZNK9NativeJIT21FunctionSpecification22GetOffsetToOriginalRspEv(ptr noundef nonnull align 8 dereferenceable(112)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(133), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyPrologERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(133)) #3 align 2

declare noundef ptr @_ZNK9NativeJIT21FunctionSpecification19GetUnwindInfoBufferEv(ptr noundef nonnull align 8 dereferenceable(112)) #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)) #3 align 2

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

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

declare void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2), i8 noundef zeroext, i32 noundef, i8 noundef zeroext) unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(25)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(3)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(7)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator13EmitImmediateILNS_6OpCodeE0ELj8ELb0EiEEvNS_8RegisterIXT0_EXT1_EEET2_(ptr noundef nonnull align 8 dereferenceable(104), i32, i32 noundef) #3 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE28EEEvv(ptr noundef nonnull align 8 dereferenceable(104)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyEpilogERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(133)) #3 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

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

declare void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2), i16 noundef zeroext) unnamed_addr #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 #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 2 dereferenceable(2)) #6 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) #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_(ptr, ptr) #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE17ELj8ELb0EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104), i32, i32, i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NativeJIT15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(280) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::unique_ptr", align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.NativeJIT::FunctionSpecification", align 8
  %8 = alloca %"class.testing::internal::HasNewFatalFailureHelper", align 8
  %9 = alloca i32, 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 i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.testing::Message", align 8
  %16 = alloca %"class.testing::internal::AssertHelper", align 8
  %17 = alloca %"class.std::vector.22", align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.41, align 1
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.43, align 1
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.45, align 1
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.47, align 1
  %26 = alloca %"class.testing::internal::HasNewFatalFailureHelper", align 8
  %27 = alloca %"class.testing::Message", align 8
  %28 = alloca %"class.testing::internal::AssertHelper", align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.testing::AssertionResult", align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.testing::Message", align 8
  %36 = alloca %"class.testing::internal::AssertHelper", align 8
  %37 = alloca %"class.testing::AssertionResult", align 8
  %38 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %39 = alloca %"class.testing::Message", align 8
  %40 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %41 = alloca i8, align 1
  %42 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %43 = alloca i8, align 1
  %44 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %45 = alloca i8, align 1
  %46 = alloca i8, align 1
  %47 = alloca %"class.testing::internal::AssertHelper", align 8
  %48 = alloca %"class.testing::AssertionResult", align 8
  %49 = alloca i8, align 1
  %50 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %51 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %52 = alloca %"class.testing::Message", align 8
  %53 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %54 = alloca i8, align 1
  %55 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %56 = alloca i8, align 1
  %57 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %58 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca %"class.testing::internal::AssertHelper", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.testing::AssertionResult", align 8
  %64 = alloca i8, align 1
  %65 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %66 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %67 = alloca %"class.testing::Message", align 8
  %68 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %69 = alloca i8, align 1
  %70 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %71 = alloca i8, align 1
  %72 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %73 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %74 = alloca i8, align 1
  %75 = alloca i8, align 1
  %76 = alloca %"class.testing::internal::AssertHelper", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.testing::AssertionResult", align 8
  %79 = alloca i8, align 1
  %80 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %81 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %82 = alloca %"class.testing::Message", align 8
  %83 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %84 = alloca i8, align 1
  %85 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %86 = alloca i8, align 1
  %87 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %88 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca %"class.testing::internal::AssertHelper", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.NativeJIT::Register.49", align 4
  %94 = alloca %"class.NativeJIT::Register", align 4
  %95 = alloca %"class.NativeJIT::Register.49", align 4
  %96 = alloca %"class.NativeJIT::Register", align 4
  %97 = alloca %"class.NativeJIT::Register", align 4
  %98 = alloca %"class.NativeJIT::Register", align 4
  %99 = alloca %"class.NativeJIT::Register", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %100 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  call void @_ZN9NativeJIT11TestFixture8GetSetupEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %3, ptr noundef nonnull align 8 dereferenceable(256) %100)
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  %101 = call noundef ptr @_ZNKSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %102 = invoke noundef nonnull align 8 dereferenceable(133) ptr @_ZN9NativeJIT13TestCaseSetup7GetCodeEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %103 unwind label %123

103:                                              ; preds = %1
  store ptr %102, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 112, ptr %7) #8
  %104 = call noundef ptr @_ZNKSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9NativeJIT13TestCaseSetup12GetAllocatorEv(ptr noundef nonnull align 8 dereferenceable(16) %104)
          to label %106 unwind label %127

106:                                              ; preds = %103
  %107 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE7GetMaskEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
          to label %108 unwind label %127

108:                                              ; preds = %106
  %109 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE7GetMaskEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
          to label %110 unwind label %127

110:                                              ; preds = %108
  %111 = or i32 %107, %109
  %112 = invoke noundef ptr @_ZNK9NativeJIT11TestFixture20GetDiagnosticsStreamEv(ptr noundef nonnull align 8 dereferenceable(256) %100)
          to label %113 unwind label %127

113:                                              ; preds = %110
  invoke void @_ZN9NativeJIT21FunctionSpecificationC1ERN10Allocators10IAllocatorEijjjNS0_16BaseRegisterTypeEPSo(ptr noundef nonnull align 8 dereferenceable(112) %7, ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 1, i32 noundef 2, i32 noundef 0, i32 noundef %111, i32 noundef 1, ptr noundef %112)
          to label %114 unwind label %127

114:                                              ; preds = %113
  %115 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %116 unwind label %131

116:                                              ; preds = %114
  br i1 %115, label %117, label %152

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  invoke void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %118 unwind label %135

118:                                              ; preds = %117
  %119 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %120 unwind label %139

120:                                              ; preds = %118
  br i1 %119, label %121, label %143

121:                                              ; preds = %120
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest18ValidateUnwindInfoERKNS_21FunctionSpecificationE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(112) %7)
          to label %122 unwind label %139

122:                                              ; preds = %121
  br label %143

123:                                              ; preds = %1
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %5, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %6, align 4
  br label %1130

127:                                              ; preds = %113, %110, %108, %106, %103
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %5, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %6, align 4
  br label %1129

131:                                              ; preds = %114
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %5, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %6, align 4
  br label %1128

135:                                              ; preds = %117
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %5, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %6, align 4
  br label %151

139:                                              ; preds = %143, %121, %118
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %5, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %6, align 4
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %151

143:                                              ; preds = %122, %120
  %144 = invoke noundef zeroext i1 @_ZNK7testing8internal24HasNewFatalFailureHelper21has_new_fatal_failureEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %145 unwind label %139

145:                                              ; preds = %143
  br i1 %144, label %146, label %147

146:                                              ; preds = %145
  store i32 2, ptr %9, align 4
  br label %148

147:                                              ; preds = %145
  store i32 0, ptr %9, align 4
  br label %148

148:                                              ; preds = %147, %146
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  %149 = load i32, ptr %9, align 4
  switch i32 %149, label %1120 [
    i32 0, label %150
    i32 2, label %153
  ]

150:                                              ; preds = %148
  br label %171

151:                                              ; preds = %139, %135
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  br label %1128

152:                                              ; preds = %116
  br label %153

153:                                              ; preds = %152, %148
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %154 unwind label %157

154:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 2, ptr noundef @.str.3, i32 noundef 461, ptr noundef @.str.4)
          to label %155 unwind label %161

155:                                              ; preds = %154
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %156 unwind label %165

156:                                              ; preds = %155
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  store i32 1, ptr %9, align 4
  br label %1120

157:                                              ; preds = %153
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %5, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %6, align 4
  br label %170

161:                                              ; preds = %154
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %5, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %6, align 4
  br label %169

165:                                              ; preds = %155
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %5, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %169

169:                                              ; preds = %165, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %170

170:                                              ; preds = %169, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %1128

171:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 104, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %172 = invoke noundef i32 @_ZNK9NativeJIT21FunctionSpecification22GetOffsetToOriginalRspEv(ptr noundef nonnull align 8 dereferenceable(112) %7)
          to label %173 unwind label %178

173:                                              ; preds = %171
  store i32 %172, ptr %14, align 4, !tbaa !9
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %12, ptr noundef @.str.36, ptr noundef @.str.6, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %174 unwind label %178

174:                                              ; preds = %173
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  %175 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %176 unwind label %182

176:                                              ; preds = %174
  br i1 %175, label %177, label %186

177:                                              ; preds = %176
  br label %206

178:                                              ; preds = %173, %171
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %5, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %233

182:                                              ; preds = %174
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %5, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %6, align 4
  br label %232

186:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %187 unwind label %192

187:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %188 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %189 unwind label %196

189:                                              ; preds = %187
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %16, i32 noundef 2, ptr noundef @.str.3, i32 noundef 463, ptr noundef %188)
          to label %190 unwind label %196

190:                                              ; preds = %189
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %191 unwind label %200

191:                                              ; preds = %190
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  store i32 1, ptr %9, align 4
  br label %207

192:                                              ; preds = %186
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %5, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %6, align 4
  br label %205

196:                                              ; preds = %189, %187
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %5, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %6, align 4
  br label %204

200:                                              ; preds = %190
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %5, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %204

204:                                              ; preds = %200, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %205

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

206:                                              ; preds = %177
  store i32 0, ptr %9, align 4
  br label %207

207:                                              ; preds = %206, %191
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  %208 = load i32, ptr %9, align 4
  switch i32 %208, label %1120 [
    i32 0, label %209
  ]

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = load ptr, ptr %210, align 8, !tbaa !11
  %212 = getelementptr inbounds ptr, ptr %211, i64 3
  %213 = load ptr, ptr %212, align 8
  invoke void %213(ptr noundef nonnull align 8 dereferenceable(133) %210)
          to label %214 unwind label %234

214:                                              ; preds = %209
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #8
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(133) %215, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %216 unwind label %238

216:                                              ; preds = %214
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(133) %217, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %218 unwind label %242

218:                                              ; preds = %216
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(133) %219, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %220 unwind label %246

220:                                              ; preds = %218
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(133) %221, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %222 unwind label %250

222:                                              ; preds = %220
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  %223 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %224 unwind label %234

224:                                              ; preds = %222
  br i1 %223, label %225, label %271

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #8
  invoke void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %226 unwind label %254

226:                                              ; preds = %225
  %227 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %228 unwind label %258

228:                                              ; preds = %226
  br i1 %227, label %229, label %262

229:                                              ; preds = %228
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyPrologERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(112) %7, ptr noundef nonnull align 8 dereferenceable(133) %230)
          to label %231 unwind label %258

231:                                              ; preds = %229
  br label %262

232:                                              ; preds = %205, %182
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  br label %233

233:                                              ; preds = %232, %178
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  br label %1128

234:                                              ; preds = %222, %209
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %5, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %6, align 4
  br label %1127

238:                                              ; preds = %214
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %5, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %6, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %1127

242:                                              ; preds = %216
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %5, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %6, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %1127

246:                                              ; preds = %218
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %5, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %6, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %1127

250:                                              ; preds = %220
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %5, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %6, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %1127

254:                                              ; preds = %225
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %5, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %6, align 4
  br label %270

258:                                              ; preds = %262, %229, %226
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %5, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %6, align 4
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  br label %270

262:                                              ; preds = %231, %228
  %263 = invoke noundef zeroext i1 @_ZNK7testing8internal24HasNewFatalFailureHelper21has_new_fatal_failureEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %264 unwind label %258

264:                                              ; preds = %262
  br i1 %263, label %265, label %266

265:                                              ; preds = %264
  store i32 3, ptr %9, align 4
  br label %267

266:                                              ; preds = %264
  store i32 0, ptr %9, align 4
  br label %267

267:                                              ; preds = %266, %265
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  %268 = load i32, ptr %9, align 4
  switch i32 %268, label %1119 [
    i32 0, label %269
    i32 3, label %272
  ]

269:                                              ; preds = %267
  br label %290

270:                                              ; preds = %258, %254
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  br label %1127

271:                                              ; preds = %224
  br label %272

272:                                              ; preds = %271, %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %273 unwind label %276

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 2, ptr noundef @.str.3, i32 noundef 493, ptr noundef @.str.7)
          to label %274 unwind label %280

274:                                              ; preds = %273
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %275 unwind label %284

275:                                              ; preds = %274
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  store i32 1, ptr %9, align 4
  br label %1119

276:                                              ; preds = %272
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %5, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %6, align 4
  br label %289

280:                                              ; preds = %273
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %5, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %6, align 4
  br label %288

284:                                              ; preds = %274
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %5, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %288

288:                                              ; preds = %284, %280
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %289

289:                                              ; preds = %288, %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %1127

290:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %291 = invoke noundef ptr @_ZNK9NativeJIT21FunctionSpecification19GetUnwindInfoBufferEv(ptr noundef nonnull align 8 dereferenceable(112) %7)
          to label %292 unwind label %310

292:                                              ; preds = %290
  store ptr %291, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %293 = load ptr, ptr %29, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.NativeJIT::UnwindInfo", ptr %293, i32 0, i32 4
  store ptr %294, ptr %30, align 8, !tbaa !5
  %295 = call ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %296 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  store ptr %295, ptr %296, align 8
  %297 = call ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %298 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %297, ptr %298, align 8
  %299 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  %300 = load ptr, ptr %299, align 8
  %301 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8
  invoke void @_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_(ptr %300, ptr %302)
          to label %303 unwind label %314

303:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 7, ptr %34, align 4, !tbaa !9
  %304 = load ptr, ptr %29, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.NativeJIT::UnwindInfo", ptr %304, i32 0, i32 2
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %33, ptr noundef @.str.37, ptr noundef @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 1 dereferenceable(1) %305)
          to label %306 unwind label %318

306:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  %307 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %308 unwind label %322

308:                                              ; preds = %306
  br i1 %307, label %309, label %326

309:                                              ; preds = %308
  br label %346

310:                                              ; preds = %290
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %5, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %6, align 4
  br label %1126

314:                                              ; preds = %1115, %1113, %1109, %1103, %1097, %1091, %1086, %292
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %5, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %6, align 4
  br label %1125

318:                                              ; preds = %303
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %5, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %363

322:                                              ; preds = %306
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %5, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %6, align 4
  br label %362

326:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %327 unwind label %332

327:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %328 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %329 unwind label %336

329:                                              ; preds = %327
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef 2, ptr noundef @.str.3, i32 noundef 502, ptr noundef %328)
          to label %330 unwind label %336

330:                                              ; preds = %329
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %331 unwind label %340

331:                                              ; preds = %330
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  store i32 1, ptr %9, align 4
  br label %347

332:                                              ; preds = %326
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %5, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %6, align 4
  br label %345

336:                                              ; preds = %329, %327
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %5, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %6, align 4
  br label %344

340:                                              ; preds = %330
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %5, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %344

344:                                              ; preds = %340, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %345

345:                                              ; preds = %344, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %362

346:                                              ; preds = %309
  store i32 0, ptr %9, align 4
  br label %347

347:                                              ; preds = %346, %331
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  %348 = load i32, ptr %9, align 4
  switch i32 %348, label %1118 [
    i32 0, label %349
  ]

349:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %38) #8
  %350 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 3)
          to label %351 unwind label %364

351:                                              ; preds = %349
  %352 = load i8, ptr %350, align 1, !tbaa !13
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %38, i8 noundef zeroext %352, i32 noundef 2, i8 noundef zeroext 12)
          to label %353 unwind label %364

353:                                              ; preds = %351
  %354 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %38, i32 0, i32 0
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %355, i64 6
  %357 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %356, i32 0, i32 0
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIttEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind writable sret(%"class.testing::AssertionResult") align 8 %37, ptr noundef @.str.38, ptr noundef @.str.39, ptr noundef nonnull align 2 dereferenceable(2) %354, ptr noundef nonnull align 2 dereferenceable(2) %357)
          to label %358 unwind label %364

358:                                              ; preds = %353
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #8
  %359 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %360 unwind label %368

360:                                              ; preds = %358
  br i1 %359, label %361, label %372

361:                                              ; preds = %360
  br label %486

362:                                              ; preds = %345, %322
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  br label %363

363:                                              ; preds = %362, %318
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  br label %1125

364:                                              ; preds = %353, %351, %349
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %5, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #8
  br label %525

368:                                              ; preds = %358
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %5, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %6, align 4
  br label %524

372:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %373 unwind label %442

373:                                              ; preds = %372
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %375 unwind label %446

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #8
  %376 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 3)
          to label %377 unwind label %450

377:                                              ; preds = %375
  %378 = load i8, ptr %376, align 1, !tbaa !13
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %40, i8 noundef zeroext %378, i32 noundef 2, i8 noundef zeroext 12)
          to label %379 unwind label %450

379:                                              ; preds = %377
  %380 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %40, i32 0, i32 0
  %381 = getelementptr inbounds %struct.anon, ptr %380, i32 0, i32 0
  %382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %374, ptr noundef nonnull align 1 dereferenceable(1) %381)
          to label %383 unwind label %450

383:                                              ; preds = %379
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %385 unwind label %450

385:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %42) #8
  %386 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 3)
          to label %387 unwind label %454

387:                                              ; preds = %385
  %388 = load i8, ptr %386, align 1, !tbaa !13
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %42, i8 noundef zeroext %388, i32 noundef 2, i8 noundef zeroext 12)
          to label %389 unwind label %454

389:                                              ; preds = %387
  %390 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %42, i32 0, i32 0
  %391 = getelementptr inbounds %struct.anon, ptr %390, i32 0, i32 1
  %392 = load i8, ptr %391, align 1
  %393 = and i8 %392, 15
  store i8 %393, ptr %41, align 1, !tbaa !13
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %395 unwind label %454

395:                                              ; preds = %389
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %397 unwind label %454

397:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %44) #8
  %398 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 3)
          to label %399 unwind label %458

399:                                              ; preds = %397
  %400 = load i8, ptr %398, align 1, !tbaa !13
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %44, i8 noundef zeroext %400, i32 noundef 2, i8 noundef zeroext 12)
          to label %401 unwind label %458

401:                                              ; preds = %399
  %402 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %44, i32 0, i32 0
  %403 = getelementptr inbounds %struct.anon, ptr %402, i32 0, i32 1
  %404 = load i8, ptr %403, align 1
  %405 = lshr i8 %404, 4
  store i8 %405, ptr %43, align 1, !tbaa !13
  %406 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %407 unwind label %458

407:                                              ; preds = %401
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %409 unwind label %458

409:                                              ; preds = %407
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %410, i64 6
  %412 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %411, i32 0, i32 0
  %413 = getelementptr inbounds %struct.anon, ptr %412, i32 0, i32 0
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull align 1 dereferenceable(1) %413)
          to label %415 unwind label %458

415:                                              ; preds = %409
  %416 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %414, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %417 unwind label %458

417:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #8
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %418, i64 6
  %420 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %419, i32 0, i32 0
  %421 = getelementptr inbounds %struct.anon, ptr %420, i32 0, i32 1
  %422 = load i8, ptr %421, align 1
  %423 = and i8 %422, 15
  store i8 %423, ptr %45, align 1, !tbaa !13
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %416, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %425 unwind label %462

425:                                              ; preds = %417
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %427 unwind label %462

427:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #8
  %428 = load ptr, ptr %30, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %428, i64 6
  %430 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %429, i32 0, i32 0
  %431 = getelementptr inbounds %struct.anon, ptr %430, i32 0, i32 1
  %432 = load i8, ptr %431, align 1
  %433 = lshr i8 %432, 4
  store i8 %433, ptr %46, align 1, !tbaa !13
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %435 unwind label %466

435:                                              ; preds = %427
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %437 unwind label %466

437:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %438 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %439 unwind label %470

439:                                              ; preds = %437
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %47, i32 noundef 2, ptr noundef @.str.3, i32 noundef 504, ptr noundef %438)
          to label %440 unwind label %470

440:                                              ; preds = %439
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %436)
          to label %441 unwind label %474

441:                                              ; preds = %440
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  store i32 1, ptr %9, align 4
  br label %487

442:                                              ; preds = %372
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %5, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %6, align 4
  br label %485

446:                                              ; preds = %373
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %5, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %6, align 4
  br label %484

450:                                              ; preds = %383, %379, %377, %375
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %5, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %6, align 4
  br label %483

454:                                              ; preds = %395, %389, %387, %385
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %5, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %6, align 4
  br label %482

458:                                              ; preds = %415, %409, %407, %401, %399, %397
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %5, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %6, align 4
  br label %481

462:                                              ; preds = %425, %417
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %5, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %6, align 4
  br label %480

466:                                              ; preds = %435, %427
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %5, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %6, align 4
  br label %479

470:                                              ; preds = %439, %437
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %5, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %6, align 4
  br label %478

474:                                              ; preds = %440
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %5, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %478

478:                                              ; preds = %474, %470
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %479

479:                                              ; preds = %478, %466
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  br label %480

480:                                              ; preds = %479, %462
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  br label %481

481:                                              ; preds = %480, %458
  call void @llvm.lifetime.end.p0(i64 2, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %482

482:                                              ; preds = %481, %454
  call void @llvm.lifetime.end.p0(i64 2, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  br label %483

483:                                              ; preds = %482, %450
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #8
  br label %484

484:                                              ; preds = %483, %446
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %485

485:                                              ; preds = %484, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %524

486:                                              ; preds = %361
  store i32 0, ptr %9, align 4
  br label %487

487:                                              ; preds = %486, %441
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  %488 = load i32, ptr %9, align 4
  switch i32 %488, label %1118 [
    i32 0, label %489
  ]

489:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %51) #8
  %490 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 2)
          to label %491 unwind label %526

491:                                              ; preds = %489
  %492 = load i8, ptr %490, align 1, !tbaa !13
  %493 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
          to label %494 unwind label %526

494:                                              ; preds = %491
  %495 = trunc i32 %493 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %50, i8 noundef zeroext %492, i32 noundef 4, i8 noundef zeroext %495)
          to label %496 unwind label %526

496:                                              ; preds = %494
  %497 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %50, i32 0, i32 0
  %498 = load i16, ptr %497, align 2, !tbaa !13
  %499 = zext i16 %498 to i32
  %500 = load ptr, ptr %30, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %500, i64 4
  %502 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %501, i32 0, i32 0
  %503 = load i16, ptr %502, align 2, !tbaa !13
  %504 = zext i16 %503 to i32
  %505 = icmp eq i32 %499, %504
  br i1 %505, label %506, label %517

506:                                              ; preds = %496
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %51, i16 noundef zeroext 4)
          to label %507 unwind label %530

507:                                              ; preds = %506
  %508 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %51, i32 0, i32 0
  %509 = load i16, ptr %508, align 2, !tbaa !13
  %510 = zext i16 %509 to i32
  %511 = load ptr, ptr %30, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %511, i64 5
  %513 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %512, i32 0, i32 0
  %514 = load i16, ptr %513, align 2, !tbaa !13
  %515 = zext i16 %514 to i32
  %516 = icmp eq i32 %510, %515
  br label %517

517:                                              ; preds = %507, %496
  %518 = phi i1 [ false, %496 ], [ %516, %507 ]
  %519 = zext i1 %518 to i8
  store i8 %519, ptr %49, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 1 dereferenceable(1) %49, ptr noundef null)
          to label %520 unwind label %530

520:                                              ; preds = %517
  call void @llvm.lifetime.end.p0(i64 2, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  %521 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %522 unwind label %535

522:                                              ; preds = %520
  br i1 %521, label %523, label %539

523:                                              ; preds = %522
  br label %685

524:                                              ; preds = %485, %368
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  br label %525

525:                                              ; preds = %524, %364
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %1125

526:                                              ; preds = %494, %491, %489
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %5, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %6, align 4
  br label %534

530:                                              ; preds = %517, %506
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %5, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %51) #8
  br label %534

534:                                              ; preds = %530, %526
  call void @llvm.lifetime.end.p0(i64 2, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %724

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

539:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %540 unwind label %631

540:                                              ; preds = %539
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %542 unwind label %635

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 2, ptr %53) #8
  %543 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 2)
          to label %544 unwind label %639

544:                                              ; preds = %542
  %545 = load i8, ptr %543, align 1, !tbaa !13
  %546 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
          to label %547 unwind label %639

547:                                              ; preds = %544
  %548 = trunc i32 %546 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %53, i8 noundef zeroext %545, i32 noundef 4, i8 noundef zeroext %548)
          to label %549 unwind label %639

549:                                              ; preds = %547
  %550 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %53, i32 0, i32 0
  %551 = getelementptr inbounds %struct.anon, ptr %550, i32 0, i32 0
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull align 1 dereferenceable(1) %551)
          to label %553 unwind label %639

553:                                              ; preds = %549
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %555 unwind label %639

555:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %55) #8
  %556 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 2)
          to label %557 unwind label %643

557:                                              ; preds = %555
  %558 = load i8, ptr %556, align 1, !tbaa !13
  %559 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
          to label %560 unwind label %643

560:                                              ; preds = %557
  %561 = trunc i32 %559 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %55, i8 noundef zeroext %558, i32 noundef 4, i8 noundef zeroext %561)
          to label %562 unwind label %643

562:                                              ; preds = %560
  %563 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %55, i32 0, i32 0
  %564 = getelementptr inbounds %struct.anon, ptr %563, i32 0, i32 1
  %565 = load i8, ptr %564, align 1
  %566 = and i8 %565, 15
  store i8 %566, ptr %54, align 1, !tbaa !13
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %568 unwind label %643

568:                                              ; preds = %562
  %569 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %570 unwind label %643

570:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %57) #8
  %571 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 2)
          to label %572 unwind label %647

572:                                              ; preds = %570
  %573 = load i8, ptr %571, align 1, !tbaa !13
  %574 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
          to label %575 unwind label %647

575:                                              ; preds = %572
  %576 = trunc i32 %574 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %57, i8 noundef zeroext %573, i32 noundef 4, i8 noundef zeroext %576)
          to label %577 unwind label %647

577:                                              ; preds = %575
  %578 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %57, i32 0, i32 0
  %579 = getelementptr inbounds %struct.anon, ptr %578, i32 0, i32 1
  %580 = load i8, ptr %579, align 1
  %581 = lshr i8 %580, 4
  store i8 %581, ptr %56, align 1, !tbaa !13
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %583 unwind label %647

583:                                              ; preds = %577
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %585 unwind label %647

585:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 2, ptr %58) #8
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %58, i16 noundef zeroext 4)
          to label %586 unwind label %651

586:                                              ; preds = %585
  %587 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %58, i32 0, i32 0
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef nonnull align 2 dereferenceable(2) %587)
          to label %589 unwind label %651

589:                                              ; preds = %586
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %591 unwind label %651

591:                                              ; preds = %589
  %592 = load ptr, ptr %30, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %592, i64 4
  %594 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %593, i32 0, i32 0
  %595 = getelementptr inbounds %struct.anon, ptr %594, i32 0, i32 0
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %590, ptr noundef nonnull align 1 dereferenceable(1) %595)
          to label %597 unwind label %651

597:                                              ; preds = %591
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %596, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %599 unwind label %651

599:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  %600 = load ptr, ptr %30, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %600, i64 4
  %602 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %601, i32 0, i32 0
  %603 = getelementptr inbounds %struct.anon, ptr %602, i32 0, i32 1
  %604 = load i8, ptr %603, align 1
  %605 = and i8 %604, 15
  store i8 %605, ptr %59, align 1, !tbaa !13
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %607 unwind label %655

607:                                              ; preds = %599
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %609 unwind label %655

609:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #8
  %610 = load ptr, ptr %30, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %610, i64 4
  %612 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %611, i32 0, i32 0
  %613 = getelementptr inbounds %struct.anon, ptr %612, i32 0, i32 1
  %614 = load i8, ptr %613, align 1
  %615 = lshr i8 %614, 4
  store i8 %615, ptr %60, align 1, !tbaa !13
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %617 unwind label %659

617:                                              ; preds = %609
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %619 unwind label %659

619:                                              ; preds = %617
  %620 = load ptr, ptr %30, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %620, i64 5
  %622 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %621, i32 0, i32 0
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 2 dereferenceable(2) %622)
          to label %624 unwind label %659

624:                                              ; preds = %619
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %623, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %626 unwind label %659

626:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef @.str.40, ptr noundef @.str.25, ptr noundef @.str.26)
          to label %627 unwind label %663

627:                                              ; preds = %626
  %628 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef 2, ptr noundef @.str.3, i32 noundef 508, ptr noundef %628)
          to label %629 unwind label %667

629:                                              ; preds = %627
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %630 unwind label %671

630:                                              ; preds = %629
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %53) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  store i32 1, ptr %9, align 4
  br label %686

631:                                              ; preds = %539
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %5, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %6, align 4
  br label %684

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

639:                                              ; preds = %553, %549, %547, %544, %542
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %5, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %6, align 4
  br label %682

643:                                              ; preds = %568, %562, %560, %557, %555
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %5, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %6, align 4
  br label %681

647:                                              ; preds = %583, %577, %575, %572, %570
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %5, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %6, align 4
  br label %680

651:                                              ; preds = %597, %591, %589, %586, %585
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %5, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %6, align 4
  br label %679

655:                                              ; preds = %607, %599
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %5, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %6, align 4
  br label %678

659:                                              ; preds = %624, %619, %617, %609
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %5, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %6, align 4
  br label %677

663:                                              ; preds = %626
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %5, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %6, align 4
  br label %676

667:                                              ; preds = %627
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %5, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %6, align 4
  br label %675

671:                                              ; preds = %629
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %5, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br label %675

675:                                              ; preds = %671, %667
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %676

676:                                              ; preds = %675, %663
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %677

677:                                              ; preds = %676, %659
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #8
  br label %678

678:                                              ; preds = %677, %655
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  br label %679

679:                                              ; preds = %678, %651
  call void @llvm.lifetime.end.p0(i64 2, ptr %58) #8
  br label %680

680:                                              ; preds = %679, %647
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  br label %681

681:                                              ; preds = %680, %643
  call void @llvm.lifetime.end.p0(i64 2, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  br label %682

682:                                              ; preds = %681, %639
  call void @llvm.lifetime.end.p0(i64 2, ptr %53) #8
  br label %683

683:                                              ; preds = %682, %635
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %684

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

685:                                              ; preds = %523
  store i32 0, ptr %9, align 4
  br label %686

686:                                              ; preds = %685, %630
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  %687 = load i32, ptr %9, align 4
  switch i32 %687, label %1118 [
    i32 0, label %688
  ]

688:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %66) #8
  %689 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 1)
          to label %690 unwind label %725

690:                                              ; preds = %688
  %691 = load i8, ptr %689, align 1, !tbaa !13
  %692 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
          to label %693 unwind label %725

693:                                              ; preds = %690
  %694 = trunc i32 %692 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %65, i8 noundef zeroext %691, i32 noundef 6, i8 noundef zeroext %694)
          to label %695 unwind label %725

695:                                              ; preds = %693
  %696 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %65, i32 0, i32 0
  %697 = load i16, ptr %696, align 2, !tbaa !13
  %698 = zext i16 %697 to i32
  %699 = load ptr, ptr %30, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %699, i64 2
  %701 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %700, i32 0, i32 0
  %702 = load i16, ptr %701, align 2, !tbaa !13
  %703 = zext i16 %702 to i32
  %704 = icmp eq i32 %698, %703
  br i1 %704, label %705, label %716

705:                                              ; preds = %695
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %66, i16 noundef zeroext 3)
          to label %706 unwind label %729

706:                                              ; preds = %705
  %707 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %66, i32 0, i32 0
  %708 = load i16, ptr %707, align 2, !tbaa !13
  %709 = zext i16 %708 to i32
  %710 = load ptr, ptr %30, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %710, i64 3
  %712 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %711, i32 0, i32 0
  %713 = load i16, ptr %712, align 2, !tbaa !13
  %714 = zext i16 %713 to i32
  %715 = icmp eq i32 %709, %714
  br label %716

716:                                              ; preds = %706, %695
  %717 = phi i1 [ false, %695 ], [ %715, %706 ]
  %718 = zext i1 %717 to i8
  store i8 %718, ptr %64, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 1 dereferenceable(1) %64, ptr noundef null)
          to label %719 unwind label %729

719:                                              ; preds = %716
  call void @llvm.lifetime.end.p0(i64 2, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  %720 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %721 unwind label %734

721:                                              ; preds = %719
  br i1 %720, label %722, label %738

722:                                              ; preds = %721
  br label %884

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

724:                                              ; preds = %723, %534
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %1125

725:                                              ; preds = %693, %690, %688
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %5, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %6, align 4
  br label %733

729:                                              ; preds = %716, %705
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %5, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %66) #8
  br label %733

733:                                              ; preds = %729, %725
  call void @llvm.lifetime.end.p0(i64 2, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  br label %923

734:                                              ; preds = %719
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %5, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %6, align 4
  br label %922

738:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %739 unwind label %830

739:                                              ; preds = %738
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %741 unwind label %834

741:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 2, ptr %68) #8
  %742 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 1)
          to label %743 unwind label %838

743:                                              ; preds = %741
  %744 = load i8, ptr %742, align 1, !tbaa !13
  %745 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
          to label %746 unwind label %838

746:                                              ; preds = %743
  %747 = trunc i32 %745 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %68, i8 noundef zeroext %744, i32 noundef 6, i8 noundef zeroext %747)
          to label %748 unwind label %838

748:                                              ; preds = %746
  %749 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %68, i32 0, i32 0
  %750 = getelementptr inbounds %struct.anon, ptr %749, i32 0, i32 0
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 1 dereferenceable(1) %750)
          to label %752 unwind label %838

752:                                              ; preds = %748
  %753 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %751, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %754 unwind label %838

754:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %70) #8
  %755 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 1)
          to label %756 unwind label %842

756:                                              ; preds = %754
  %757 = load i8, ptr %755, align 1, !tbaa !13
  %758 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
          to label %759 unwind label %842

759:                                              ; preds = %756
  %760 = trunc i32 %758 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %70, i8 noundef zeroext %757, i32 noundef 6, i8 noundef zeroext %760)
          to label %761 unwind label %842

761:                                              ; preds = %759
  %762 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %70, i32 0, i32 0
  %763 = getelementptr inbounds %struct.anon, ptr %762, i32 0, i32 1
  %764 = load i8, ptr %763, align 1
  %765 = and i8 %764, 15
  store i8 %765, ptr %69, align 1, !tbaa !13
  %766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %753, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %767 unwind label %842

767:                                              ; preds = %761
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %766, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %769 unwind label %842

769:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #8
  %770 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 1)
          to label %771 unwind label %846

771:                                              ; preds = %769
  %772 = load i8, ptr %770, align 1, !tbaa !13
  %773 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
          to label %774 unwind label %846

774:                                              ; preds = %771
  %775 = trunc i32 %773 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %72, i8 noundef zeroext %772, i32 noundef 6, i8 noundef zeroext %775)
          to label %776 unwind label %846

776:                                              ; preds = %774
  %777 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %72, i32 0, i32 0
  %778 = getelementptr inbounds %struct.anon, ptr %777, i32 0, i32 1
  %779 = load i8, ptr %778, align 1
  %780 = lshr i8 %779, 4
  store i8 %780, ptr %71, align 1, !tbaa !13
  %781 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %768, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %782 unwind label %846

782:                                              ; preds = %776
  %783 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %781, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %784 unwind label %846

784:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 2, ptr %73) #8
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %73, i16 noundef zeroext 3)
          to label %785 unwind label %850

785:                                              ; preds = %784
  %786 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %73, i32 0, i32 0
  %787 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %783, ptr noundef nonnull align 2 dereferenceable(2) %786)
          to label %788 unwind label %850

788:                                              ; preds = %785
  %789 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %787, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %790 unwind label %850

790:                                              ; preds = %788
  %791 = load ptr, ptr %30, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %791, i64 2
  %793 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %792, i32 0, i32 0
  %794 = getelementptr inbounds %struct.anon, ptr %793, i32 0, i32 0
  %795 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %789, ptr noundef nonnull align 1 dereferenceable(1) %794)
          to label %796 unwind label %850

796:                                              ; preds = %790
  %797 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %795, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %798 unwind label %850

798:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #8
  %799 = load ptr, ptr %30, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %799, i64 2
  %801 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %800, i32 0, i32 0
  %802 = getelementptr inbounds %struct.anon, ptr %801, i32 0, i32 1
  %803 = load i8, ptr %802, align 1
  %804 = and i8 %803, 15
  store i8 %804, ptr %74, align 1, !tbaa !13
  %805 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %797, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %806 unwind label %854

806:                                              ; preds = %798
  %807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %805, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %808 unwind label %854

808:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #8
  %809 = load ptr, ptr %30, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %809, i64 2
  %811 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %810, i32 0, i32 0
  %812 = getelementptr inbounds %struct.anon, ptr %811, i32 0, i32 1
  %813 = load i8, ptr %812, align 1
  %814 = lshr i8 %813, 4
  store i8 %814, ptr %75, align 1, !tbaa !13
  %815 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %807, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %816 unwind label %858

816:                                              ; preds = %808
  %817 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %815, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %818 unwind label %858

818:                                              ; preds = %816
  %819 = load ptr, ptr %30, align 8, !tbaa !5
  %820 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %819, i64 3
  %821 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %820, i32 0, i32 0
  %822 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %817, ptr noundef nonnull align 2 dereferenceable(2) %821)
          to label %823 unwind label %858

823:                                              ; preds = %818
  %824 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %822, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %825 unwind label %858

825:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef @.str.41, ptr noundef @.str.25, ptr noundef @.str.26)
          to label %826 unwind label %862

826:                                              ; preds = %825
  %827 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 2, ptr noundef @.str.3, i32 noundef 512, ptr noundef %827)
          to label %828 unwind label %866

828:                                              ; preds = %826
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %829 unwind label %870

829:                                              ; preds = %828
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %68) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  store i32 1, ptr %9, align 4
  br label %885

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

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

838:                                              ; preds = %752, %748, %746, %743, %741
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %5, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %6, align 4
  br label %881

842:                                              ; preds = %767, %761, %759, %756, %754
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %5, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %6, align 4
  br label %880

846:                                              ; preds = %782, %776, %774, %771, %769
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %5, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %6, align 4
  br label %879

850:                                              ; preds = %796, %790, %788, %785, %784
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %5, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %6, align 4
  br label %878

854:                                              ; preds = %806, %798
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %5, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %6, align 4
  br label %877

858:                                              ; preds = %823, %818, %816, %808
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %5, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %6, align 4
  br label %876

862:                                              ; preds = %825
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %5, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %6, align 4
  br label %875

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

870:                                              ; preds = %828
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %5, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %874

874:                                              ; preds = %870, %866
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  br label %875

875:                                              ; preds = %874, %862
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %876

876:                                              ; preds = %875, %858
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  br label %877

877:                                              ; preds = %876, %854
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  br label %878

878:                                              ; preds = %877, %850
  call void @llvm.lifetime.end.p0(i64 2, ptr %73) #8
  br label %879

879:                                              ; preds = %878, %846
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %880

880:                                              ; preds = %879, %842
  call void @llvm.lifetime.end.p0(i64 2, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #8
  br label %881

881:                                              ; preds = %880, %838
  call void @llvm.lifetime.end.p0(i64 2, ptr %68) #8
  br label %882

882:                                              ; preds = %881, %834
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  br label %883

883:                                              ; preds = %882, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %922

884:                                              ; preds = %722
  store i32 0, ptr %9, align 4
  br label %885

885:                                              ; preds = %884, %829
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  %886 = load i32, ptr %9, align 4
  switch i32 %886, label %1118 [
    i32 0, label %887
  ]

887:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %81) #8
  %888 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 0)
          to label %889 unwind label %924

889:                                              ; preds = %887
  %890 = load i8, ptr %888, align 1, !tbaa !13
  %891 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
          to label %892 unwind label %924

892:                                              ; preds = %889
  %893 = trunc i32 %891 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %80, i8 noundef zeroext %890, i32 noundef 6, i8 noundef zeroext %893)
          to label %894 unwind label %924

894:                                              ; preds = %892
  %895 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %80, i32 0, i32 0
  %896 = load i16, ptr %895, align 2, !tbaa !13
  %897 = zext i16 %896 to i32
  %898 = load ptr, ptr %30, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %898, i64 0
  %900 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %899, i32 0, i32 0
  %901 = load i16, ptr %900, align 2, !tbaa !13
  %902 = zext i16 %901 to i32
  %903 = icmp eq i32 %897, %902
  br i1 %903, label %904, label %915

904:                                              ; preds = %894
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %81, i16 noundef zeroext 4)
          to label %905 unwind label %928

905:                                              ; preds = %904
  %906 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %81, i32 0, i32 0
  %907 = load i16, ptr %906, align 2, !tbaa !13
  %908 = zext i16 %907 to i32
  %909 = load ptr, ptr %30, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %909, i64 1
  %911 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %910, i32 0, i32 0
  %912 = load i16, ptr %911, align 2, !tbaa !13
  %913 = zext i16 %912 to i32
  %914 = icmp eq i32 %908, %913
  br label %915

915:                                              ; preds = %905, %894
  %916 = phi i1 [ false, %894 ], [ %914, %905 ]
  %917 = zext i1 %916 to i8
  store i8 %917, ptr %79, align 1, !tbaa !14
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 1 dereferenceable(1) %79, ptr noundef null)
          to label %918 unwind label %928

918:                                              ; preds = %915
  call void @llvm.lifetime.end.p0(i64 2, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  %919 = invoke noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
          to label %920 unwind label %933

920:                                              ; preds = %918
  br i1 %919, label %921, label %937

921:                                              ; preds = %920
  br label %1083

922:                                              ; preds = %883, %734
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  br label %923

923:                                              ; preds = %922, %733
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  br label %1125

924:                                              ; preds = %892, %889, %887
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %5, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %6, align 4
  br label %932

928:                                              ; preds = %915, %904
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %5, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %81) #8
  br label %932

932:                                              ; preds = %928, %924
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  br label %1124

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

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

938:                                              ; preds = %937
  %939 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %940 unwind label %1033

940:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 2, ptr %83) #8
  %941 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 0)
          to label %942 unwind label %1037

942:                                              ; preds = %940
  %943 = load i8, ptr %941, align 1, !tbaa !13
  %944 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
          to label %945 unwind label %1037

945:                                              ; preds = %942
  %946 = trunc i32 %944 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %83, i8 noundef zeroext %943, i32 noundef 6, i8 noundef zeroext %946)
          to label %947 unwind label %1037

947:                                              ; preds = %945
  %948 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %83, i32 0, i32 0
  %949 = getelementptr inbounds %struct.anon, ptr %948, i32 0, i32 0
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %939, ptr noundef nonnull align 1 dereferenceable(1) %949)
          to label %951 unwind label %1037

951:                                              ; preds = %947
  %952 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %950, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %953 unwind label %1037

953:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %85) #8
  %954 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 0)
          to label %955 unwind label %1041

955:                                              ; preds = %953
  %956 = load i8, ptr %954, align 1, !tbaa !13
  %957 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
          to label %958 unwind label %1041

958:                                              ; preds = %955
  %959 = trunc i32 %957 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %85, i8 noundef zeroext %956, i32 noundef 6, i8 noundef zeroext %959)
          to label %960 unwind label %1041

960:                                              ; preds = %958
  %961 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %85, i32 0, i32 0
  %962 = getelementptr inbounds %struct.anon, ptr %961, i32 0, i32 1
  %963 = load i8, ptr %962, align 1
  %964 = and i8 %963, 15
  store i8 %964, ptr %84, align 1, !tbaa !13
  %965 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %952, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %966 unwind label %1041

966:                                              ; preds = %960
  %967 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %965, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %968 unwind label %1041

968:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 2, ptr %87) #8
  %969 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 0)
          to label %970 unwind label %1045

970:                                              ; preds = %968
  %971 = load i8, ptr %969, align 1, !tbaa !13
  %972 = invoke noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
          to label %973 unwind label %1045

973:                                              ; preds = %970
  %974 = trunc i32 %972 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %87, i8 noundef zeroext %971, i32 noundef 6, i8 noundef zeroext %974)
          to label %975 unwind label %1045

975:                                              ; preds = %973
  %976 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %87, i32 0, i32 0
  %977 = getelementptr inbounds %struct.anon, ptr %976, i32 0, i32 1
  %978 = load i8, ptr %977, align 1
  %979 = lshr i8 %978, 4
  store i8 %979, ptr %86, align 1, !tbaa !13
  %980 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %967, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %981 unwind label %1045

981:                                              ; preds = %975
  %982 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %980, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %983 unwind label %1045

983:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 2, ptr %88) #8
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %88, i16 noundef zeroext 4)
          to label %984 unwind label %1049

984:                                              ; preds = %983
  %985 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %88, i32 0, i32 0
  %986 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %982, ptr noundef nonnull align 2 dereferenceable(2) %985)
          to label %987 unwind label %1049

987:                                              ; preds = %984
  %988 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %986, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %989 unwind label %1049

989:                                              ; preds = %987
  %990 = load ptr, ptr %30, align 8, !tbaa !5
  %991 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %990, i64 0
  %992 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %991, i32 0, i32 0
  %993 = getelementptr inbounds %struct.anon, ptr %992, i32 0, i32 0
  %994 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %988, ptr noundef nonnull align 1 dereferenceable(1) %993)
          to label %995 unwind label %1049

995:                                              ; preds = %989
  %996 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %994, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %997 unwind label %1049

997:                                              ; preds = %995
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %998, i64 0
  %1000 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %999, i32 0, i32 0
  %1001 = getelementptr inbounds %struct.anon, ptr %1000, i32 0, i32 1
  %1002 = load i8, ptr %1001, align 1
  %1003 = and i8 %1002, 15
  store i8 %1003, ptr %89, align 1, !tbaa !13
  %1004 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %996, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %1005 unwind label %1053

1005:                                             ; preds = %997
  %1006 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %1004, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %1007 unwind label %1053

1007:                                             ; preds = %1005
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #8
  %1008 = load ptr, ptr %30, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %1008, i64 0
  %1010 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %1009, i32 0, i32 0
  %1011 = getelementptr inbounds %struct.anon, ptr %1010, i32 0, i32 1
  %1012 = load i8, ptr %1011, align 1
  %1013 = lshr i8 %1012, 4
  store i8 %1013, ptr %90, align 1, !tbaa !13
  %1014 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %1006, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %1015 unwind label %1057

1015:                                             ; preds = %1007
  %1016 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %1014, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %1017 unwind label %1057

1017:                                             ; preds = %1015
  %1018 = load ptr, ptr %30, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %1018, i64 1
  %1020 = getelementptr inbounds %"struct.NativeJIT::UnwindCode", ptr %1019, i32 0, i32 0
  %1021 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %1016, ptr noundef nonnull align 2 dereferenceable(2) %1020)
          to label %1022 unwind label %1057

1022:                                             ; preds = %1017
  %1023 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %1021, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %1024 unwind label %1057

1024:                                             ; preds = %1022
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef @.str.42, ptr noundef @.str.25, ptr noundef @.str.26)
          to label %1025 unwind label %1061

1025:                                             ; preds = %1024
  %1026 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %91, i32 noundef 2, ptr noundef @.str.3, i32 noundef 516, ptr noundef %1026)
          to label %1027 unwind label %1065

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

1028:                                             ; preds = %1027
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %83) #8
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  store i32 1, ptr %9, align 4
  br label %1084

1029:                                             ; preds = %937
  %1030 = landingpad { ptr, i32 }
          cleanup
  %1031 = extractvalue { ptr, i32 } %1030, 0
  store ptr %1031, ptr %5, align 8
  %1032 = extractvalue { ptr, i32 } %1030, 1
  store i32 %1032, ptr %6, align 4
  br label %1082

1033:                                             ; preds = %938
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %5, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %6, align 4
  br label %1081

1037:                                             ; preds = %951, %947, %945, %942, %940
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %5, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %6, align 4
  br label %1080

1041:                                             ; preds = %966, %960, %958, %955, %953
  %1042 = landingpad { ptr, i32 }
          cleanup
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %5, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %6, align 4
  br label %1079

1045:                                             ; preds = %981, %975, %973, %970, %968
  %1046 = landingpad { ptr, i32 }
          cleanup
  %1047 = extractvalue { ptr, i32 } %1046, 0
  store ptr %1047, ptr %5, align 8
  %1048 = extractvalue { ptr, i32 } %1046, 1
  store i32 %1048, ptr %6, align 4
  br label %1078

1049:                                             ; preds = %995, %989, %987, %984, %983
  %1050 = landingpad { ptr, i32 }
          cleanup
  %1051 = extractvalue { ptr, i32 } %1050, 0
  store ptr %1051, ptr %5, align 8
  %1052 = extractvalue { ptr, i32 } %1050, 1
  store i32 %1052, ptr %6, align 4
  br label %1077

1053:                                             ; preds = %1005, %997
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %5, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %6, align 4
  br label %1076

1057:                                             ; preds = %1022, %1017, %1015, %1007
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %5, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %6, align 4
  br label %1075

1061:                                             ; preds = %1024
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %5, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %6, align 4
  br label %1074

1065:                                             ; preds = %1025
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %5, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %6, align 4
  br label %1073

1069:                                             ; preds = %1027
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %5, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %6, align 4
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %1073

1073:                                             ; preds = %1069, %1065
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %1074

1074:                                             ; preds = %1073, %1061
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1075

1075:                                             ; preds = %1074, %1057
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  br label %1076

1076:                                             ; preds = %1075, %1053
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %1077

1077:                                             ; preds = %1076, %1049
  call void @llvm.lifetime.end.p0(i64 2, ptr %88) #8
  br label %1078

1078:                                             ; preds = %1077, %1045
  call void @llvm.lifetime.end.p0(i64 2, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  br label %1079

1079:                                             ; preds = %1078, %1041
  call void @llvm.lifetime.end.p0(i64 2, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  br label %1080

1080:                                             ; preds = %1079, %1037
  call void @llvm.lifetime.end.p0(i64 2, ptr %83) #8
  br label %1081

1081:                                             ; preds = %1080, %1033
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %1082

1082:                                             ; preds = %1081, %1029
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %1123

1083:                                             ; preds = %921
  store i32 0, ptr %9, align 4
  br label %1084

1084:                                             ; preds = %1083, %1028
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  %1085 = load i32, ptr %9, align 4
  switch i32 %1085, label %1118 [
    i32 0, label %1086
  ]

1086:                                             ; preds = %1084
  %1087 = load ptr, ptr %4, align 8, !tbaa !5
  %1088 = load ptr, ptr %1087, align 8, !tbaa !11
  %1089 = getelementptr inbounds ptr, ptr %1088, i64 3
  %1090 = load ptr, ptr %1089, align 8
  invoke void %1090(ptr noundef nonnull align 8 dereferenceable(133) %1087)
          to label %1091 unwind label %314

1091:                                             ; preds = %1086
  %1092 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %93, ptr align 4 @_ZN9NativeJIT6xmm11sE, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %94, ptr align 4 @_ZN9NativeJIT3rspE, i64 4, i1 false)
  %1093 = getelementptr inbounds %"class.NativeJIT::Register.49", ptr %93, i32 0, i32 0
  %1094 = load i32, ptr %1093, align 4
  %1095 = getelementptr inbounds %"class.NativeJIT::Register", ptr %94, i32 0, i32 0
  %1096 = load i32, ptr %1095, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %1092, i32 %1094, i32 %1096, i32 noundef 64)
          to label %1097 unwind label %314

1097:                                             ; preds = %1091
  %1098 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %95, ptr align 4 @_ZN9NativeJIT6xmm10sE, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %96, ptr align 4 @_ZN9NativeJIT3rspE, i64 4, i1 false)
  %1099 = getelementptr inbounds %"class.NativeJIT::Register.49", ptr %95, i32 0, i32 0
  %1100 = load i32, ptr %1099, align 4
  %1101 = getelementptr inbounds %"class.NativeJIT::Register", ptr %96, i32 0, i32 0
  %1102 = load i32, ptr %1101, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %1098, i32 %1100, i32 %1102, i32 noundef 48)
          to label %1103 unwind label %314

1103:                                             ; preds = %1097
  %1104 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %97, ptr align 4 @_ZN9NativeJIT3rbpE, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 4 @_ZN9NativeJIT3rspE, i64 4, i1 false)
  %1105 = getelementptr inbounds %"class.NativeJIT::Register", ptr %97, i32 0, i32 0
  %1106 = load i32, ptr %1105, align 4
  %1107 = getelementptr inbounds %"class.NativeJIT::Register", ptr %98, i32 0, i32 0
  %1108 = load i32, ptr %1107, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE17ELj8ELb0EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %1104, i32 %1106, i32 %1108, i32 noundef 32)
          to label %1109 unwind label %314

1109:                                             ; preds = %1103
  %1110 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %99, ptr align 4 @_ZN9NativeJIT3rspE, i64 4, i1 false)
  %1111 = getelementptr inbounds %"class.NativeJIT::Register", ptr %99, i32 0, i32 0
  %1112 = load i32, ptr %1111, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator13EmitImmediateILNS_6OpCodeE0ELj8ELb0EiEEvNS_8RegisterIXT0_EXT1_EEET2_(ptr noundef nonnull align 8 dereferenceable(104) %1110, i32 %1112, i32 noundef 104)
          to label %1113 unwind label %314

1113:                                             ; preds = %1109
  %1114 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE28EEEvv(ptr noundef nonnull align 8 dereferenceable(104) %1114)
          to label %1115 unwind label %314

1115:                                             ; preds = %1113
  %1116 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyEpilogERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280) %100, ptr noundef nonnull align 8 dereferenceable(112) %7, ptr noundef nonnull align 8 dereferenceable(133) %1116)
          to label %1117 unwind label %314

1117:                                             ; preds = %1115
  store i32 0, ptr %9, align 4
  br label %1118

1118:                                             ; preds = %1117, %1084, %885, %686, %487, %347
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %1119

1119:                                             ; preds = %1118, %275, %267
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %1120

1120:                                             ; preds = %1119, %207, %156, %148
  call void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @_ZNSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  %1121 = load i32, ptr %9, align 4
  switch i32 %1121, label %1136 [
    i32 0, label %1122
    i32 1, label %1122
  ]

1122:                                             ; preds = %1120, %1120
  ret void

1123:                                             ; preds = %1082, %933
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  br label %1124

1124:                                             ; preds = %1123, %932
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  br label %1125

1125:                                             ; preds = %1124, %923, %724, %525, %363, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %1126

1126:                                             ; preds = %1125, %310
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %1127

1127:                                             ; preds = %1126, %289, %270, %250, %246, %242, %238, %234
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %1128

1128:                                             ; preds = %1127, %233, %170, %151, %131
  call void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #8
  br label %1129

1129:                                             ; preds = %1128, %127
  call void @llvm.lifetime.end.p0(i64 112, ptr %7) #8
  br label %1130

1130:                                             ; preds = %1129, %123
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @_ZNSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %1131

1131:                                             ; preds = %1130
  %1132 = load ptr, ptr %5, align 8
  %1133 = load i32, ptr %6, align 4
  %1134 = insertvalue { ptr, i32 } poison, ptr %1132, 0
  %1135 = insertvalue { ptr, i32 } %1134, i32 %1133, 1
  resume { ptr, i32 } %1135

1136:                                             ; preds = %1120
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104), i32, i32, i32 noundef) #3 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"bool", !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.NativeJIT::Register" = type { i32 }
%"class.NativeJIT::Register.40" = type { i32 }
%"class.NativeJIT::Register.49" = type { i32 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.testing::AssertionResult" = type { i8, %"class.testing::internal::scoped_ptr.21" }
%"class.testing::internal::scoped_ptr.21" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.NativeJIT::FunctionSpecification" = type { i32, %"class.Allocators::StlAllocator", %"class.std::vector.18", %"class.std::vector.18", %"class.std::vector.18" }
%"class.Allocators::StlAllocator" = type { ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl" = type { %"class.Allocators::StlAllocator", %"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, Allocators::StlAllocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.testing::internal::HasNewFatalFailureHelper" = type { %"class.testing::TestPartResultReporterInterface", i8, ptr }
%"class.testing::TestPartResultReporterInterface" = type { ptr }
%"class.testing::Message" = type { %"class.testing::internal::scoped_ptr.20" }
%"class.testing::internal::scoped_ptr.20" = type { ptr }
%"class.testing::internal::AssertHelper" = type { ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = 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.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.41 = type { i8 }
%class.anon.43 = type { i8 }
%class.anon.45 = type { i8 }
%class.anon.47 = type { i8 }
%"struct.NativeJIT::UnwindCode" = type { %union.anon.27 }
%union.anon.27 = type { i16 }

@.str.3 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZN9NativeJIT3rspE = external local_unnamed_addr global %"class.NativeJIT::Register", align 4
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZN9NativeJIT3rbpE = external global %"class.NativeJIT::Register", align 4
@_ZN9NativeJIT5xmm10E = external global %"class.NativeJIT::Register.40", align 4
@_ZN9NativeJIT5xmm11E = external global %"class.NativeJIT::Register.40", align 4
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [202 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [204 x i8], align 1
@_ZN9NativeJIT6xmm11sE = external local_unnamed_addr global %"class.NativeJIT::Register.49", align 4
@_ZN9NativeJIT6xmm10sE = external local_unnamed_addr global %"class.NativeJIT::Register.49", align 4

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

declare i32 @__gxx_personality_v0(...)

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

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

declare void @_ZN9NativeJIT11TestFixture8GetSetupEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #2

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

declare noundef nonnull align 8 dereferenceable(133) ptr @_ZN9NativeJIT13TestCaseSetup7GetCodeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN9NativeJIT13TestCaseSetup12GetAllocatorEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

declare noundef ptr @_ZNK9NativeJIT11TestFixture20GetDiagnosticsStreamEv(ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #2

declare void @_ZN9NativeJIT21FunctionSpecificationC1ERN10Allocators10IAllocatorEijjjNS0_16BaseRegisterTypeEPSo(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() local_unnamed_addr #2

declare void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest18ValidateUnwindInfoERKNS_21FunctionSpecificationE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

; Function Attrs: nounwind
declare void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

declare void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #2

declare void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; 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: mustprogress uwtable
declare dso_local void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind noalias writable sret(%"class.testing::AssertionResult") align 8, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

declare noundef i32 @_ZNK9NativeJIT21FunctionSpecification22GetOffsetToOriginalRspEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(133), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyPrologERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(133)) local_unnamed_addr #3 align 2

declare noundef ptr @_ZNK9NativeJIT21FunctionSpecification19GetUnwindInfoBufferEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #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 #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

declare void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2), i8 noundef zeroext, i32 noundef, i8 noundef zeroext) unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(25)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(7)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator13EmitImmediateILNS_6OpCodeE0ELj8ELb0EiEEvNS_8RegisterIXT0_EXT1_EEET2_(ptr noundef nonnull align 8 dereferenceable(104), i32, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE28EEEvv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyEpilogERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(133)) local_unnamed_addr #3 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

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

declare void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2), i16 noundef zeroext) unnamed_addr #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 #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 2 dereferenceable(2)) local_unnamed_addr #6 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 #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_(ptr, ptr) local_unnamed_addr #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE17ELj8ELb0EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104), i32, i32, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NativeJIT15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(280) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::unique_ptr", align 8
  %3 = alloca %"class.NativeJIT::FunctionSpecification", align 8
  %4 = alloca %"class.testing::internal::HasNewFatalFailureHelper", align 8
  %5 = alloca %"class.testing::Message", align 8
  %6 = alloca %"class.testing::internal::AssertHelper", align 8
  %7 = alloca %"class.testing::AssertionResult", align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.testing::Message", align 8
  %11 = alloca %"class.testing::internal::AssertHelper", align 8
  %12 = alloca %"class.std::vector.22", align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.41, align 1
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.43, align 1
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.45, align 1
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.47, align 1
  %21 = alloca %"class.testing::internal::HasNewFatalFailureHelper", align 8
  %22 = alloca %"class.testing::Message", align 8
  %23 = alloca %"class.testing::internal::AssertHelper", align 8
  %24 = alloca %"class.testing::AssertionResult", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"class.testing::Message", align 8
  %27 = alloca %"class.testing::internal::AssertHelper", align 8
  %28 = alloca %"class.testing::AssertionResult", align 8
  %29 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %30 = alloca %"class.testing::Message", align 8
  %31 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %32 = alloca i8, align 1
  %33 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %34 = alloca i8, align 1
  %35 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca %"class.testing::internal::AssertHelper", align 8
  %39 = alloca %"class.testing::AssertionResult", align 8
  %40 = alloca i8, align 1
  %41 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %42 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %43 = alloca %"class.testing::Message", align 8
  %44 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %45 = alloca i8, align 1
  %46 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %47 = alloca i8, align 1
  %48 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %49 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %50 = alloca i8, align 1
  %51 = alloca i8, align 1
  %52 = alloca %"class.testing::internal::AssertHelper", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.testing::AssertionResult", align 8
  %55 = alloca i8, align 1
  %56 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %57 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %58 = alloca %"class.testing::Message", align 8
  %59 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %60 = alloca i8, align 1
  %61 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %62 = alloca i8, align 1
  %63 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %64 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %65 = alloca i8, align 1
  %66 = alloca i8, align 1
  %67 = alloca %"class.testing::internal::AssertHelper", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.testing::AssertionResult", align 8
  %70 = alloca i8, align 1
  %71 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %72 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %73 = alloca %"class.testing::Message", align 8
  %74 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %75 = alloca i8, align 1
  %76 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %77 = alloca i8, align 1
  %78 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %79 = alloca %"struct.NativeJIT::UnwindCode", align 2
  %80 = alloca i8, align 1
  %81 = alloca i8, align 1
  %82 = alloca %"class.testing::internal::AssertHelper", align 8
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  call void @_ZN9NativeJIT11TestFixture8GetSetupEv(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr") align 8 %2, ptr noundef nonnull align 8 dereferenceable(256) %0)
  %84 = call noundef ptr @_ZNKSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  %85 = invoke noundef nonnull align 8 dereferenceable(133) ptr @_ZN9NativeJIT13TestCaseSetup7GetCodeEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %86 unwind label %103

86:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %3) #7
  %87 = call noundef ptr @_ZNKSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9NativeJIT13TestCaseSetup12GetAllocatorEv(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %89 unwind label %105

89:                                               ; preds = %86
  %90 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE7GetMaskEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
  %91 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE7GetMaskEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
  %92 = invoke noundef ptr @_ZNK9NativeJIT11TestFixture20GetDiagnosticsStreamEv(ptr noundef nonnull align 8 dereferenceable(256) %0)
          to label %93 unwind label %105

93:                                               ; preds = %89
  %94 = or i32 %91, %90
  invoke void @_ZN9NativeJIT21FunctionSpecificationC1ERN10Allocators10IAllocatorEijjjNS0_16BaseRegisterTypeEPSo(ptr noundef nonnull align 8 dereferenceable(112) %3, ptr noundef nonnull align 8 dereferenceable(8) %88, i32 noundef 1, i32 noundef 2, i32 noundef 0, i32 noundef %94, i32 noundef 1, ptr noundef %92)
          to label %95 unwind label %105

95:                                               ; preds = %93
  %96 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %97 unwind label %107

97:                                               ; preds = %95
  br i1 %96, label %98, label %116

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #7
  invoke void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %99 unwind label %109

99:                                               ; preds = %98
  %100 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %101 unwind label %111

101:                                              ; preds = %99
  br i1 %100, label %102, label %113

102:                                              ; preds = %101
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest18ValidateUnwindInfoERKNS_21FunctionSpecificationE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(112) %3)
          to label %113 unwind label %111

103:                                              ; preds = %1
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %725

105:                                              ; preds = %93, %89, %86
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %724

107:                                              ; preds = %95
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %723

109:                                              ; preds = %98
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %115

111:                                              ; preds = %102, %99
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  br label %115

113:                                              ; preds = %102, %101
  %114 = call noundef zeroext i1 @_ZNK7testing8internal24HasNewFatalFailureHelper21has_new_fatal_failureEv(ptr noundef nonnull align 8 dereferenceable(24) %4)
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  br i1 %114, label %116, label %128

115:                                              ; preds = %111, %109
  %.pn = phi { ptr, i32 } [ %112, %111 ], [ %110, %109 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  br label %723

116:                                              ; preds = %113, %97
  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 %117 unwind label %120

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 461, ptr noundef nonnull @.str.4)
          to label %118 unwind label %122

118:                                              ; preds = %117
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %119 unwind label %124

119:                                              ; preds = %118
  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 %720

120:                                              ; preds = %116
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %127

122:                                              ; preds = %117
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %126

124:                                              ; preds = %118
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  br label %126

126:                                              ; preds = %124, %122
  %.pn132 = phi { ptr, i32 } [ %125, %124 ], [ %123, %122 ]
  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 %127

127:                                              ; preds = %126, %120
  %.pn132.pn = phi { ptr, i32 } [ %.pn132, %126 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  br label %723

128:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  store i32 104, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %129 = invoke noundef i32 @_ZNK9NativeJIT21FunctionSpecification22GetOffsetToOriginalRspEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
          to label %130 unwind label %133

130:                                              ; preds = %128
  store i32 %129, ptr %9, align 4, !tbaa !5
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %7, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.6, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %131 unwind label %133

131:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  %132 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  br i1 %132, label %149, label %135

133:                                              ; preds = %130, %128
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %165

135:                                              ; preds = %131
  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 %136 unwind label %141

136:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %137 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %138 unwind label %143

138:                                              ; preds = %136
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 463, ptr noundef %137)
          to label %139 unwind label %143

139:                                              ; preds = %138
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %140 unwind label %145

140:                                              ; preds = %139
  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
  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 %720

141:                                              ; preds = %135
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %148

143:                                              ; preds = %138, %136
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %139
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br label %147

147:                                              ; preds = %145, %143
  %.pn135 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  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 %148

148:                                              ; preds = %147, %141
  %.pn135.pn = phi { ptr, i32 } [ %.pn135, %147 ], [ %142, %141 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  br label %165

149:                                              ; preds = %131
  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 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %150 = load ptr, ptr %85, align 8, !tbaa !9
  %151 = getelementptr inbounds i8, ptr %150, i64 24
  %152 = load ptr, ptr %151, align 8
  invoke void %152(ptr noundef nonnull align 8 dereferenceable(133) %85)
          to label %153 unwind label %166

153:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(133) %85, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %154 unwind label %168

154:                                              ; preds = %153
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #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 @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(133) %85, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %155 unwind label %170

155:                                              ; preds = %154
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #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.start.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(133) %85, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %156 unwind label %172

156:                                              ; preds = %155
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  call void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest19EmitAndRecordOffsetERNS_14FunctionBufferERKSt8functionIFvS3_EERSt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(133) %85, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %157 unwind label %174

157:                                              ; preds = %156
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  %158 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %159 unwind label %166

159:                                              ; preds = %157
  br i1 %158, label %160, label %183

160:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #7
  invoke void @_ZN7testing8internal24HasNewFatalFailureHelperC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %161 unwind label %176

161:                                              ; preds = %160
  %162 = invoke noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv()
          to label %163 unwind label %178

163:                                              ; preds = %161
  br i1 %162, label %164, label %180

164:                                              ; preds = %163
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyPrologERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(112) %3, ptr noundef nonnull align 8 dereferenceable(133) %85)
          to label %180 unwind label %178

165:                                              ; preds = %148, %133
  %.pn135.pn.pn = phi { ptr, i32 } [ %.pn135.pn, %148 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %723

166:                                              ; preds = %157, %149
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %722

168:                                              ; preds = %153
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %722

170:                                              ; preds = %154
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #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
  br label %722

172:                                              ; preds = %155
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %722

174:                                              ; preds = %156
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %722

176:                                              ; preds = %160
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %182

178:                                              ; preds = %164, %161
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  br label %182

180:                                              ; preds = %164, %163
  %181 = call noundef zeroext i1 @_ZNK7testing8internal24HasNewFatalFailureHelper21has_new_fatal_failureEv(ptr noundef nonnull align 8 dereferenceable(24) %21)
  call void @_ZN7testing8internal24HasNewFatalFailureHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  br i1 %181, label %183, label %195

182:                                              ; preds = %178, %176
  %.pn139 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  br label %722

183:                                              ; preds = %180, %159
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %184 unwind label %187

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 493, ptr noundef nonnull @.str.7)
          to label %185 unwind label %189

185:                                              ; preds = %184
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %186 unwind label %191

186:                                              ; preds = %185
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %719

187:                                              ; preds = %183
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %194

189:                                              ; preds = %184
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %193

191:                                              ; preds = %185
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %193

193:                                              ; preds = %191, %189
  %.pn141 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br label %194

194:                                              ; preds = %193, %187
  %.pn141.pn = phi { ptr, i32 } [ %.pn141, %193 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %722

195:                                              ; preds = %180
  %196 = invoke noundef ptr @_ZNK9NativeJIT21FunctionSpecification19GetUnwindInfoBufferEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
          to label %197 unwind label %205

197:                                              ; preds = %195
  %198 = getelementptr inbounds i8, ptr %196, i64 4
  %199 = call ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %200 = call ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  invoke void @_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_(ptr %199, ptr %200)
          to label %201 unwind label %207

201:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  store i32 7, ptr %25, align 4, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %196, i64 2
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIihEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %24, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 1 dereferenceable(1) %202)
          to label %203 unwind label %209

203:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  %204 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  br i1 %204, label %225, label %211

205:                                              ; preds = %195
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %722

207:                                              ; preds = %718, %717, %716, %715, %714, %713, %709, %197
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %722

209:                                              ; preds = %201
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  br label %233

211:                                              ; preds = %203
  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 %212 unwind label %217

212:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %213 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %214 unwind label %219

214:                                              ; preds = %212
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 502, ptr noundef %213)
          to label %215 unwind label %219

215:                                              ; preds = %214
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %216 unwind label %221

216:                                              ; preds = %215
  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
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  br label %719

217:                                              ; preds = %211
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %224

219:                                              ; preds = %214, %212
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %215
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br label %223

223:                                              ; preds = %221, %219
  %.pn144 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  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 %224

224:                                              ; preds = %223, %217
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %223 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  br label %233

225:                                              ; preds = %203
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %29) #7
  %226 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 3)
          to label %227 unwind label %234

227:                                              ; preds = %225
  %228 = load i8, ptr %226, align 1, !tbaa !11
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %29, i8 noundef zeroext %228, i32 noundef 2, i8 noundef zeroext 12)
          to label %229 unwind label %234

229:                                              ; preds = %227
  %230 = getelementptr inbounds i8, ptr %196, i64 16
  invoke void @_ZN7testing8internal8EqHelperILb0EE7CompareIttEENS_15AssertionResultEPKcS6_RKT_RKT0_(ptr dead_on_unwind nonnull writable sret(%"class.testing::AssertionResult") align 8 %28, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.39, ptr noundef nonnull align 2 dereferenceable(2) %29, ptr noundef nonnull align 2 dereferenceable(2) %230)
          to label %231 unwind label %234

231:                                              ; preds = %229
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %29) #7
  %232 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  br i1 %232, label %317, label %236

233:                                              ; preds = %224, %209
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %224 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  br label %722

234:                                              ; preds = %229, %227, %225
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %29) #7
  br label %339

236:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %237 unwind label %291

237:                                              ; preds = %236
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %239 unwind label %293

239:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %31) #7
  %240 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 3)
          to label %241 unwind label %295

241:                                              ; preds = %239
  %242 = load i8, ptr %240, align 1, !tbaa !11
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %31, i8 noundef zeroext %242, i32 noundef 2, i8 noundef zeroext 12)
          to label %243 unwind label %295

243:                                              ; preds = %241
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %245 unwind label %295

245:                                              ; preds = %243
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %247 unwind label %295

247:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %33) #7
  %248 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 3)
          to label %249 unwind label %297

249:                                              ; preds = %247
  %250 = load i8, ptr %248, align 1, !tbaa !11
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %33, i8 noundef zeroext %250, i32 noundef 2, i8 noundef zeroext 12)
          to label %251 unwind label %297

251:                                              ; preds = %249
  %252 = getelementptr inbounds i8, ptr %33, i64 1
  %253 = load i8, ptr %252, align 1
  %254 = and i8 %253, 15
  store i8 %254, ptr %32, align 1, !tbaa !11
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %256 unwind label %297

256:                                              ; preds = %251
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %258 unwind label %297

258:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %35) #7
  %259 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 3)
          to label %260 unwind label %299

260:                                              ; preds = %258
  %261 = load i8, ptr %259, align 1, !tbaa !11
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %35, i8 noundef zeroext %261, i32 noundef 2, i8 noundef zeroext 12)
          to label %262 unwind label %299

262:                                              ; preds = %260
  %263 = getelementptr inbounds i8, ptr %35, i64 1
  %264 = load i8, ptr %263, align 1
  %265 = lshr i8 %264, 4
  store i8 %265, ptr %34, align 1, !tbaa !11
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %267 unwind label %299

267:                                              ; preds = %262
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %269 unwind label %299

269:                                              ; preds = %267
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 1 dereferenceable(1) %230)
          to label %271 unwind label %299

271:                                              ; preds = %269
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %273 unwind label %299

273:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  %274 = getelementptr inbounds i8, ptr %196, i64 17
  %275 = load i8, ptr %274, align 1
  %276 = and i8 %275, 15
  store i8 %276, ptr %36, align 1, !tbaa !11
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %278 unwind label %301

278:                                              ; preds = %273
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %280 unwind label %301

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #7
  %281 = load i8, ptr %274, align 1
  %282 = lshr i8 %281, 4
  store i8 %282, ptr %37, align 1, !tbaa !11
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %284 unwind label %303

284:                                              ; preds = %280
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %286 unwind label %303

286:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  %287 = invoke noundef ptr @_ZNK7testing15AssertionResult15failure_messageEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %288 unwind label %305

288:                                              ; preds = %286
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %38, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 504, ptr noundef %287)
          to label %289 unwind label %305

289:                                              ; preds = %288
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %290 unwind label %307

290:                                              ; preds = %289
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %31) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #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 %719

291:                                              ; preds = %236
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %316

293:                                              ; preds = %237
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %315

295:                                              ; preds = %245, %243, %241, %239
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %314

297:                                              ; preds = %256, %251, %249, %247
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %313

299:                                              ; preds = %271, %269, %267, %262, %260, %258
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %312

301:                                              ; preds = %278, %273
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %311

303:                                              ; preds = %284, %280
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %310

305:                                              ; preds = %288, %286
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %309

307:                                              ; preds = %289
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  br label %309

309:                                              ; preds = %307, %305
  %.pn148 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  br label %310

310:                                              ; preds = %309, %303
  %.pn148.pn = phi { ptr, i32 } [ %.pn148, %309 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  br label %311

311:                                              ; preds = %310, %301
  %.pn148.pn.pn = phi { ptr, i32 } [ %.pn148.pn, %310 ], [ %302, %301 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  br label %312

312:                                              ; preds = %311, %299
  %.pn148.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn, %311 ], [ %300, %299 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  br label %313

313:                                              ; preds = %312, %297
  %.pn148.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn.pn, %312 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  br label %314

314:                                              ; preds = %313, %295
  %.pn148.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn.pn.pn, %313 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %31) #7
  br label %315

315:                                              ; preds = %314, %293
  %.pn148.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn.pn.pn.pn, %314 ], [ %294, %293 ]
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %316

316:                                              ; preds = %315, %291
  %.pn148.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn.pn.pn.pn.pn, %315 ], [ %292, %291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  br label %339

317:                                              ; preds = %231
  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 %39) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %42) #7
  %318 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2)
          to label %319 unwind label %340

319:                                              ; preds = %317
  %320 = load i8, ptr %318, align 1, !tbaa !11
  %321 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
  %322 = trunc i32 %321 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %41, i8 noundef zeroext %320, i32 noundef 4, i8 noundef zeroext %322)
          to label %323 unwind label %340

323:                                              ; preds = %319
  %324 = load i16, ptr %41, align 2, !tbaa !11
  %325 = getelementptr inbounds i8, ptr %196, i64 12
  %326 = load i16, ptr %325, align 2, !tbaa !11
  %327 = icmp eq i16 %324, %326
  br i1 %327, label %328, label %334

328:                                              ; preds = %323
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %42, i16 noundef zeroext 4)
          to label %329 unwind label %342

329:                                              ; preds = %328
  %330 = load i16, ptr %42, align 2, !tbaa !11
  %331 = getelementptr inbounds i8, ptr %196, i64 14
  %332 = load i16, ptr %331, align 2, !tbaa !11
  %333 = icmp eq i16 %330, %332
  br label %334

334:                                              ; preds = %329, %323
  %335 = phi i1 [ false, %323 ], [ %333, %329 ]
  %336 = zext i1 %335 to i8
  store i8 %336, ptr %40, align 1, !tbaa !12
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 1 dereferenceable(1) %40, ptr noundef null)
          to label %337 unwind label %342

337:                                              ; preds = %334
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  %338 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
  br i1 %338, label %448, label %345

339:                                              ; preds = %316, %234
  %.pn148.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn148.pn.pn.pn.pn.pn.pn.pn, %316 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %722

340:                                              ; preds = %319, %317
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %334, %328
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %42) #7
  br label %344

344:                                              ; preds = %342, %340
  %.pn158 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  br label %470

345:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %346 unwind label %416

346:                                              ; preds = %345
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %348 unwind label %418

348:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %44) #7
  %349 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2)
          to label %350 unwind label %420

350:                                              ; preds = %348
  %351 = load i8, ptr %349, align 1, !tbaa !11
  %352 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
  %353 = trunc i32 %352 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %44, i8 noundef zeroext %351, i32 noundef 4, i8 noundef zeroext %353)
          to label %354 unwind label %420

354:                                              ; preds = %350
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %356 unwind label %420

356:                                              ; preds = %354
  %357 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %358 unwind label %420

358:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %46) #7
  %359 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2)
          to label %360 unwind label %422

360:                                              ; preds = %358
  %361 = load i8, ptr %359, align 1, !tbaa !11
  %362 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
  %363 = trunc i32 %362 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %46, i8 noundef zeroext %361, i32 noundef 4, i8 noundef zeroext %363)
          to label %364 unwind label %422

364:                                              ; preds = %360
  %365 = getelementptr inbounds i8, ptr %46, i64 1
  %366 = load i8, ptr %365, align 1
  %367 = and i8 %366, 15
  store i8 %367, ptr %45, align 1, !tbaa !11
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %369 unwind label %422

369:                                              ; preds = %364
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %371 unwind label %422

371:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %48) #7
  %372 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2)
          to label %373 unwind label %424

373:                                              ; preds = %371
  %374 = load i8, ptr %372, align 1, !tbaa !11
  %375 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb0EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT3rbpE)
  %376 = trunc i32 %375 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %48, i8 noundef zeroext %374, i32 noundef 4, i8 noundef zeroext %376)
          to label %377 unwind label %424

377:                                              ; preds = %373
  %378 = getelementptr inbounds i8, ptr %48, i64 1
  %379 = load i8, ptr %378, align 1
  %380 = lshr i8 %379, 4
  store i8 %380, ptr %47, align 1, !tbaa !11
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %382 unwind label %424

382:                                              ; preds = %377
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %384 unwind label %424

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %49) #7
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %49, i16 noundef zeroext 4)
          to label %385 unwind label %426

385:                                              ; preds = %384
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull align 2 dereferenceable(2) %49)
          to label %387 unwind label %426

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %389 unwind label %426

389:                                              ; preds = %387
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull align 1 dereferenceable(1) %325)
          to label %391 unwind label %426

391:                                              ; preds = %389
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %393 unwind label %426

393:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #7
  %394 = getelementptr inbounds i8, ptr %196, i64 13
  %395 = load i8, ptr %394, align 1
  %396 = and i8 %395, 15
  store i8 %396, ptr %50, align 1, !tbaa !11
  %397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %398 unwind label %428

398:                                              ; preds = %393
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %397, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %400 unwind label %428

400:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #7
  %401 = load i8, ptr %394, align 1
  %402 = lshr i8 %401, 4
  store i8 %402, ptr %51, align 1, !tbaa !11
  %403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %404 unwind label %430

404:                                              ; preds = %400
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %403, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %406 unwind label %430

406:                                              ; preds = %404
  %407 = getelementptr inbounds i8, ptr %196, i64 14
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 2 dereferenceable(2) %407)
          to label %409 unwind label %430

409:                                              ; preds = %406
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %411 unwind label %430

411:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
          to label %412 unwind label %432

412:                                              ; preds = %411
  %413 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 508, ptr noundef %413)
          to label %414 unwind label %434

414:                                              ; preds = %412
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %410)
          to label %415 unwind label %436

415:                                              ; preds = %414
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %44) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br label %719

416:                                              ; preds = %345
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %447

418:                                              ; preds = %346
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %446

420:                                              ; preds = %356, %354, %350, %348
  %421 = landingpad { ptr, i32 }
          cleanup
  br label %445

422:                                              ; preds = %369, %364, %360, %358
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %444

424:                                              ; preds = %382, %377, %373, %371
  %425 = landingpad { ptr, i32 }
          cleanup
  br label %443

426:                                              ; preds = %391, %389, %387, %385, %384
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %442

428:                                              ; preds = %398, %393
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %441

430:                                              ; preds = %409, %406, %404, %400
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %440

432:                                              ; preds = %411
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %439

434:                                              ; preds = %412
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %438

436:                                              ; preds = %414
  %437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br label %438

438:                                              ; preds = %436, %434
  %.pn160 = phi { ptr, i32 } [ %437, %436 ], [ %435, %434 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %439

439:                                              ; preds = %438, %432
  %.pn160.pn = phi { ptr, i32 } [ %.pn160, %438 ], [ %433, %432 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  br label %440

440:                                              ; preds = %439, %430
  %.pn160.pn.pn = phi { ptr, i32 } [ %.pn160.pn, %439 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  br label %441

441:                                              ; preds = %440, %428
  %.pn160.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn, %440 ], [ %429, %428 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  br label %442

442:                                              ; preds = %441, %426
  %.pn160.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn, %441 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %49) #7
  br label %443

443:                                              ; preds = %442, %424
  %.pn160.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn, %442 ], [ %425, %424 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  br label %444

444:                                              ; preds = %443, %422
  %.pn160.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn, %443 ], [ %423, %422 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  br label %445

445:                                              ; preds = %444, %420
  %.pn160.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn.pn, %444 ], [ %421, %420 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %44) #7
  br label %446

446:                                              ; preds = %445, %418
  %.pn160.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %419, %418 ]
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br label %447

447:                                              ; preds = %446, %416
  %.pn160.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn.pn.pn.pn, %446 ], [ %417, %416 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  br label %470

448:                                              ; preds = %337
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %57) #7
  %449 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1)
          to label %450 unwind label %471

450:                                              ; preds = %448
  %451 = load i8, ptr %449, align 1, !tbaa !11
  %452 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
  %453 = trunc i32 %452 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %56, i8 noundef zeroext %451, i32 noundef 6, i8 noundef zeroext %453)
          to label %454 unwind label %471

454:                                              ; preds = %450
  %455 = load i16, ptr %56, align 2, !tbaa !11
  %456 = getelementptr inbounds i8, ptr %196, i64 8
  %457 = load i16, ptr %456, align 2, !tbaa !11
  %458 = icmp eq i16 %455, %457
  br i1 %458, label %459, label %465

459:                                              ; preds = %454
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %57, i16 noundef zeroext 3)
          to label %460 unwind label %473

460:                                              ; preds = %459
  %461 = load i16, ptr %57, align 2, !tbaa !11
  %462 = getelementptr inbounds i8, ptr %196, i64 10
  %463 = load i16, ptr %462, align 2, !tbaa !11
  %464 = icmp eq i16 %461, %463
  br label %465

465:                                              ; preds = %460, %454
  %466 = phi i1 [ false, %454 ], [ %464, %460 ]
  %467 = zext i1 %466 to i8
  store i8 %467, ptr %55, align 1, !tbaa !12
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef null)
          to label %468 unwind label %473

468:                                              ; preds = %465
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  %469 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
  br i1 %469, label %579, label %476

470:                                              ; preds = %447, %344
  %.pn160.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn.pn.pn.pn.pn, %447 ], [ %.pn158, %344 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br label %722

471:                                              ; preds = %450, %448
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %475

473:                                              ; preds = %465, %459
  %474 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %57) #7
  br label %475

475:                                              ; preds = %473, %471
  %.pn172 = phi { ptr, i32 } [ %474, %473 ], [ %472, %471 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  br label %600

476:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %477 unwind label %547

477:                                              ; preds = %476
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %479 unwind label %549

479:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %59) #7
  %480 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1)
          to label %481 unwind label %551

481:                                              ; preds = %479
  %482 = load i8, ptr %480, align 1, !tbaa !11
  %483 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
  %484 = trunc i32 %483 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %59, i8 noundef zeroext %482, i32 noundef 6, i8 noundef zeroext %484)
          to label %485 unwind label %551

485:                                              ; preds = %481
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %487 unwind label %551

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %486, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %489 unwind label %551

489:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %61) #7
  %490 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1)
          to label %491 unwind label %553

491:                                              ; preds = %489
  %492 = load i8, ptr %490, align 1, !tbaa !11
  %493 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
  %494 = trunc i32 %493 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %61, i8 noundef zeroext %492, i32 noundef 6, i8 noundef zeroext %494)
          to label %495 unwind label %553

495:                                              ; preds = %491
  %496 = getelementptr inbounds i8, ptr %61, i64 1
  %497 = load i8, ptr %496, align 1
  %498 = and i8 %497, 15
  store i8 %498, ptr %60, align 1, !tbaa !11
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %488, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %500 unwind label %553

500:                                              ; preds = %495
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %502 unwind label %553

502:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %63) #7
  %503 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1)
          to label %504 unwind label %555

504:                                              ; preds = %502
  %505 = load i8, ptr %503, align 1, !tbaa !11
  %506 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm10E)
  %507 = trunc i32 %506 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %63, i8 noundef zeroext %505, i32 noundef 6, i8 noundef zeroext %507)
          to label %508 unwind label %555

508:                                              ; preds = %504
  %509 = getelementptr inbounds i8, ptr %63, i64 1
  %510 = load i8, ptr %509, align 1
  %511 = lshr i8 %510, 4
  store i8 %511, ptr %62, align 1, !tbaa !11
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %513 unwind label %555

513:                                              ; preds = %508
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %515 unwind label %555

515:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %64) #7
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %64, i16 noundef zeroext 3)
          to label %516 unwind label %557

516:                                              ; preds = %515
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef nonnull align 2 dereferenceable(2) %64)
          to label %518 unwind label %557

518:                                              ; preds = %516
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %520 unwind label %557

520:                                              ; preds = %518
  %521 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 1 dereferenceable(1) %456)
          to label %522 unwind label %557

522:                                              ; preds = %520
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %521, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %524 unwind label %557

524:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #7
  %525 = getelementptr inbounds i8, ptr %196, i64 9
  %526 = load i8, ptr %525, align 1
  %527 = and i8 %526, 15
  store i8 %527, ptr %65, align 1, !tbaa !11
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %529 unwind label %559

529:                                              ; preds = %524
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %531 unwind label %559

531:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #7
  %532 = load i8, ptr %525, align 1
  %533 = lshr i8 %532, 4
  store i8 %533, ptr %66, align 1, !tbaa !11
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %535 unwind label %561

535:                                              ; preds = %531
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %537 unwind label %561

537:                                              ; preds = %535
  %538 = getelementptr inbounds i8, ptr %196, i64 10
  %539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %536, ptr noundef nonnull align 2 dereferenceable(2) %538)
          to label %540 unwind label %561

540:                                              ; preds = %537
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %539, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %542 unwind label %561

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
          to label %543 unwind label %563

543:                                              ; preds = %542
  %544 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 512, ptr noundef %544)
          to label %545 unwind label %565

545:                                              ; preds = %543
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %546 unwind label %567

546:                                              ; preds = %545
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %59) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #7
  br label %719

547:                                              ; preds = %476
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %578

549:                                              ; preds = %477
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %577

551:                                              ; preds = %487, %485, %481, %479
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %576

553:                                              ; preds = %500, %495, %491, %489
  %554 = landingpad { ptr, i32 }
          cleanup
  br label %575

555:                                              ; preds = %513, %508, %504, %502
  %556 = landingpad { ptr, i32 }
          cleanup
  br label %574

557:                                              ; preds = %522, %520, %518, %516, %515
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %573

559:                                              ; preds = %529, %524
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %572

561:                                              ; preds = %540, %537, %535, %531
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %571

563:                                              ; preds = %542
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %570

565:                                              ; preds = %543
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %569

567:                                              ; preds = %545
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br label %569

569:                                              ; preds = %567, %565
  %.pn174 = phi { ptr, i32 } [ %568, %567 ], [ %566, %565 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %570

570:                                              ; preds = %569, %563
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %569 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  br label %571

571:                                              ; preds = %570, %561
  %.pn174.pn.pn = phi { ptr, i32 } [ %.pn174.pn, %570 ], [ %562, %561 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  br label %572

572:                                              ; preds = %571, %559
  %.pn174.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn, %571 ], [ %560, %559 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  br label %573

573:                                              ; preds = %572, %557
  %.pn174.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn, %572 ], [ %558, %557 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %64) #7
  br label %574

574:                                              ; preds = %573, %555
  %.pn174.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn, %573 ], [ %556, %555 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #7
  br label %575

575:                                              ; preds = %574, %553
  %.pn174.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn.pn, %574 ], [ %554, %553 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  br label %576

576:                                              ; preds = %575, %551
  %.pn174.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn.pn.pn, %575 ], [ %552, %551 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %59) #7
  br label %577

577:                                              ; preds = %576, %549
  %.pn174.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn.pn.pn.pn, %576 ], [ %550, %549 ]
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br label %578

578:                                              ; preds = %577, %547
  %.pn174.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn.pn.pn.pn.pn, %577 ], [ %548, %547 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  br label %600

579:                                              ; preds = %468
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %72) #7
  %580 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0)
          to label %581 unwind label %601

581:                                              ; preds = %579
  %582 = load i8, ptr %580, align 1, !tbaa !11
  %583 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
  %584 = trunc i32 %583 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %71, i8 noundef zeroext %582, i32 noundef 6, i8 noundef zeroext %584)
          to label %585 unwind label %601

585:                                              ; preds = %581
  %586 = load i16, ptr %71, align 2, !tbaa !11
  %587 = load i16, ptr %198, align 2, !tbaa !11
  %588 = icmp eq i16 %586, %587
  br i1 %588, label %589, label %595

589:                                              ; preds = %585
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %72, i16 noundef zeroext 4)
          to label %590 unwind label %603

590:                                              ; preds = %589
  %591 = load i16, ptr %72, align 2, !tbaa !11
  %592 = getelementptr inbounds i8, ptr %196, i64 6
  %593 = load i16, ptr %592, align 2, !tbaa !11
  %594 = icmp eq i16 %591, %593
  br label %595

595:                                              ; preds = %590, %585
  %596 = phi i1 [ false, %585 ], [ %594, %590 ]
  %597 = zext i1 %596 to i8
  store i8 %597, ptr %70, align 1, !tbaa !12
  invoke void @_ZN7testing15AssertionResultC2IbEERKT_PNS_8internal8EnableIfIXntsr8internal21ImplicitlyConvertibleIS2_S0_EE5valueEE4typeE(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 1 dereferenceable(1) %70, ptr noundef null)
          to label %598 unwind label %603

598:                                              ; preds = %595
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #7
  %599 = call noundef zeroext i1 @_ZNK7testing15AssertionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %69)
  br i1 %599, label %709, label %606

600:                                              ; preds = %578, %475
  %.pn174.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn.pn.pn.pn.pn.pn.pn.pn, %578 ], [ %.pn172, %475 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #7
  br label %722

601:                                              ; preds = %581, %579
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %605

603:                                              ; preds = %595, %589
  %604 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %72) #7
  br label %605

605:                                              ; preds = %603, %601
  %.pn186 = phi { ptr, i32 } [ %604, %603 ], [ %602, %601 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #7
  br label %721

606:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %607 unwind label %677

607:                                              ; preds = %606
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA25_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 1 dereferenceable(25) @.str.12)
          to label %609 unwind label %679

609:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %74) #7
  %610 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0)
          to label %611 unwind label %681

611:                                              ; preds = %609
  %612 = load i8, ptr %610, align 1, !tbaa !11
  %613 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
  %614 = trunc i32 %613 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %74, i8 noundef zeroext %612, i32 noundef 6, i8 noundef zeroext %614)
          to label %615 unwind label %681

615:                                              ; preds = %611
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %617 unwind label %681

617:                                              ; preds = %615
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %619 unwind label %681

619:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %76) #7
  %620 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0)
          to label %621 unwind label %683

621:                                              ; preds = %619
  %622 = load i8, ptr %620, align 1, !tbaa !11
  %623 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
  %624 = trunc i32 %623 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %76, i8 noundef zeroext %622, i32 noundef 6, i8 noundef zeroext %624)
          to label %625 unwind label %683

625:                                              ; preds = %621
  %626 = getelementptr inbounds i8, ptr %76, i64 1
  %627 = load i8, ptr %626, align 1
  %628 = and i8 %627, 15
  store i8 %628, ptr %75, align 1, !tbaa !11
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %630 unwind label %683

630:                                              ; preds = %625
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %632 unwind label %683

632:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #7
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %78) #7
  %633 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0)
          to label %634 unwind label %685

634:                                              ; preds = %632
  %635 = load i8, ptr %633, align 1, !tbaa !11
  %636 = call noundef i32 @_ZNK9NativeJIT8RegisterILj8ELb1EE5GetIdEv(ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NativeJIT5xmm11E)
  %637 = trunc i32 %636 to i8
  invoke void @_ZN9NativeJIT10UnwindCodeC1EhNS_12UnwindCodeOpEh(ptr noundef nonnull align 2 dereferenceable(2) %78, i8 noundef zeroext %635, i32 noundef 6, i8 noundef zeroext %637)
          to label %638 unwind label %685

638:                                              ; preds = %634
  %639 = getelementptr inbounds i8, ptr %78, i64 1
  %640 = load i8, ptr %639, align 1
  %641 = lshr i8 %640, 4
  store i8 %641, ptr %77, align 1, !tbaa !11
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %631, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %643 unwind label %685

643:                                              ; preds = %638
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %645 unwind label %685

645:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %79) #7
  invoke void @_ZN9NativeJIT10UnwindCodeC1Et(ptr noundef nonnull align 2 dereferenceable(2) %79, i16 noundef zeroext 4)
          to label %646 unwind label %687

646:                                              ; preds = %645
  %647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef nonnull align 2 dereferenceable(2) %79)
          to label %648 unwind label %687

648:                                              ; preds = %646
  %649 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA7_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %647, ptr noundef nonnull align 1 dereferenceable(7) @.str.14)
          to label %650 unwind label %687

650:                                              ; preds = %648
  %651 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %649, ptr noundef nonnull align 1 dereferenceable(1) %198)
          to label %652 unwind label %687

652:                                              ; preds = %650
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %651, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %654 unwind label %687

654:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #7
  %655 = getelementptr inbounds i8, ptr %196, i64 5
  %656 = load i8, ptr %655, align 1
  %657 = and i8 %656, 15
  store i8 %657, ptr %80, align 1, !tbaa !11
  %658 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %659 unwind label %689

659:                                              ; preds = %654
  %660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %661 unwind label %689

661:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %81) #7
  %662 = load i8, ptr %655, align 1
  %663 = lshr i8 %662, 4
  store i8 %663, ptr %81, align 1, !tbaa !11
  %664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIhEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %660, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %665 unwind label %691

665:                                              ; preds = %661
  %666 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA3_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %664, ptr noundef nonnull align 1 dereferenceable(3) @.str.13)
          to label %667 unwind label %691

667:                                              ; preds = %665
  %668 = getelementptr inbounds i8, ptr %196, i64 6
  %669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsItEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 2 dereferenceable(2) %668)
          to label %670 unwind label %691

670:                                              ; preds = %667
  %671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7testing7MessagelsIA2_cEERS0_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef nonnull align 1 dereferenceable(2) @.str.15)
          to label %672 unwind label %691

672:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  invoke void @_ZN7testing8internal30GetBoolAssertionFailureMessageB5cxx11ERKNS_15AssertionResultEPKcS5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
          to label %673 unwind label %693

673:                                              ; preds = %672
  %674 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 2, ptr noundef nonnull @.str.3, i32 noundef 516, ptr noundef %674)
          to label %675 unwind label %695

675:                                              ; preds = %673
  invoke void @_ZNK7testing8internal12AssertHelperaSERKNS_7MessageE(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %671)
          to label %676 unwind label %697

676:                                              ; preds = %675
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %74) #7
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #7
  br label %719

677:                                              ; preds = %606
  %678 = landingpad { ptr, i32 }
          cleanup
  br label %708

679:                                              ; preds = %607
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %707

681:                                              ; preds = %617, %615, %611, %609
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %706

683:                                              ; preds = %630, %625, %621, %619
  %684 = landingpad { ptr, i32 }
          cleanup
  br label %705

685:                                              ; preds = %643, %638, %634, %632
  %686 = landingpad { ptr, i32 }
          cleanup
  br label %704

687:                                              ; preds = %652, %650, %648, %646, %645
  %688 = landingpad { ptr, i32 }
          cleanup
  br label %703

689:                                              ; preds = %659, %654
  %690 = landingpad { ptr, i32 }
          cleanup
  br label %702

691:                                              ; preds = %670, %667, %665, %661
  %692 = landingpad { ptr, i32 }
          cleanup
  br label %701

693:                                              ; preds = %672
  %694 = landingpad { ptr, i32 }
          cleanup
  br label %700

695:                                              ; preds = %673
  %696 = landingpad { ptr, i32 }
          cleanup
  br label %699

697:                                              ; preds = %675
  %698 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br label %699

699:                                              ; preds = %697, %695
  %.pn188 = phi { ptr, i32 } [ %698, %697 ], [ %696, %695 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  br label %700

700:                                              ; preds = %699, %693
  %.pn188.pn = phi { ptr, i32 } [ %.pn188, %699 ], [ %694, %693 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #7
  br label %701

701:                                              ; preds = %700, %691
  %.pn188.pn.pn = phi { ptr, i32 } [ %.pn188.pn, %700 ], [ %692, %691 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #7
  br label %702

702:                                              ; preds = %701, %689
  %.pn188.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn, %701 ], [ %690, %689 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  br label %703

703:                                              ; preds = %702, %687
  %.pn188.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn, %702 ], [ %688, %687 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %79) #7
  br label %704

704:                                              ; preds = %703, %685
  %.pn188.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn, %703 ], [ %686, %685 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #7
  br label %705

705:                                              ; preds = %704, %683
  %.pn188.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn.pn, %704 ], [ %684, %683 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #7
  br label %706

706:                                              ; preds = %705, %681
  %.pn188.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn.pn.pn, %705 ], [ %682, %681 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %74) #7
  br label %707

707:                                              ; preds = %706, %679
  %.pn188.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn.pn.pn.pn, %706 ], [ %680, %679 ]
  call void @_ZN7testing7MessageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br label %708

708:                                              ; preds = %707, %677
  %.pn188.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn.pn.pn.pn.pn, %707 ], [ %678, %677 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  br label %721

709:                                              ; preds = %598
  call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #7
  %710 = load ptr, ptr %85, align 8, !tbaa !9
  %711 = getelementptr inbounds i8, ptr %710, i64 24
  %712 = load ptr, ptr %711, align 8
  invoke void %712(ptr noundef nonnull align 8 dereferenceable(133) %85)
          to label %713 unwind label %207

713:                                              ; preds = %709
  %.sroa.011.0.copyload = load i32, ptr @_ZN9NativeJIT6xmm11sE, align 4
  %.sroa.010.0.copyload = load i32, ptr @_ZN9NativeJIT3rspE, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %85, i32 %.sroa.011.0.copyload, i32 %.sroa.010.0.copyload, i32 noundef 64)
          to label %714 unwind label %207

714:                                              ; preds = %713
  %.sroa.09.0.copyload = load i32, ptr @_ZN9NativeJIT6xmm10sE, align 4
  %.sroa.08.0.copyload = load i32, ptr @_ZN9NativeJIT3rspE, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %85, i32 %.sroa.09.0.copyload, i32 %.sroa.08.0.copyload, i32 noundef 48)
          to label %715 unwind label %207

715:                                              ; preds = %714
  %.sroa.07.0.copyload = load i32, ptr @_ZN9NativeJIT3rbpE, align 4
  %.sroa.06.0.copyload = load i32, ptr @_ZN9NativeJIT3rspE, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE17ELj8ELb0EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104) %85, i32 %.sroa.07.0.copyload, i32 %.sroa.06.0.copyload, i32 noundef 32)
          to label %716 unwind label %207

716:                                              ; preds = %715
  %.sroa.0.0.copyload = load i32, ptr @_ZN9NativeJIT3rspE, align 4
  invoke void @_ZN9NativeJIT16X64CodeGenerator13EmitImmediateILNS_6OpCodeE0ELj8ELb0EiEEvNS_8RegisterIXT0_EXT1_EEET2_(ptr noundef nonnull align 8 dereferenceable(104) %85, i32 %.sroa.0.0.copyload, i32 noundef 104)
          to label %717 unwind label %207

717:                                              ; preds = %716
  invoke void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE28EEEvv(ptr noundef nonnull align 8 dereferenceable(104) %85)
          to label %718 unwind label %207

718:                                              ; preds = %717
  invoke void @_ZN9NativeJIT15CodeGenUnitTest18FunctionBufferTest12VerifyEpilogERKNS_21FunctionSpecificationERKNS_14FunctionBufferE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(112) %3, ptr noundef nonnull align 8 dereferenceable(133) %85)
          to label %719 unwind label %207

719:                                              ; preds = %676, %546, %415, %290, %216, %718, %186
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %720

720:                                              ; preds = %140, %719, %119
  call void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %3) #7
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #7
  call void @_ZNSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  ret void

721:                                              ; preds = %708, %605
  %.pn188.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn.pn.pn.pn.pn.pn.pn, %708 ], [ %.pn186, %605 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #7
  br label %722

722:                                              ; preds = %205, %721, %600, %470, %339, %233, %207, %194, %182, %174, %172, %170, %168, %166
  %.pn141.pn.pn = phi { ptr, i32 } [ %.pn141.pn, %194 ], [ %.pn139, %182 ], [ %167, %166 ], [ %175, %174 ], [ %173, %172 ], [ %171, %170 ], [ %169, %168 ], [ %206, %205 ], [ %208, %207 ], [ %.pn188.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %721 ], [ %.pn174.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %600 ], [ %.pn160.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %470 ], [ %.pn148.pn.pn.pn.pn.pn.pn.pn.pn, %339 ], [ %.pn144.pn.pn, %233 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %723

723:                                              ; preds = %722, %165, %127, %115, %107
  %.pn132.pn.pn = phi { ptr, i32 } [ %.pn132.pn, %127 ], [ %.pn141.pn.pn, %722 ], [ %.pn135.pn.pn, %165 ], [ %.pn, %115 ], [ %108, %107 ]
  call void @_ZN9NativeJIT21FunctionSpecificationD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %3) #7
  br label %724

724:                                              ; preds = %723, %105
  %.pn132.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn, %723 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #7
  br label %725

725:                                              ; preds = %724, %103
  %.pn132.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn.pn, %724 ], [ %104, %103 ]
  call void @_ZNSt10unique_ptrIN9NativeJIT13TestCaseSetupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn132.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN9NativeJIT14FunctionBufferEEEC2IZNS0_15CodeGenUnitTest31FunctionBufferTest_Complex_Test8TestBodyEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NativeJIT16X64CodeGenerator4EmitILNS_6OpCodeE20ELj4ELb1EEEvNS_8RegisterIXT0_EXT1_EEENS3_ILj8ELb0EEEi(ptr noundef nonnull align 8 dereferenceable(104), i32, i32, i32 noundef) local_unnamed_addr #3 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"bool", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass