; LLVM IR from thepowersgang/mrustc :: src/hir_typeck (helpers)

; 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.HIR::TypeRef" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"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.640 = type { ptr, ptr }
%class.anon.641 = type { i8 }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RangeVecMap = type <{ %"class.std::vector.211", [8 x i8] }>
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.std::pair.653" = type { i32, %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.29" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }

@g_debug_indent_level = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE = external hidden unnamed_addr constant [22 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE = external hidden unnamed_addr constant [239 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #7

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %class.TraceLog, align 8
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.640, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %class.anon.641, align 1
  %28 = alloca i32, align 4
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca ptr, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  %32 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #8
  %33 = call noundef zeroext i1 @_Z13debug_enabledv()
  %34 = zext i1 %33 to i64
  %35 = select i1 %33, ptr @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #8
  %36 = getelementptr inbounds %class.anon.640, ptr %18, i32 0, i32 0
  %37 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %37, ptr %36, align 8, !tbaa !5
  %38 = getelementptr inbounds %class.anon.640, ptr %18, i32 0, i32 1
  %39 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %39, ptr %38, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNSA_5TraitEESaISH_EERKS8_IjSaIjEERKNSA_7TypeRefERK8RcStringRS8_IS9_INS4_15AutoderefBorrowENSA_4PathEESaISY_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(16) %18) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %35, ptr noundef %17)
          to label %40 unwind label %58

40:                                               ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %41 unwind label %62

41:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %42 = getelementptr inbounds %class.TraitResolution, ptr %32, i32 0, i32 2
  %43 = load ptr, ptr %42, align 8, !tbaa !11
  %44 = load ptr, ptr %13, align 8, !tbaa !5
  %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %43, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %46 unwind label %66

46:                                               ; preds = %41
  store ptr %45, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %47 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %47, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 2, ptr %25, align 4, !tbaa !35
  br label %48

48:                                               ; preds = %348, %46
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %49 = getelementptr inbounds %class.TraitResolution, ptr %32, i32 0, i32 2
  %50 = load ptr, ptr %49, align 8, !tbaa !11
  %51 = load ptr, ptr %24, align 8, !tbaa !5
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %50, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %53 unwind label %70

53:                                               ; preds = %48
  store ptr %52, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  %54 = load ptr, ptr %26, align 8, !tbaa !5
  %55 = invoke noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %56 unwind label %74

56:                                               ; preds = %53
  br i1 %55, label %57, label %78

57:                                               ; preds = %56
  store i32 -1, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %345

58:                                               ; preds = %7
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %19, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  br label %366

62:                                               ; preds = %40
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %19, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %20, align 4
  br label %365

66:                                               ; preds = %41
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %19, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %20, align 4
  br label %364

70:                                               ; preds = %48
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %19, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %20, align 4
  br label %359

74:                                               ; preds = %151, %149, %144, %142, %139, %137, %134, %131, %120, %115, %113, %110, %108, %105, %102, %99, %94, %91, %89, %84, %81, %78, %53
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %19, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %20, align 4
  br label %358

78:                                               ; preds = %56
  %79 = load ptr, ptr %26, align 8, !tbaa !5
  %80 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %81 unwind label %74

81:                                               ; preds = %78
  %82 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %80)
          to label %83 unwind label %74

83:                                               ; preds = %81
  br i1 %82, label %84, label %98

84:                                               ; preds = %83
  %85 = getelementptr inbounds %class.TraitResolution, ptr %32, i32 0, i32 2
  %86 = load ptr, ptr %85, align 8, !tbaa !11
  %87 = load ptr, ptr %26, align 8, !tbaa !5
  %88 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %89 unwind label %74

89:                                               ; preds = %84
  %90 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %88)
          to label %91 unwind label %74

91:                                               ; preds = %89
  %92 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %90, i32 0, i32 2
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %86, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %94 unwind label %74

94:                                               ; preds = %91
  %95 = invoke noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %96 unwind label %74

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

97:                                               ; preds = %96
  store i32 -1, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %345

98:                                               ; preds = %96, %83
  br label %99

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

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

102:                                              ; preds = %101
  %103 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %103, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %105 unwind label %74

105:                                              ; preds = %102
  %106 = load i32, ptr %21, align 4, !tbaa !9
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %104, i32 noundef %106)
          to label %108 unwind label %74

108:                                              ; preds = %105
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef @.str.179)
          to label %110 unwind label %74

110:                                              ; preds = %108
  %111 = load ptr, ptr %26, align 8, !tbaa !5
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %113 unwind label %74

113:                                              ; preds = %110
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @_ZSt3decRSt8ios_base)
          to label %115 unwind label %74

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %117 unwind label %74

117:                                              ; preds = %115
  br label %118

118:                                              ; preds = %117, %101
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119
  %121 = load ptr, ptr %10, align 8, !tbaa !5
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = load ptr, ptr %12, align 8, !tbaa !5
  %124 = load ptr, ptr %26, align 8, !tbaa !5
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = load i32, ptr %25, align 4, !tbaa !35
  %127 = load ptr, ptr %15, align 8, !tbaa !5
  %128 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(24) %122, ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef %126, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(24) %127)
          to label %129 unwind label %74

129:                                              ; preds = %120
  br i1 %128, label %130, label %157

130:                                              ; preds = %129
  br label %131

131:                                              ; preds = %130
  %132 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %133 unwind label %74

133:                                              ; preds = %131
  br i1 %132, label %134, label %154

134:                                              ; preds = %133
  %135 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %135, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %137 unwind label %74

137:                                              ; preds = %134
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef @.str.180)
          to label %139 unwind label %74

139:                                              ; preds = %137
  %140 = load i32, ptr %21, align 4, !tbaa !9
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %138, i32 noundef %140)
          to label %142 unwind label %74

142:                                              ; preds = %139
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef @.str.181)
          to label %144 unwind label %74

144:                                              ; preds = %142
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %145) #8
  %147 = getelementptr inbounds %"struct.std::pair.653", ptr %146, i32 0, i32 1
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(88) %147)
          to label %149 unwind label %74

149:                                              ; preds = %144
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef @_ZSt3decRSt8ios_base)
          to label %151 unwind label %74

151:                                              ; preds = %149
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %153 unwind label %74

153:                                              ; preds = %151
  br label %154

154:                                              ; preds = %153, %133
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %158 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %30, ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %159 unwind label %192

159:                                              ; preds = %157
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %29, i32 noundef 0, ptr noundef %30)
          to label %160 unwind label %196

160:                                              ; preds = %159
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %161 = load ptr, ptr %10, align 8, !tbaa !5
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = load ptr, ptr %12, align 8, !tbaa !5
  %164 = load ptr, ptr %14, align 8, !tbaa !5
  %165 = load ptr, ptr %15, align 8, !tbaa !5
  %166 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %164, i32 noundef 2, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %165)
          to label %167 unwind label %200

167:                                              ; preds = %160
  br i1 %166, label %168, label %207

168:                                              ; preds = %167
  br label %169

169:                                              ; preds = %168
  %170 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %171 unwind label %200

171:                                              ; preds = %169
  br i1 %170, label %172, label %204

172:                                              ; preds = %171
  %173 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %173, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %175 unwind label %200

175:                                              ; preds = %172
  %176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef @.str.182)
          to label %177 unwind label %200

177:                                              ; preds = %175
  %178 = load i32, ptr %21, align 4, !tbaa !9
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef %178)
          to label %180 unwind label %200

180:                                              ; preds = %177
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef @.str.181)
          to label %182 unwind label %200

182:                                              ; preds = %180
  %183 = load ptr, ptr %15, align 8, !tbaa !5
  %184 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #8
  %185 = getelementptr inbounds %"struct.std::pair.653", ptr %184, i32 0, i32 1
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(88) %185)
          to label %187 unwind label %200

187:                                              ; preds = %182
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef @_ZSt3decRSt8ios_base)
          to label %189 unwind label %200

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %200

191:                                              ; preds = %189
  br label %204

192:                                              ; preds = %157
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %19, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %20, align 4
  br label %357

196:                                              ; preds = %159
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %19, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br label %357

200:                                              ; preds = %316, %314, %311, %309, %305, %303, %300, %297, %287, %285, %280, %278, %275, %273, %270, %267, %258, %252, %250, %244, %242, %237, %235, %232, %230, %227, %224, %215, %209, %207, %189, %187, %182, %180, %177, %175, %172, %169, %160
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %19, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %20, align 4
  br label %356

204:                                              ; preds = %191, %171
  br label %205

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205
  br label %207

207:                                              ; preds = %206, %167
  %208 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %209 unwind label %200

209:                                              ; preds = %207
  %210 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %208)
          to label %211 unwind label %200

211:                                              ; preds = %209
  %212 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %210, i32 0, i32 1
  store i32 1, ptr %212, align 4, !tbaa !37
  %213 = load i32, ptr %25, align 4, !tbaa !35
  %214 = icmp sge i32 %213, 1
  br i1 %214, label %215, label %250

215:                                              ; preds = %211
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = load ptr, ptr %12, align 8, !tbaa !5
  %219 = load ptr, ptr %14, align 8, !tbaa !5
  %220 = load ptr, ptr %15, align 8, !tbaa !5
  %221 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(24) %217, ptr noundef nonnull align 8 dereferenceable(24) %218, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %219, i32 noundef 2, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(24) %220)
          to label %222 unwind label %200

222:                                              ; preds = %215
  br i1 %221, label %223, label %250

223:                                              ; preds = %222
  br label %224

224:                                              ; preds = %223
  %225 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %226 unwind label %200

226:                                              ; preds = %224
  br i1 %225, label %227, label %247

227:                                              ; preds = %226
  %228 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %228, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %230 unwind label %200

230:                                              ; preds = %227
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef @.str.183)
          to label %232 unwind label %200

232:                                              ; preds = %230
  %233 = load i32, ptr %21, align 4, !tbaa !9
  %234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %231, i32 noundef %233)
          to label %235 unwind label %200

235:                                              ; preds = %232
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef @.str.181)
          to label %237 unwind label %200

237:                                              ; preds = %235
  %238 = load ptr, ptr %15, align 8, !tbaa !5
  %239 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %238) #8
  %240 = getelementptr inbounds %"struct.std::pair.653", ptr %239, i32 0, i32 1
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef nonnull align 8 dereferenceable(88) %240)
          to label %242 unwind label %200

242:                                              ; preds = %237
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef @_ZSt3decRSt8ios_base)
          to label %244 unwind label %200

244:                                              ; preds = %242
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %246 unwind label %200

246:                                              ; preds = %244
  br label %247

247:                                              ; preds = %246, %226
  br label %248

248:                                              ; preds = %247
  br label %249

249:                                              ; preds = %248
  br label %250

250:                                              ; preds = %249, %222, %211
  %251 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %252 unwind label %200

252:                                              ; preds = %250
  %253 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %251)
          to label %254 unwind label %200

254:                                              ; preds = %252
  %255 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %253, i32 0, i32 1
  store i32 2, ptr %255, align 4, !tbaa !37
  %256 = load i32, ptr %25, align 4, !tbaa !35
  %257 = icmp sge i32 %256, 2
  br i1 %257, label %258, label %293

258:                                              ; preds = %254
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = load ptr, ptr %11, align 8, !tbaa !5
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = load ptr, ptr %15, align 8, !tbaa !5
  %264 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(24) %260, ptr noundef nonnull align 8 dereferenceable(24) %261, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %262, i32 noundef 2, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(24) %263)
          to label %265 unwind label %200

265:                                              ; preds = %258
  br i1 %264, label %266, label %293

266:                                              ; preds = %265
  br label %267

267:                                              ; preds = %266
  %268 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %269 unwind label %200

269:                                              ; preds = %267
  br i1 %268, label %270, label %290

270:                                              ; preds = %269
  %271 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %271, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %273 unwind label %200

273:                                              ; preds = %270
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef @.str.184)
          to label %275 unwind label %200

275:                                              ; preds = %273
  %276 = load i32, ptr %21, align 4, !tbaa !9
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef %276)
          to label %278 unwind label %200

278:                                              ; preds = %275
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef @.str.181)
          to label %280 unwind label %200

280:                                              ; preds = %278
  %281 = load ptr, ptr %15, align 8, !tbaa !5
  %282 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %281) #8
  %283 = getelementptr inbounds %"struct.std::pair.653", ptr %282, i32 0, i32 1
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(88) %283)
          to label %285 unwind label %200

285:                                              ; preds = %280
  %286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef @_ZSt3decRSt8ios_base)
          to label %287 unwind label %200

287:                                              ; preds = %285
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %289 unwind label %200

289:                                              ; preds = %287
  br label %290

290:                                              ; preds = %289, %269
  br label %291

291:                                              ; preds = %290
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292, %265, %254
  %294 = load ptr, ptr %15, align 8, !tbaa !5
  %295 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %294) #8
  br i1 %295, label %323, label %296

296:                                              ; preds = %293
  br label %297

297:                                              ; preds = %296
  %298 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %299 unwind label %200

299:                                              ; preds = %297
  br i1 %298, label %300, label %319

300:                                              ; preds = %299
  %301 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %301, ptr noundef @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %303 unwind label %200

303:                                              ; preds = %300
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef @.str.185)
          to label %305 unwind label %200

305:                                              ; preds = %303
  %306 = load ptr, ptr %15, align 8, !tbaa !5
  %307 = call noundef i64 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %306) #8
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %304, i64 noundef %307)
          to label %309 unwind label %200

309:                                              ; preds = %305
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef @.str.186)
          to label %311 unwind label %200

311:                                              ; preds = %309
  %312 = load ptr, ptr %15, align 8, !tbaa !5
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEEERSoS6_RKSt6vectorIT_SaIS8_EE(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull align 8 dereferenceable(24) %312)
          to label %314 unwind label %200

314:                                              ; preds = %311
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef @_ZSt3decRSt8ios_base)
          to label %316 unwind label %200

316:                                              ; preds = %314
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %318 unwind label %200

318:                                              ; preds = %316
  br label %319

319:                                              ; preds = %318, %299
  br label %320

320:                                              ; preds = %319
  br label %321

321:                                              ; preds = %320
  %322 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %322, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %344

323:                                              ; preds = %293
  %324 = load i32, ptr %21, align 4, !tbaa !9
  %325 = add i32 %324, 1
  store i32 %325, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = load ptr, ptr %26, align 8, !tbaa !5
  %328 = invoke noundef ptr @_ZNK15TraitResolution17type_is_owned_boxERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %329 unwind label %334

329:                                              ; preds = %323
  store ptr %328, ptr %31, align 8, !tbaa !5
  %330 = load ptr, ptr %31, align 8, !tbaa !5
  %331 = icmp ne ptr %330, null
  br i1 %331, label %332, label %338

332:                                              ; preds = %329
  %333 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %333, ptr %24, align 8, !tbaa !5
  br label %343

334:                                              ; preds = %338, %323
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %19, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %356

338:                                              ; preds = %329
  %339 = load ptr, ptr %10, align 8, !tbaa !5
  %340 = load ptr, ptr %26, align 8, !tbaa !5
  %341 = invoke noundef ptr @_ZNK15TraitResolution9autoderefERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %342 unwind label %334

342:                                              ; preds = %338
  store ptr %341, ptr %24, align 8, !tbaa !5
  br label %343

343:                                              ; preds = %342, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  store i32 0, ptr %28, align 4
  br label %344

344:                                              ; preds = %343, %321
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %345

345:                                              ; preds = %344, %97, %57
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %346 = load i32, ptr %28, align 4
  switch i32 %346, label %362 [
    i32 0, label %347
  ]

347:                                              ; preds = %345
  br label %348

348:                                              ; preds = %347
  %349 = load ptr, ptr %24, align 8, !tbaa !5
  %350 = icmp ne ptr %349, null
  br i1 %350, label %48, label %351, !llvm.loop !42

351:                                              ; preds = %348
  %352 = load ptr, ptr %15, align 8, !tbaa !5
  %353 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %352) #8
  br i1 %353, label %354, label %355

354:                                              ; preds = %351
  br label %361

355:                                              ; preds = %351
  call void @__assert_fail(ptr noundef @.str.187, ptr noundef @.str.7, i32 noundef 4596, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE) #9
  unreachable

356:                                              ; preds = %334, %200
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %357

357:                                              ; preds = %356, %196, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %358

358:                                              ; preds = %357, %74
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %359

359:                                              ; preds = %358, %70
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %364

360:                                              ; No predecessors!
  br label %361

361:                                              ; preds = %360, %354
  store i32 0, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %362

362:                                              ; preds = %361, %345
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #8
  %363 = load i32, ptr %8, align 4
  ret i32 %363

364:                                              ; preds = %359, %66
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br label %365

365:                                              ; preds = %364, %62
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  br label %366

366:                                              ; preds = %365, %58
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #8
  br label %367

367:                                              ; preds = %366
  %368 = load ptr, ptr %19, align 8
  %369 = load i32, ptr %20, align 4
  %370 = insertvalue { ptr, i32 } poison, ptr %368, 0
  %371 = insertvalue { ptr, i32 } %370, i32 %369, 1
  resume { ptr, i32 } %371
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, i32 noundef, ptr noundef) #2 align 2

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #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 = { 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 #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "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 #8 = { nounwind }
attributes #9 = { noreturn 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, !6, i64 224}
!12 = !{!"_ZTS15TraitResolution", !13, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !31, i64 256}
!13 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !23, i64 72, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208}
!14 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!29 = !{!"_ZTSN3HIR10SimplePathE", !30, i64 0}
!30 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!31 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!36, !36, i64 0}
!36 = !{!"_ZTSN15TraitResolution12MethodAccessE", !7, i64 0}
!37 = !{!38, !40, i64 4}
!38 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !39, i64 0, !40, i64 4, !41, i64 8}
!39 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!40 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!41 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}


; 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.HIR::TypeRef" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"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.640 = type { ptr, ptr }
%class.anon.641 = type { i8 }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE = external hidden unnamed_addr constant [22 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE = external hidden unnamed_addr constant [239 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) local_unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #7

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.640, align 8
  %11 = alloca %"class.HIR::TypeRef", align 8
  %12 = alloca %class.anon.641, align 1
  %13 = alloca %"class.HIR::TypeRef", align 8
  %14 = alloca %"class.HIR::TypeRef", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #8
  %15 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %16 = select i1 %15, ptr @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  store ptr %4, ptr %10, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %5, ptr %17, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNSA_5TraitEESaISH_EERKS8_IjSaIjEERKNSA_7TypeRefERK8RcStringRS8_IS9_INS4_15AutoderefBorrowENSA_4PathEESaISY_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %16, ptr noundef nonnull %9)
          to label %18 unwind label %28

18:                                               ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %19 unwind label %30

19:                                               ; preds = %18
  %20 = getelementptr inbounds i8, ptr %0, i64 224
  %21 = load ptr, ptr %20, align 8, !tbaa !9
  %22 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %21, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %.preheader unwind label %32

.preheader:                                       ; preds = %19, %202
  %.077 = phi i32 [ %194, %202 ], [ 0, %19 ]
  %.073 = phi ptr [ %.275.ph, %202 ], [ %22, %19 ]
  %23 = load ptr, ptr %20, align 8, !tbaa !9
  %24 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %23, ptr noundef nonnull align 8 dereferenceable(8) %.073)
          to label %25 unwind label %34

25:                                               ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  %26 = invoke noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %27 unwind label %36

27:                                               ; preds = %25
  br i1 %26, label %.thread, label %38

28:                                               ; preds = %7
  %29 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  br label %212

30:                                               ; preds = %18
  %31 = landingpad { ptr, i32 }
          cleanup
  br label %211

32:                                               ; preds = %19
  %33 = landingpad { ptr, i32 }
          cleanup
  br label %210

34:                                               ; preds = %.preheader
  %35 = landingpad { ptr, i32 }
          cleanup
  br label %210

36:                                               ; preds = %87, %85, %81, %79, %77, %75, %72, %69, %66, %64, %62, %60, %58, %56, %53, %50, %47, %41, %25
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %208

38:                                               ; preds = %27
  %39 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %40 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %39)
  br i1 %40, label %41, label %50

41:                                               ; preds = %38
  %42 = load ptr, ptr %20, align 8, !tbaa !9
  %43 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %44 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %43)
  %45 = getelementptr inbounds i8, ptr %44, i64 8
  %46 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %42, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %47 unwind label %36

47:                                               ; preds = %41
  %48 = invoke noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %49 unwind label %36

49:                                               ; preds = %47
  br i1 %48, label %.thread, label %50

50:                                               ; preds = %38, %49
  %51 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %52 unwind label %36

52:                                               ; preds = %50
  br i1 %51, label %53, label %66

53:                                               ; preds = %52
  %54 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %54, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %56 unwind label %36

56:                                               ; preds = %53
  %57 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %55, i32 noundef %.077)
          to label %58 unwind label %36

58:                                               ; preds = %56
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @.str.179)
          to label %60 unwind label %36

60:                                               ; preds = %58
  %61 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %62 unwind label %36

62:                                               ; preds = %60
  %63 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %64 unwind label %36

64:                                               ; preds = %62
  %65 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %66 unwind label %36

66:                                               ; preds = %64, %52
  %67 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 2, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %68 unwind label %36

68:                                               ; preds = %66
  br i1 %67, label %69, label %89

69:                                               ; preds = %68
  %70 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %71 unwind label %36

71:                                               ; preds = %69
  br i1 %70, label %72, label %89

72:                                               ; preds = %71
  %73 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %73, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %75 unwind label %36

75:                                               ; preds = %72
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull @.str.180)
          to label %77 unwind label %36

77:                                               ; preds = %75
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef %.077)
          to label %79 unwind label %36

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @.str.181)
          to label %81 unwind label %36

81:                                               ; preds = %79
  %82 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(88) %83)
          to label %85 unwind label %36

85:                                               ; preds = %81
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %87 unwind label %36

87:                                               ; preds = %85
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %89 unwind label %36

89:                                               ; preds = %71, %87, %68
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %14, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %90 unwind label %114

90:                                               ; preds = %89
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %13, i32 noundef 0, ptr noundef nonnull %14)
          to label %91 unwind label %116

91:                                               ; preds = %90
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %92 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 2, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %93 unwind label %.loopexit

93:                                               ; preds = %91
  br i1 %92, label %94, label %118

94:                                               ; preds = %93
  %95 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %96 unwind label %.loopexit

96:                                               ; preds = %94
  br i1 %95, label %97, label %118

97:                                               ; preds = %96
  %98 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %98, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %100 unwind label %.loopexit

100:                                              ; preds = %97
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull @.str.182)
          to label %102 unwind label %.loopexit

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %101, i32 noundef %.077)
          to label %104 unwind label %.loopexit

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @.str.181)
          to label %106 unwind label %.loopexit

106:                                              ; preds = %104
  %107 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %108 = getelementptr inbounds i8, ptr %107, i64 8
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(88) %108)
          to label %110 unwind label %.loopexit

110:                                              ; preds = %106
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %112 unwind label %.loopexit

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %118 unwind label %.loopexit

114:                                              ; preds = %89
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %207

116:                                              ; preds = %90
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %207

.loopexit:                                        ; preds = %91, %94, %97, %100, %102, %104, %106, %110, %112, %118, %120, %125, %128, %131, %133, %135, %137, %141, %143, %145, %147, %152, %155, %158, %160, %162, %164, %168, %170
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %206

.loopexit.split-lp:                               ; preds = %174, %177, %180, %182, %185, %187, %189, %191
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %206

118:                                              ; preds = %96, %112, %93
  %119 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %120 unwind label %.loopexit

120:                                              ; preds = %118
  %121 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %119)
  %122 = getelementptr inbounds i8, ptr %121, i64 4
  store i32 1, ptr %122, align 4, !tbaa !35
  %123 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 2, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %124 unwind label %.loopexit

124:                                              ; preds = %120
  br i1 %123, label %125, label %145

125:                                              ; preds = %124
  %126 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %127 unwind label %.loopexit

127:                                              ; preds = %125
  br i1 %126, label %128, label %145

128:                                              ; preds = %127
  %129 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %129, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %131 unwind label %.loopexit

131:                                              ; preds = %128
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull @.str.183)
          to label %133 unwind label %.loopexit

133:                                              ; preds = %131
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %132, i32 noundef %.077)
          to label %135 unwind label %.loopexit

135:                                              ; preds = %133
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull @.str.181)
          to label %137 unwind label %.loopexit

137:                                              ; preds = %135
  %138 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %139 = getelementptr inbounds i8, ptr %138, i64 8
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(88) %139)
          to label %141 unwind label %.loopexit

141:                                              ; preds = %137
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %143 unwind label %.loopexit

143:                                              ; preds = %141
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %145 unwind label %.loopexit

145:                                              ; preds = %127, %143, %124
  %146 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef10get_uniqueEv(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %147 unwind label %.loopexit

147:                                              ; preds = %145
  %148 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %146)
  %149 = getelementptr inbounds i8, ptr %148, i64 4
  store i32 2, ptr %149, align 4, !tbaa !35
  %150 = invoke noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 2, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %151 unwind label %.loopexit

151:                                              ; preds = %147
  br i1 %150, label %152, label %172

152:                                              ; preds = %151
  %153 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %154 unwind label %.loopexit

154:                                              ; preds = %152
  br i1 %153, label %155, label %172

155:                                              ; preds = %154
  %156 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %156, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %158 unwind label %.loopexit

158:                                              ; preds = %155
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.184)
          to label %160 unwind label %.loopexit

160:                                              ; preds = %158
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %159, i32 noundef %.077)
          to label %162 unwind label %.loopexit

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull @.str.181)
          to label %164 unwind label %.loopexit

164:                                              ; preds = %162
  %165 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(88) %166)
          to label %168 unwind label %.loopexit

168:                                              ; preds = %164
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %170 unwind label %.loopexit

170:                                              ; preds = %168
  %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %172 unwind label %.loopexit

172:                                              ; preds = %154, %170, %151
  %173 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br i1 %173, label %193, label %174

174:                                              ; preds = %172
  %175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %176 unwind label %.loopexit.split-lp

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

177:                                              ; preds = %176
  %178 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !33
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %178, ptr noundef nonnull @__func__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE)
          to label %180 unwind label %.loopexit.split-lp

180:                                              ; preds = %177
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @.str.185)
          to label %182 unwind label %.loopexit.split-lp

182:                                              ; preds = %180
  %183 = call noundef i64 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %181, i64 noundef %183)
          to label %185 unwind label %.loopexit.split-lp

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull @.str.186)
          to label %187 unwind label %.loopexit.split-lp

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEEERSoS6_RKSt6vectorIT_SaIS8_EE(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %189 unwind label %.loopexit.split-lp

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %191 unwind label %.loopexit.split-lp

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %201 unwind label %.loopexit.split-lp

193:                                              ; preds = %172
  %194 = add i32 %.077, 1
  %195 = invoke noundef ptr @_ZNK15TraitResolution17type_is_owned_boxERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %196 unwind label %197

196:                                              ; preds = %193
  %.not = icmp eq ptr %195, null
  br i1 %.not, label %199, label %202

197:                                              ; preds = %199, %193
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %206

199:                                              ; preds = %196
  %200 = invoke noundef ptr @_ZNK15TraitResolution9autoderefERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %202 unwind label %197

.thread:                                          ; preds = %27, %49
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  br label %209

201:                                              ; preds = %191, %176
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  br label %209

202:                                              ; preds = %199, %196
  %.275.ph = phi ptr [ %200, %199 ], [ %195, %196 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  %.not88 = icmp eq ptr %.275.ph, null
  br i1 %.not88, label %203, label %.preheader, !llvm.loop !40

203:                                              ; preds = %202
  %204 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN15TraitResolution15AutoderefBorrowEN3HIR4PathEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br i1 %204, label %209, label %205

205:                                              ; preds = %203
  call void @__assert_fail(ptr noundef nonnull @.str.187, ptr noundef nonnull @.str.7, i32 noundef 4596, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EE) #9
  unreachable

206:                                              ; preds = %.loopexit, %.loopexit.split-lp, %197
  %.pn = phi { ptr, i32 } [ %198, %197 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br label %207

207:                                              ; preds = %206, %116, %114
  %.pn.pn = phi { ptr, i32 } [ %.pn, %206 ], [ %117, %116 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %208

208:                                              ; preds = %207, %36
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %207 ], [ %37, %36 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  br label %210

209:                                              ; preds = %201, %.thread, %203
  %.3 = phi i32 [ %.077, %201 ], [ 0, %203 ], [ -1, %.thread ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #8
  ret i32 %.3

210:                                              ; preds = %34, %208, %32
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %33, %32 ], [ %.pn.pn.pn, %208 ], [ %35, %34 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %211

211:                                              ; preds = %210, %30
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %210 ], [ %31, %30 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #8
  br label %212

212:                                              ; preds = %211, %28
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %211 ], [ %29, %28 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #8
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK15TraitResolution21autoderef_find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringRS3_IS4_INS_15AutoderefBorrowENS5_4PathEESaIST_EEENK3$_1clISL_EEbRKT_"(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution11find_methodERK4SpanRKSt6vectorISt4pairIPKN3HIR10SimplePathEPKNS5_5TraitEESaISC_EERKS3_IjSaIjEERKNS5_7TypeRefERK8RcStringNS_12MethodAccessENS_15AutoderefBorrowERS3_IS4_ISS_NS5_4PathEESaISU_EE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, i32 noundef, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #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 = { 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 #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "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 #8 = { nounwind }
attributes #9 = { noreturn 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, !6, i64 224}
!10 = !{!"_ZTS15TraitResolution", !11, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !29, i64 256}
!11 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !21, i64 72, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208}
!12 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !22, i64 0, !26, i64 24}
!22 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!27 = !{!"_ZTSN3HIR10SimplePathE", !28, i64 0}
!28 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!29 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!34, !34, i64 0}
!34 = !{!"int", !7, i64 0}
!35 = !{!36, !38, i64 4}
!36 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !37, i64 0, !38, i64 4, !39, i64 8}
!37 = !{!"_ZTSN3HIR11LifetimeRefE", !34, i64 0}
!38 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!39 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass