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

; 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.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.49 = type { ptr, ptr }
%class.anon.50 = type { ptr, ptr, ptr, ptr }
%class.anon.51 = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.52" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.std::_Rb_tree_iterator.270" = type { ptr }
%"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" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.29, %class.ThinVector.30, %class.ThinVector.31 }
%class.ThinVector.29 = type { ptr }
%class.ThinVector.30 = type { ptr }
%class.ThinVector.31 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.43" }
%"struct.std::_Head_base.43" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypePathBinding::Data_Opaque" = type { i8 }
%"struct.std::_Rb_tree_iterator.273" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.276" = type { ptr }
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.32", %"class.std::map.44", ptr }
%"class.std::map.32" = type { %"class.std::_Rb_tree.33" }
%"class.std::_Rb_tree.33" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_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.std::map.44" = type { %"class.std::_Rb_tree.45" }
%"class.std::_Rb_tree.45" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%struct.Span = type { ptr }
%class.anon.279 = type { ptr, ptr, ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map", %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" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = 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" }
%class.RangeVecMap = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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 }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.210", i8, %"class.std::unordered_map.215", %"class.std::unordered_map.229", %"class.std::unordered_multimap", %"class.std::unordered_map.256", i32, %"class.std::vector.210", %"struct.HIR::SimplePath" }
%"class.HIR::GenericParams" = type { %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::unordered_map.215" = type { %"class.std::_Hashtable.216" }
%"class.std::_Hashtable.216" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.229" = type { %"class.std::_Hashtable.230" }
%"class.std::_Hashtable.230" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.243" }
%"class.std::_Hashtable.243" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.256" = type { %"class.std::_Hashtable.257" }
%"class.std::_Hashtable.257" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.210" = type { %"struct.std::_Vector_base.211" }
%"struct.std::_Vector_base.211" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeParamDef" = type <{ %class.RcString, %"class.HIR::TypeRef", i8, [7 x i8] }>
%"struct.std::pair.271" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"struct.std::pair.274" = type { %class.RcString, %"struct.HIR::TraitPath::AtyBound" }
%"struct.HIR::TraitPath::AtyBound" = type { %"class.HIR::GenericPath", %"class.std::vector.210" }
%"struct.std::pair.277" = type { %class.RcString, %"struct.HIR::AssociatedType" }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.210", %"class.HIR::TypeRef" }

@g_debug_indent_level = external global i32, align 4
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [10 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 void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; 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 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

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #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: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i1 noundef zeroext %5) #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  %13 = alloca %class.TraceLog, align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.49, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %class.anon.50, align 8
  %19 = alloca %class.anon.51, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %struct.MonomorphStatePtr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.HIR::TypeRef", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"class.HIR::Path", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.HIR::GenericPath", align 8
  %32 = alloca %class.RcString, align 8
  %33 = alloca %"struct.HIR::PathParams", align 8
  %34 = alloca %"class.HIR::TypePathBinding", align 8
  %35 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"struct.std::_Rb_tree_iterator.273", align 8
  %40 = alloca %"struct.std::_Rb_tree_iterator.273", align 8
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"class.HIR::Path", align 8
  %49 = alloca %"class.HIR::TypeRef", align 8
  %50 = alloca %"class.HIR::GenericPath", align 8
  %51 = alloca %class.RcString, align 8
  %52 = alloca %"struct.HIR::PathParams", align 8
  %53 = alloca %"class.HIR::TypePathBinding", align 8
  %54 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %"class.HIR::TraitPath", align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %59 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca %"class.HIR::Path", align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.HIR::GenericPath", align 8
  %65 = alloca %class.RcString, align 8
  %66 = alloca %"struct.HIR::PathParams", align 8
  %67 = alloca %"class.HIR::TypePathBinding", align 8
  %68 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %69 = alloca ptr, align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %72 = alloca ptr, align 8
  %73 = alloca %"class.HIR::TraitPath", align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %76 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %77 = alloca ptr, align 8
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca %"class.HIR::Path", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.HIR::GenericPath", align 8
  %82 = alloca %class.RcString, align 8
  %83 = alloca %"struct.HIR::PathParams", align 8
  %84 = alloca %"class.HIR::TypePathBinding", align 8
  %85 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %86 = alloca ptr, align 8
  %87 = alloca %struct.Span, align 8
  %88 = alloca %"class.std::function", align 8
  %89 = alloca %class.anon.279, align 8
  %90 = alloca ptr, align 8
  %91 = alloca %"class.HIR::TypeRef", align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"class.HIR::TypeRef", align 8
  %98 = alloca %"class.HIR::TraitPath", align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %99 = zext i1 %5 to i8
  store i8 %99, ptr %12, align 1, !tbaa !9
  %100 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %13) #7
  %101 = call noundef zeroext i1 @_Z13debug_enabledv()
  %102 = zext i1 %101 to i64
  %103 = select i1 %101, ptr @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  %104 = getelementptr inbounds %class.anon.49, ptr %15, i32 0, i32 0
  store ptr %3, ptr %104, align 8, !tbaa !5
  %105 = getelementptr inbounds %class.anon.49, ptr %15, i32 0, i32 1
  store ptr %4, ptr %105, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS8_7TypeRefENS8_9TraitPathEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef %103, ptr noundef %14)
          to label %106 unwind label %149

106:                                              ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  %107 = getelementptr inbounds %class.anon.50, ptr %18, i32 0, i32 0
  store ptr %100, ptr %107, align 8, !tbaa !11
  %108 = getelementptr inbounds %class.anon.50, ptr %18, i32 0, i32 1
  store ptr %3, ptr %108, align 8, !tbaa !5
  %109 = getelementptr inbounds %class.anon.50, ptr %18, i32 0, i32 2
  store ptr %9, ptr %109, align 8, !tbaa !5
  %110 = getelementptr inbounds %class.anon.50, ptr %18, i32 0, i32 3
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %111, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %112 = getelementptr inbounds %class.anon.51, ptr %19, i32 0, i32 0
  store ptr %18, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %113 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 1
  %114 = getelementptr inbounds %"class.HIR::GenericPath", ptr %113, i32 0, i32 1
  store ptr %114, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %21) #7
  %115 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef %3, ptr noundef %115, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %116 unwind label %153

116:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %117 = getelementptr inbounds %struct.TraitResolveCommon, ptr %100, i32 0, i32 0
  %118 = load ptr, ptr %117, align 8, !tbaa !13
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 1
  %121 = getelementptr inbounds %"class.HIR::GenericPath", ptr %120, i32 0, i32 0
  %122 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %118, ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %123 unwind label %157

123:                                              ; preds = %116
  store ptr %122, ptr %22, align 8, !tbaa !5
  br label %124

124:                                              ; preds = %148, %123
  %125 = load ptr, ptr %20, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.HIR::PathParams", ptr %125, i32 0, i32 1
  %127 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %128 unwind label %157

128:                                              ; preds = %124
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  %130 = getelementptr inbounds %"class.HIR::Trait", ptr %129, i32 0, i32 0
  %131 = getelementptr inbounds %"class.HIR::GenericParams", ptr %130, i32 0, i32 0
  %132 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #7
  %133 = icmp ult i64 %127, %132
  br i1 %133, label %134, label %165

134:                                              ; preds = %128
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.HIR::PathParams", ptr %135, i32 0, i32 1
  %137 = load ptr, ptr %8, align 8, !tbaa !5
  %138 = load ptr, ptr %22, align 8, !tbaa !5
  %139 = getelementptr inbounds %"class.HIR::Trait", ptr %138, i32 0, i32 0
  %140 = getelementptr inbounds %"class.HIR::GenericParams", ptr %139, i32 0, i32 0
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.HIR::PathParams", ptr %141, i32 0, i32 1
  %143 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %142)
          to label %144 unwind label %157

144:                                              ; preds = %134
  %145 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %143) #7
  %146 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %145, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %23, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %146, i1 noundef zeroext true)
          to label %147 unwind label %157

147:                                              ; preds = %144
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef %23)
          to label %148 unwind label %161

148:                                              ; preds = %147
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %124, !llvm.loop !32

149:                                              ; preds = %6
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %16, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  br label %794

153:                                              ; preds = %106
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %16, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %17, align 4
  br label %793

157:                                              ; preds = %165, %144, %134, %124, %116
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %16, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %17, align 4
  br label %792

161:                                              ; preds = %147
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %16, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %792

165:                                              ; preds = %128
  %166 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 0
  %167 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %166) #7
  %168 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 1
  %169 = invoke noundef nonnull align 8 dereferenceable(152) ptr @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_1clES6_RKNS3_11GenericPathE"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %167, ptr noundef nonnull align 8 dereferenceable(32) %168)
          to label %170 unwind label %157

170:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %171 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 2
  store ptr %171, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %172 = load ptr, ptr %24, align 8, !tbaa !5
  %173 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %172) #7
  %174 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.270", ptr %25, i32 0, i32 0
  store ptr %173, ptr %174, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %175 = load ptr, ptr %24, align 8, !tbaa !5
  %176 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %175) #7
  %177 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.270", ptr %26, i32 0, i32 0
  store ptr %176, ptr %177, align 8
  br label %178

178:                                              ; preds = %252, %170
  %179 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %179, label %181, label %180

180:                                              ; preds = %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %303

181:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %182 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  store ptr %182, ptr %27, align 8, !tbaa !5
  br label %183

183:                                              ; preds = %181
  %184 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %185 unwind label %217

185:                                              ; preds = %183
  br i1 %184, label %186, label %221

186:                                              ; preds = %185
  %187 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !34
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %187, ptr noundef @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %189 unwind label %217

189:                                              ; preds = %186
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @.str.7)
          to label %191 unwind label %217

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %193 unwind label %217

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef @.str.8)
          to label %195 unwind label %217

195:                                              ; preds = %193
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.std::pair.271", ptr %196, i32 0, i32 1
  %198 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %197, i32 0, i32 0
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(32) %198)
          to label %200 unwind label %217

200:                                              ; preds = %195
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef @.str.9)
          to label %202 unwind label %217

202:                                              ; preds = %200
  %203 = load ptr, ptr %27, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.std::pair.271", ptr %203, i32 0, i32 0
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %206 unwind label %217

206:                                              ; preds = %202
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef @.str.10)
          to label %208 unwind label %217

208:                                              ; preds = %206
  %209 = load ptr, ptr %27, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.std::pair.271", ptr %209, i32 0, i32 1
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPath8AtyEqualE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(40) %210)
          to label %212 unwind label %217

212:                                              ; preds = %208
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef @_ZSt3decRSt8ios_base)
          to label %214 unwind label %217

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %216 unwind label %217

216:                                              ; preds = %214
  br label %221

217:                                              ; preds = %223, %214, %212, %208, %206, %202, %200, %195, %193, %191, %189, %186, %183
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %16, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %17, align 4
  br label %302

221:                                              ; preds = %216, %185
  br label %222

222:                                              ; preds = %221
  br label %223

223:                                              ; preds = %222
  %224 = load ptr, ptr %27, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.std::pair.271", ptr %224, i32 0, i32 0
  %226 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 0
  %227 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %226) #7
  %228 = load ptr, ptr %27, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.std::pair.271", ptr %228, i32 0, i32 1
  invoke void @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_3clERK8RcStringS6_RKNS8_8AtyEqualE"(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef %227, ptr noundef nonnull align 8 dereferenceable(40) %229)
          to label %230 unwind label %217

230:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %30, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %231 unwind label %254

231:                                              ; preds = %230
  %232 = load ptr, ptr %27, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.std::pair.271", ptr %232, i32 0, i32 1
  %234 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %233, i32 0, i32 0
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %234)
          to label %235 unwind label %258

235:                                              ; preds = %231
  %236 = load ptr, ptr %27, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.std::pair.271", ptr %236, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %238 unwind label %262

238:                                              ; preds = %235
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %239 unwind label %266

239:                                              ; preds = %238
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %33)
          to label %240 unwind label %270

240:                                              ; preds = %239
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %34)
          to label %241 unwind label %274

241:                                              ; preds = %240
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef %29, ptr noundef %34)
          to label %242 unwind label %278

242:                                              ; preds = %241
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  %243 = load ptr, ptr %8, align 8, !tbaa !5
  %244 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 0
  %245 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #7
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %246 unwind label %287

246:                                              ; preds = %242
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.std::pair.271", ptr %247, i32 0, i32 1
  %249 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %248, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %250 unwind label %291

250:                                              ; preds = %246
  invoke void @_ZN18TraitResolveCommon26prep_indexes__add_equalityERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefES7_(ptr noundef nonnull align 8 dereferenceable(216) %100, ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef %245, ptr noundef %36, ptr noundef %37)
          to label %251 unwind label %295

251:                                              ; preds = %250
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %252

252:                                              ; preds = %251
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %178

254:                                              ; preds = %230
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %16, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %17, align 4
  br label %301

258:                                              ; preds = %231
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %16, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %17, align 4
  br label %286

262:                                              ; preds = %235
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %16, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %17, align 4
  br label %285

266:                                              ; preds = %238
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %16, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %17, align 4
  br label %284

270:                                              ; preds = %239
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %16, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %17, align 4
  br label %283

274:                                              ; preds = %240
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %16, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %17, align 4
  br label %282

278:                                              ; preds = %241
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %16, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %17, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %282

282:                                              ; preds = %278, %274
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #7
  br label %283

283:                                              ; preds = %282, %270
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  br label %284

284:                                              ; preds = %283, %266
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %285

285:                                              ; preds = %284, %262
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %286

286:                                              ; preds = %285, %258
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %301

287:                                              ; preds = %242
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %16, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %17, align 4
  br label %300

291:                                              ; preds = %246
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %16, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %17, align 4
  br label %299

295:                                              ; preds = %250
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %16, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br label %299

299:                                              ; preds = %295, %291
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br label %300

300:                                              ; preds = %299, %287
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br label %301

301:                                              ; preds = %300, %286, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %302

302:                                              ; preds = %301, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %792

303:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %304 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 3
  store ptr %304, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %305 = load ptr, ptr %38, align 8, !tbaa !5
  %306 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %305) #7
  %307 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.273", ptr %39, i32 0, i32 0
  store ptr %306, ptr %307, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %308 = load ptr, ptr %38, align 8, !tbaa !5
  %309 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %308) #7
  %310 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.273", ptr %40, i32 0, i32 0
  store ptr %309, ptr %310, align 8
  br label %311

311:                                              ; preds = %435, %303
  %312 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %312, label %314, label %313

313:                                              ; preds = %311
  store i32 8, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %437

314:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %315 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  store ptr %315, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %316 = load ptr, ptr %42, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.std::pair.274", ptr %316, i32 0, i32 1
  %318 = getelementptr inbounds %"struct.HIR::TraitPath::AtyBound", ptr %317, i32 0, i32 1
  store ptr %318, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %319 = load ptr, ptr %43, align 8, !tbaa !5
  %320 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #7
  %321 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %44, i32 0, i32 0
  store ptr %320, ptr %321, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %322 = load ptr, ptr %43, align 8, !tbaa !5
  %323 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %322) #7
  %324 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %45, i32 0, i32 0
  store ptr %323, ptr %324, align 8
  br label %325

325:                                              ; preds = %421, %314
  %326 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br i1 %326, label %328, label %327

327:                                              ; preds = %325
  store i32 10, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %434

328:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %329 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  store ptr %329, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %49, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %330 unwind label %375

330:                                              ; preds = %328
  %331 = load ptr, ptr %42, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.std::pair.274", ptr %331, i32 0, i32 1
  %333 = getelementptr inbounds %"struct.HIR::TraitPath::AtyBound", ptr %332, i32 0, i32 0
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %333)
          to label %334 unwind label %379

334:                                              ; preds = %330
  %335 = load ptr, ptr %42, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.std::pair.274", ptr %335, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %336)
          to label %337 unwind label %383

337:                                              ; preds = %334
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %52)
          to label %338 unwind label %387

338:                                              ; preds = %337
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %48, ptr noundef %49, ptr noundef %50, ptr noundef %51, ptr noundef %52)
          to label %339 unwind label %391

339:                                              ; preds = %338
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %53)
          to label %340 unwind label %395

340:                                              ; preds = %339
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %47, ptr noundef %48, ptr noundef %53)
          to label %341 unwind label %399

341:                                              ; preds = %340
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %342

342:                                              ; preds = %341
  %343 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %344 unwind label %408

344:                                              ; preds = %342
  br i1 %343, label %345, label %412

345:                                              ; preds = %344
  %346 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !34
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %346, ptr noundef @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %348 unwind label %408

348:                                              ; preds = %345
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef @.str.11)
          to label %350 unwind label %408

350:                                              ; preds = %348
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %352 unwind label %408

352:                                              ; preds = %350
  %353 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef @.str.8)
          to label %354 unwind label %408

354:                                              ; preds = %352
  %355 = load ptr, ptr %42, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.std::pair.274", ptr %355, i32 0, i32 1
  %357 = getelementptr inbounds %"struct.HIR::TraitPath::AtyBound", ptr %356, i32 0, i32 0
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %353, ptr noundef nonnull align 8 dereferenceable(32) %357)
          to label %359 unwind label %408

359:                                              ; preds = %354
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef @.str.9)
          to label %361 unwind label %408

361:                                              ; preds = %359
  %362 = load ptr, ptr %42, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.std::pair.274", ptr %362, i32 0, i32 0
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %360, ptr noundef nonnull align 8 dereferenceable(8) %363)
          to label %365 unwind label %408

365:                                              ; preds = %361
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef @.str.3)
          to label %367 unwind label %408

367:                                              ; preds = %365
  %368 = load ptr, ptr %46, align 8, !tbaa !5
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef nonnull align 8 dereferenceable(144) %368)
          to label %370 unwind label %408

370:                                              ; preds = %367
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef @_ZSt3decRSt8ios_base)
          to label %372 unwind label %408

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %374 unwind label %408

374:                                              ; preds = %372
  br label %412

375:                                              ; preds = %328
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %16, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %17, align 4
  br label %433

379:                                              ; preds = %330
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %16, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %17, align 4
  br label %407

383:                                              ; preds = %334
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %16, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %17, align 4
  br label %406

387:                                              ; preds = %337
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %16, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %17, align 4
  br label %405

391:                                              ; preds = %338
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %16, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %17, align 4
  br label %404

395:                                              ; preds = %339
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %16, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %17, align 4
  br label %403

399:                                              ; preds = %340
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %16, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %17, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #7
  br label %403

403:                                              ; preds = %399, %395
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #7
  br label %404

404:                                              ; preds = %403, %391
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  br label %405

405:                                              ; preds = %404, %387
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  br label %406

406:                                              ; preds = %405, %383
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %407

407:                                              ; preds = %406, %379
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %433

408:                                              ; preds = %414, %372, %370, %367, %365, %361, %359, %354, %352, %350, %348, %345, %342
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %16, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %17, align 4
  br label %432

412:                                              ; preds = %374, %344
  br label %413

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %417 unwind label %408

417:                                              ; preds = %414
  %418 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZNK3HIR9TraitPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %56, ptr noundef nonnull align 8 dereferenceable(144) %418)
          to label %419 unwind label %423

419:                                              ; preds = %417
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %100, ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef %416, ptr noundef %55, ptr noundef %56, i1 noundef zeroext true)
          to label %420 unwind label %427

420:                                              ; preds = %419
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %56) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %421

421:                                              ; preds = %420
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br label %325

423:                                              ; preds = %417
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %16, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %17, align 4
  br label %431

427:                                              ; preds = %419
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %16, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %17, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %56) #7
  br label %431

431:                                              ; preds = %427, %423
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  br label %432

432:                                              ; preds = %431, %408
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br label %433

433:                                              ; preds = %432, %407, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %792

434:                                              ; preds = %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %435

435:                                              ; preds = %434
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %311

437:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = getelementptr inbounds %"class.HIR::Trait", ptr %438, i32 0, i32 4
  store ptr %439, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %440 = load ptr, ptr %57, align 8, !tbaa !5
  %441 = call ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %440) #7
  %442 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %58, i32 0, i32 0
  %443 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %442, i32 0, i32 0
  store ptr %441, ptr %443, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %444 = load ptr, ptr %57, align 8, !tbaa !5
  %445 = call ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %444) #7
  %446 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %59, i32 0, i32 0
  %447 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %446, i32 0, i32 0
  store ptr %445, ptr %447, align 8
  br label %448

448:                                              ; preds = %732, %437
  %449 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br i1 %449, label %451, label %450

450:                                              ; preds = %448
  store i32 14, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %735

451:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %452 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  store ptr %452, ptr %60, align 8, !tbaa !5
  %453 = load ptr, ptr %60, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.std::pair.277", ptr %453, i32 0, i32 1
  %455 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %454, i32 0, i32 3
  %456 = call noundef zeroext i1 @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %455) #7
  br i1 %456, label %457, label %458

457:                                              ; preds = %451
  store i32 15, ptr %41, align 4
  br label %729

458:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %63, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %459 unwind label %481

459:                                              ; preds = %458
  %460 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4, i32 0, i32 1
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %64, ptr noundef nonnull align 8 dereferenceable(32) %460)
          to label %461 unwind label %485

461:                                              ; preds = %459
  %462 = load ptr, ptr %60, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.std::pair.277", ptr %462, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %463)
          to label %464 unwind label %489

464:                                              ; preds = %461
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %66)
          to label %465 unwind label %493

465:                                              ; preds = %464
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %62, ptr noundef %63, ptr noundef %64, ptr noundef %65, ptr noundef %66)
          to label %466 unwind label %497

466:                                              ; preds = %465
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %67)
          to label %467 unwind label %501

467:                                              ; preds = %466
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %61, ptr noundef %62, ptr noundef %67)
          to label %468 unwind label %505

468:                                              ; preds = %467
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %469 = load ptr, ptr %60, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.std::pair.277", ptr %469, i32 0, i32 1
  %471 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %470, i32 0, i32 3
  store ptr %471, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %472 = load ptr, ptr %69, align 8, !tbaa !5
  %473 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %472) #7
  %474 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %70, i32 0, i32 0
  store ptr %473, ptr %474, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %475 = load ptr, ptr %69, align 8, !tbaa !5
  %476 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %475) #7
  %477 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %71, i32 0, i32 0
  store ptr %476, ptr %477, align 8
  br label %478

478:                                              ; preds = %724, %468
  %479 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71) #7
  br i1 %479, label %514, label %480

480:                                              ; preds = %478
  store i32 16, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  br label %728

481:                                              ; preds = %458
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %16, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %17, align 4
  br label %734

485:                                              ; preds = %459
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %16, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %17, align 4
  br label %513

489:                                              ; preds = %461
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %16, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %17, align 4
  br label %512

493:                                              ; preds = %464
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %16, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %17, align 4
  br label %511

497:                                              ; preds = %465
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %16, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %17, align 4
  br label %510

501:                                              ; preds = %466
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %16, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %17, align 4
  br label %509

505:                                              ; preds = %467
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %16, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %17, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  br label %509

509:                                              ; preds = %505, %501
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #7
  br label %510

510:                                              ; preds = %509, %497
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  br label %511

511:                                              ; preds = %510, %493
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  br label %512

512:                                              ; preds = %511, %489
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %513

513:                                              ; preds = %512, %485
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  br label %734

514:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %515 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  store ptr %515, ptr %72, align 8, !tbaa !5
  br label %516

516:                                              ; preds = %514
  %517 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %518 unwind label %532

518:                                              ; preds = %516
  br i1 %517, label %519, label %536

519:                                              ; preds = %518
  %520 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !34
  %521 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %520, ptr noundef @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %522 unwind label %532

522:                                              ; preds = %519
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %521, ptr noundef @.str.12)
          to label %524 unwind label %532

524:                                              ; preds = %522
  %525 = load ptr, ptr %72, align 8, !tbaa !5
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 8 dereferenceable(144) %525)
          to label %527 unwind label %532

527:                                              ; preds = %524
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef @_ZSt3decRSt8ios_base)
          to label %529 unwind label %532

529:                                              ; preds = %527
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %531 unwind label %532

531:                                              ; preds = %529
  br label %536

532:                                              ; preds = %529, %527, %524, %522, %519, %516
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %16, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %17, align 4
  br label %727

536:                                              ; preds = %531, %518
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 144, ptr %73) #7
  %539 = load ptr, ptr %8, align 8, !tbaa !5
  %540 = load ptr, ptr %72, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %73, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %539, ptr noundef nonnull align 8 dereferenceable(144) %540, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %541 unwind label %552

541:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %542 = getelementptr inbounds %"class.HIR::TraitPath", ptr %73, i32 0, i32 2
  store ptr %542, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %543 = load ptr, ptr %74, align 8, !tbaa !5
  %544 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %543) #7
  %545 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.270", ptr %75, i32 0, i32 0
  store ptr %544, ptr %545, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  %546 = load ptr, ptr %74, align 8, !tbaa !5
  %547 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %546) #7
  %548 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.270", ptr %76, i32 0, i32 0
  store ptr %547, ptr %548, align 8
  br label %549

549:                                              ; preds = %704, %541
  %550 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  br i1 %550, label %556, label %551

551:                                              ; preds = %549
  store i32 20, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %723

552:                                              ; preds = %538
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %16, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %17, align 4
  br label %726

556:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  %557 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  store ptr %557, ptr %77, align 8, !tbaa !5
  br label %558

558:                                              ; preds = %556
  %559 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %560 unwind label %592

560:                                              ; preds = %558
  br i1 %559, label %561, label %596

561:                                              ; preds = %560
  %562 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !34
  %563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %562, ptr noundef @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %564 unwind label %592

564:                                              ; preds = %561
  %565 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %563, ptr noundef @.str.13)
          to label %566 unwind label %592

566:                                              ; preds = %564
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %568 unwind label %592

568:                                              ; preds = %566
  %569 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef @.str.8)
          to label %570 unwind label %592

570:                                              ; preds = %568
  %571 = load ptr, ptr %77, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.std::pair.271", ptr %571, i32 0, i32 1
  %573 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %572, i32 0, i32 0
  %574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef nonnull align 8 dereferenceable(32) %573)
          to label %575 unwind label %592

575:                                              ; preds = %570
  %576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %574, ptr noundef @.str.9)
          to label %577 unwind label %592

577:                                              ; preds = %575
  %578 = load ptr, ptr %77, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.std::pair.271", ptr %578, i32 0, i32 0
  %580 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(8) %579)
          to label %581 unwind label %592

581:                                              ; preds = %577
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef @.str.10)
          to label %583 unwind label %592

583:                                              ; preds = %581
  %584 = load ptr, ptr %77, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.std::pair.271", ptr %584, i32 0, i32 1
  %586 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPath8AtyEqualE(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef nonnull align 8 dereferenceable(40) %585)
          to label %587 unwind label %592

587:                                              ; preds = %583
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef @_ZSt3decRSt8ios_base)
          to label %589 unwind label %592

589:                                              ; preds = %587
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %591 unwind label %592

591:                                              ; preds = %589
  br label %596

592:                                              ; preds = %589, %587, %583, %581, %577, %575, %570, %568, %566, %564, %561, %558
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %16, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %17, align 4
  br label %722

596:                                              ; preds = %591, %560
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %599 unwind label %627

599:                                              ; preds = %598
  %600 = load ptr, ptr %77, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.std::pair.271", ptr %600, i32 0, i32 1
  %602 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %601, i32 0, i32 0
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %81, ptr noundef nonnull align 8 dereferenceable(32) %602)
          to label %603 unwind label %631

603:                                              ; preds = %599
  %604 = load ptr, ptr %77, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.std::pair.271", ptr %604, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %606 unwind label %635

606:                                              ; preds = %603
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %607 unwind label %639

607:                                              ; preds = %606
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83)
          to label %608 unwind label %643

608:                                              ; preds = %607
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %84)
          to label %609 unwind label %647

609:                                              ; preds = %608
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %78, ptr noundef %79, ptr noundef %84)
          to label %610 unwind label %651

610:                                              ; preds = %609
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  %611 = load ptr, ptr %9, align 8, !tbaa !5
  %612 = icmp ne ptr %611, null
  br i1 %612, label %613, label %685

613:                                              ; preds = %610
  %614 = getelementptr inbounds %"class.HIR::TraitPath", ptr %73, i32 0, i32 0
  %615 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %614) #7
  br i1 %615, label %616, label %685

616:                                              ; preds = %613
  br label %617

617:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  store ptr @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  %618 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %619 unwind label %660

619:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #7
  %620 = getelementptr inbounds %class.anon.279, ptr %89, i32 0, i32 0
  store ptr %86, ptr %620, align 8, !tbaa !5
  %621 = getelementptr inbounds %class.anon.279, ptr %89, i32 0, i32 1
  store ptr %9, ptr %621, align 8, !tbaa !5
  %622 = getelementptr inbounds %class.anon.279, ptr %89, i32 0, i32 2
  store ptr %73, ptr %622, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS8_7TypeRefENS8_9TraitPathEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %623 unwind label %664

623:                                              ; preds = %619
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef %88)
          to label %624 unwind label %668

624:                                              ; preds = %623
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  %625 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %625, ptr noundef @.str.14)
          to label %626 unwind label %674

626:                                              ; preds = %624
  invoke void @__cxa_throw(ptr %625, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %800 unwind label %678

627:                                              ; preds = %598
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %16, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %17, align 4
  br label %721

631:                                              ; preds = %599
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %16, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %17, align 4
  br label %659

635:                                              ; preds = %603
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %16, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %17, align 4
  br label %658

639:                                              ; preds = %606
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %16, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %17, align 4
  br label %657

643:                                              ; preds = %607
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %16, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %17, align 4
  br label %656

647:                                              ; preds = %608
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %16, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %17, align 4
  br label %655

651:                                              ; preds = %609
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %16, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %17, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  br label %655

655:                                              ; preds = %651, %647
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #7
  br label %656

656:                                              ; preds = %655, %643
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  br label %657

657:                                              ; preds = %656, %639
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br label %658

658:                                              ; preds = %657, %635
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %659

659:                                              ; preds = %658, %631
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  br label %721

660:                                              ; preds = %617
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %16, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %17, align 4
  br label %673

664:                                              ; preds = %619
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %16, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %17, align 4
  br label %672

668:                                              ; preds = %623
  %669 = landingpad { ptr, i32 }
          cleanup
  %670 = extractvalue { ptr, i32 } %669, 0
  store ptr %670, ptr %16, align 8
  %671 = extractvalue { ptr, i32 } %669, 1
  store i32 %671, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  br label %672

672:                                              ; preds = %668, %664
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  br label %673

673:                                              ; preds = %672, %660
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  br label %682

674:                                              ; preds = %624
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %16, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %17, align 4
  call void @__cxa_free_exception(ptr %625) #7
  br label %682

678:                                              ; preds = %626
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %16, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %17, align 4
  br label %682

682:                                              ; preds = %678, %674, %673
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  br label %720

683:                                              ; No predecessors!
  br label %684

684:                                              ; preds = %683
  br label %685

685:                                              ; preds = %684, %613, %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %686 = load ptr, ptr %9, align 8, !tbaa !5
  %687 = icmp ne ptr %686, null
  br i1 %687, label %688, label %690

688:                                              ; preds = %685
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  br label %694

690:                                              ; preds = %685
  %691 = load ptr, ptr %72, align 8, !tbaa !5
  %692 = getelementptr inbounds %"class.HIR::TraitPath", ptr %691, i32 0, i32 0
  %693 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %692) #7
  br label %694

694:                                              ; preds = %690, %688
  %695 = phi ptr [ %689, %688 ], [ %693, %690 ]
  store ptr %695, ptr %90, align 8, !tbaa !5
  %696 = load ptr, ptr %8, align 8, !tbaa !5
  %697 = load ptr, ptr %90, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %698 unwind label %706

698:                                              ; preds = %694
  %699 = load ptr, ptr %77, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.std::pair.271", ptr %699, i32 0, i32 1
  %701 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %700, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %701)
          to label %702 unwind label %710

702:                                              ; preds = %698
  invoke void @_ZN18TraitResolveCommon26prep_indexes__add_equalityERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefES7_(ptr noundef nonnull align 8 dereferenceable(216) %100, ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef %697, ptr noundef %91, ptr noundef %92)
          to label %703 unwind label %714

703:                                              ; preds = %702
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  br label %704

704:                                              ; preds = %703
  %705 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  br label %549

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

710:                                              ; preds = %698
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %16, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %17, align 4
  br label %718

714:                                              ; preds = %702
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %16, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  br label %718

718:                                              ; preds = %714, %710
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  br label %719

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

720:                                              ; preds = %719, %682
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  br label %721

721:                                              ; preds = %720, %659, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %722

722:                                              ; preds = %721, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %73) #7
  br label %726

723:                                              ; preds = %551
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %73) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %724

724:                                              ; preds = %723
  %725 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  br label %478

726:                                              ; preds = %722, %552
  call void @llvm.lifetime.end.p0(i64 144, ptr %73) #7
  br label %727

727:                                              ; preds = %726, %532
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br label %734

728:                                              ; preds = %480
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  store i32 0, ptr %41, align 4
  br label %729

729:                                              ; preds = %728, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  %730 = load i32, ptr %41, align 4
  switch i32 %730, label %800 [
    i32 0, label %731
    i32 15, label %732
  ]

731:                                              ; preds = %729
  br label %732

732:                                              ; preds = %731, %729
  %733 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br label %448

734:                                              ; preds = %727, %513, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %792

735:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %736 = load ptr, ptr %22, align 8, !tbaa !5
  %737 = getelementptr inbounds %"class.HIR::Trait", ptr %736, i32 0, i32 9
  store ptr %737, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  %738 = load ptr, ptr %93, align 8, !tbaa !5
  %739 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %738) #7
  %740 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %94, i32 0, i32 0
  store ptr %739, ptr %740, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %741 = load ptr, ptr %93, align 8, !tbaa !5
  %742 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %741) #7
  %743 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.276", ptr %95, i32 0, i32 0
  store ptr %742, ptr %743, align 8
  br label %744

744:                                              ; preds = %779, %735
  %745 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #7
  br i1 %745, label %747, label %746

746:                                              ; preds = %744
  store i32 26, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  br label %791

747:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %748 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  store ptr %748, ptr %96, align 8, !tbaa !5
  br label %749

749:                                              ; preds = %747
  %750 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %751 unwind label %765

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

752:                                              ; preds = %751
  %753 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !34
  %754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %753, ptr noundef @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %755 unwind label %765

755:                                              ; preds = %752
  %756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %754, ptr noundef @.str.15)
          to label %757 unwind label %765

757:                                              ; preds = %755
  %758 = load ptr, ptr %96, align 8, !tbaa !5
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %756, ptr noundef nonnull align 8 dereferenceable(144) %758)
          to label %760 unwind label %765

760:                                              ; preds = %757
  %761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef @_ZSt3decRSt8ios_base)
          to label %762 unwind label %765

762:                                              ; preds = %760
  %763 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %761, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %764 unwind label %765

764:                                              ; preds = %762
  br label %769

765:                                              ; preds = %771, %762, %760, %757, %755, %752, %749
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %16, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %17, align 4
  br label %790

769:                                              ; preds = %764, %751
  br label %770

770:                                              ; preds = %769
  br label %771

771:                                              ; preds = %770
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %97, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %774 unwind label %765

774:                                              ; preds = %771
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = load ptr, ptr %96, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %98, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %775, ptr noundef nonnull align 8 dereferenceable(144) %776, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %777 unwind label %781

777:                                              ; preds = %774
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %100, ptr noundef nonnull align 8 dereferenceable(8) %772, ptr noundef %773, ptr noundef %97, ptr noundef %98, i1 noundef zeroext false)
          to label %778 unwind label %785

778:                                              ; preds = %777
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %779

779:                                              ; preds = %778
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  br label %744

781:                                              ; preds = %774
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %16, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %17, align 4
  br label %789

785:                                              ; preds = %777
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %16, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %17, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %98) #7
  br label %789

789:                                              ; preds = %785, %781
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  br label %790

790:                                              ; preds = %789, %765
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  br label %792

791:                                              ; preds = %746
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #7
  ret void

792:                                              ; preds = %790, %734, %433, %302, %161, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #7
  br label %793

793:                                              ; preds = %792, %153
  call void @llvm.lifetime.end.p0(i64 128, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  br label %794

794:                                              ; preds = %793, %149
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #7
  br label %795

795:                                              ; preds = %794
  %796 = load ptr, ptr %16, align 8
  %797 = load i32, ptr %17, align 4
  %798 = insertvalue { ptr, i32 } poison, ptr %796, 0
  %799 = insertvalue { ptr, i32 } %798, i32 %797, 1
  resume { ptr, i32 } %799

800:                                              ; preds = %729, %626
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(152) ptr @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_1clES6_RKNS3_11GenericPathE"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_3clERK8RcStringS6_RKNS8_8AtyEqualE"(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40)) #2 align 2

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

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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) #3 align 2

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

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

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

declare void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext) #1

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #1

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4 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 = { 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 = { 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 = { 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 #7 = { nounwind }
attributes #8 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !15, i64 24, !24, i64 72, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208}
!15 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!30 = !{!"_ZTSN3HIR10SimplePathE", !31, i64 0}
!31 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!35, !35, i64 0}
!35 = !{!"int", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.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.49 = type { ptr, ptr }
%class.anon.50 = type { ptr, ptr, ptr, ptr }
%class.anon.51 = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.52" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.std::_Rb_tree_iterator.270" = type { ptr }
%"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" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.29, %class.ThinVector.30, %class.ThinVector.31 }
%class.ThinVector.29 = type { ptr }
%class.ThinVector.30 = type { ptr }
%class.ThinVector.31 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.43" }
%"struct.std::_Head_base.43" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.std::_Rb_tree_iterator.273" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.276" = type { ptr }
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.32", %"class.std::map.44", ptr }
%"class.std::map.32" = type { %"class.std::_Rb_tree.33" }
%"class.std::_Rb_tree.33" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_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.std::map.44" = type { %"class.std::_Rb_tree.45" }
%"class.std::_Rb_tree.45" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%struct.Span = type { ptr }
%class.anon.279 = type { ptr, ptr, ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [10 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 void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; 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 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

; 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 nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) 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: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i1 zeroext %5) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.49, align 8
  %11 = alloca %class.anon.50, align 8
  %12 = alloca %class.anon.51, align 8
  %13 = alloca %struct.MonomorphStatePtr, align 8
  %14 = alloca %"class.HIR::TypeRef", align 8
  %15 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %16 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %17 = alloca %"class.HIR::TypeRef", align 8
  %18 = alloca %"class.HIR::Path", align 8
  %19 = alloca %"class.HIR::TypeRef", align 8
  %20 = alloca %"class.HIR::GenericPath", align 8
  %21 = alloca %class.RcString, align 8
  %22 = alloca %"struct.HIR::PathParams", align 8
  %23 = alloca %"class.HIR::TypePathBinding", align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"class.HIR::TypeRef", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.273", align 8
  %27 = alloca %"struct.std::_Rb_tree_iterator.273", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.HIR::Path", align 8
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %"class.HIR::GenericPath", align 8
  %34 = alloca %class.RcString, align 8
  %35 = alloca %"struct.HIR::PathParams", align 8
  %36 = alloca %"class.HIR::TypePathBinding", align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca %"class.HIR::TraitPath", align 8
  %39 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %40 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::Path", align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"class.HIR::GenericPath", align 8
  %45 = alloca %class.RcString, align 8
  %46 = alloca %"struct.HIR::PathParams", align 8
  %47 = alloca %"class.HIR::TypePathBinding", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %50 = alloca %"class.HIR::TraitPath", align 8
  %51 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %52 = alloca %"struct.std::_Rb_tree_iterator.270", align 8
  %53 = alloca %"class.HIR::TypeRef", align 8
  %54 = alloca %"class.HIR::Path", align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %"class.HIR::GenericPath", align 8
  %57 = alloca %class.RcString, align 8
  %58 = alloca %"struct.HIR::PathParams", align 8
  %59 = alloca %"class.HIR::TypePathBinding", align 8
  %60 = alloca ptr, align 8
  %61 = alloca %struct.Span, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.279, align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.276", align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %"class.HIR::TraitPath", align 8
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #7
  %70 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %71 = select i1 %70, ptr @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  store ptr %3, ptr %10, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %4, ptr %72, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS8_7TypeRefENS8_9TraitPathEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %71, ptr noundef nonnull %9)
          to label %73 unwind label %95

73:                                               ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  store ptr %0, ptr %11, align 8, !tbaa !9
  %74 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %3, ptr %74, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %7, ptr %75, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %11, i64 24
  store ptr %1, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  store ptr %11, ptr %12, align 8, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %4, i64 8
  %78 = getelementptr inbounds i8, ptr %4, i64 16
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %13) #7
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %13, ptr noundef %3, ptr noundef nonnull %78, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %79 unwind label %97

79:                                               ; preds = %73
  %80 = load ptr, ptr %0, align 8, !tbaa !11
  %81 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %80, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %79
  %82 = getelementptr inbounds i8, ptr %4, i64 24
  br label %83

83:                                               ; preds = %.preheader, %94
  %84 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %85 unwind label %.loopexit

85:                                               ; preds = %83
  %86 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #7
  %87 = icmp ult i64 %84, %86
  br i1 %87, label %88, label %101

88:                                               ; preds = %85
  %89 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %90 unwind label %.loopexit

90:                                               ; preds = %88
  %91 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %89) #7
  %92 = getelementptr inbounds i8, ptr %91, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %14, ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %92, i1 noundef zeroext true)
          to label %93 unwind label %.loopexit

93:                                               ; preds = %90
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull %14)
          to label %94 unwind label %99

94:                                               ; preds = %93
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %83, !llvm.loop !30

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

97:                                               ; preds = %73
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %442

.loopexit:                                        ; preds = %83, %88, %90
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %441

.loopexit.split-lp:                               ; preds = %79, %101
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %441

99:                                               ; preds = %93
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %441

101:                                              ; preds = %85
  %102 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %103 = invoke noundef nonnull align 8 dereferenceable(152) ptr @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_1clES6_RKNS3_11GenericPathE"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %102, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %104 unwind label %.loopexit.split-lp

104:                                              ; preds = %101
  %105 = getelementptr inbounds i8, ptr %4, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %106 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %105) #7
  store ptr %106, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %107 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %105) #7
  store ptr %107, ptr %16, align 8
  %108 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br i1 %108, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %155, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  %109 = getelementptr inbounds i8, ptr %4, i64 88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %110 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %109) #7
  store ptr %110, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %111 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %109) #7
  store ptr %111, ptr %27, align 8
  %112 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br i1 %112, label %.lr.ph152, label %._crit_edge153

.lr.ph:                                           ; preds = %104, %155
  %113 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  %114 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %115 unwind label %140

115:                                              ; preds = %.lr.ph
  br i1 %114, label %116, label %142

116:                                              ; preds = %115
  %117 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !32
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %117, ptr noundef nonnull @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %119 unwind label %140

119:                                              ; preds = %116
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @.str.7)
          to label %121 unwind label %140

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %123 unwind label %140

123:                                              ; preds = %121
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull @.str.8)
          to label %125 unwind label %140

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %113, i64 8
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %128 unwind label %140

128:                                              ; preds = %125
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.9)
          to label %130 unwind label %140

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %132 unwind label %140

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

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPath8AtyEqualE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(40) %126)
          to label %136 unwind label %140

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %138 unwind label %140

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %142 unwind label %140

140:                                              ; preds = %142, %138, %136, %134, %132, %130, %128, %125, %123, %121, %119, %116, %.lr.ph
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %180

142:                                              ; preds = %138, %115
  %143 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %144 = getelementptr inbounds i8, ptr %113, i64 8
  invoke void @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_3clERK8RcStringS6_RKNS8_8AtyEqualE"(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef %143, ptr noundef nonnull align 8 dereferenceable(40) %144)
          to label %145 unwind label %140

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %146 unwind label %158

146:                                              ; preds = %145
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %144)
          to label %147 unwind label %160

147:                                              ; preds = %146
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %113)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %148 unwind label %162

148:                                              ; preds = %147
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22)
          to label %149 unwind label %164

149:                                              ; preds = %148
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %23)
          to label %150 unwind label %166

150:                                              ; preds = %149
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %17, ptr noundef nonnull %18, ptr noundef nonnull %23)
          to label %151 unwind label %168

151:                                              ; preds = %150
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  %152 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %17)
  %153 = getelementptr inbounds i8, ptr %113, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %154 unwind label %174

154:                                              ; preds = %151
  invoke void @_ZN18TraitResolveCommon26prep_indexes__add_equalityERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefES7_(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %152, ptr noundef nonnull %24, ptr noundef nonnull %25)
          to label %155 unwind label %176

155:                                              ; preds = %154
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  %157 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br i1 %157, label %.lr.ph, label %._crit_edge

158:                                              ; preds = %145
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %179

160:                                              ; preds = %146
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %173

162:                                              ; preds = %147
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %172

164:                                              ; preds = %148
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %171

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

168:                                              ; preds = %150
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #7
  br label %170

170:                                              ; preds = %168, %166
  %.pn134 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #7
  br label %171

171:                                              ; preds = %170, %164
  %.pn134.pn = phi { ptr, i32 } [ %.pn134, %170 ], [ %165, %164 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  br label %172

172:                                              ; preds = %171, %162
  %.pn134.pn.pn = phi { ptr, i32 } [ %.pn134.pn, %171 ], [ %163, %162 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %173

173:                                              ; preds = %172, %160
  %.pn134.pn.pn.pn = phi { ptr, i32 } [ %.pn134.pn.pn, %172 ], [ %161, %160 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %179

174:                                              ; preds = %151
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %178

176:                                              ; preds = %154
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %178

178:                                              ; preds = %176, %174
  %.pn139 = phi { ptr, i32 } [ %177, %176 ], [ %175, %174 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %179

179:                                              ; preds = %178, %173, %158
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %178 ], [ %.pn134.pn.pn.pn, %173 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %180

180:                                              ; preds = %179, %140
  %.pn139.pn.pn = phi { ptr, i32 } [ %.pn139.pn, %179 ], [ %141, %140 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %441

._crit_edge153:                                   ; preds = %._crit_edge150, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  %181 = getelementptr inbounds i8, ptr %81, i64 136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %182 = call ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %181) #7
  store ptr %182, ptr %39, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  %183 = call ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %181) #7
  store ptr %183, ptr %40, align 8
  %184 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %184, label %.lr.ph161, label %._crit_edge162

.lr.ph161:                                        ; preds = %._crit_edge153
  %185 = getelementptr inbounds i8, ptr %50, i64 40
  br label %261

.lr.ph152:                                        ; preds = %._crit_edge, %._crit_edge150
  %186 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  %188 = getelementptr inbounds i8, ptr %186, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  %189 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #7
  store ptr %189, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %190 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #7
  store ptr %190, ptr %29, align 8
  %191 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %191, label %.lr.ph149, label %._crit_edge150

._crit_edge150:                                   ; preds = %247, %.lr.ph152
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  %193 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br i1 %193, label %.lr.ph152, label %._crit_edge153

.lr.ph149:                                        ; preds = %.lr.ph152, %247
  %194 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %195 unwind label %226

195:                                              ; preds = %.lr.ph149
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %187)
          to label %196 unwind label %228

196:                                              ; preds = %195
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %186)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %197 unwind label %230

197:                                              ; preds = %196
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35)
          to label %198 unwind label %232

198:                                              ; preds = %197
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %36)
          to label %199 unwind label %234

199:                                              ; preds = %198
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %30, ptr noundef nonnull %31, ptr noundef nonnull %36)
          to label %200 unwind label %236

200:                                              ; preds = %199
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %201 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %202 unwind label %242

202:                                              ; preds = %200
  br i1 %201, label %203, label %244

203:                                              ; preds = %202
  %204 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !32
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %204, ptr noundef nonnull @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %206 unwind label %242

206:                                              ; preds = %203
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull @.str.11)
          to label %208 unwind label %242

208:                                              ; preds = %206
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %210 unwind label %242

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @.str.8)
          to label %212 unwind label %242

212:                                              ; preds = %210
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(32) %187)
          to label %214 unwind label %242

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull @.str.9)
          to label %216 unwind label %242

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %218 unwind label %242

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull @.str.3)
          to label %220 unwind label %242

220:                                              ; preds = %218
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull align 8 dereferenceable(144) %194)
          to label %222 unwind label %242

222:                                              ; preds = %220
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %224 unwind label %242

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %244 unwind label %242

226:                                              ; preds = %.lr.ph149
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %256

228:                                              ; preds = %195
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %241

230:                                              ; preds = %196
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %240

232:                                              ; preds = %197
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %239

234:                                              ; preds = %198
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %199
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %238

238:                                              ; preds = %236, %234
  %.pn125 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #7
  br label %239

239:                                              ; preds = %238, %232
  %.pn125.pn = phi { ptr, i32 } [ %.pn125, %238 ], [ %233, %232 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  br label %240

240:                                              ; preds = %239, %230
  %.pn125.pn.pn = phi { ptr, i32 } [ %.pn125.pn, %239 ], [ %231, %230 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %241

241:                                              ; preds = %240, %228
  %.pn125.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn, %240 ], [ %229, %228 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %256

242:                                              ; preds = %224, %222, %220, %218, %216, %214, %212, %210, %208, %206, %203, %200
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %255

244:                                              ; preds = %224, %202
  %245 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %30)
  invoke void @_ZNK3HIR9TraitPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %38, ptr noundef nonnull align 8 dereferenceable(144) %194)
          to label %246 unwind label %250

246:                                              ; preds = %244
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %245, ptr noundef nonnull %37, ptr noundef nonnull %38, i1 zeroext poison)
          to label %247 unwind label %252

247:                                              ; preds = %246
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %38) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  %249 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %249, label %.lr.ph149, label %._crit_edge150

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %254

252:                                              ; preds = %246
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %38) #7
  br label %254

254:                                              ; preds = %252, %250
  %.pn130 = phi { ptr, i32 } [ %253, %252 ], [ %251, %250 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br label %255

255:                                              ; preds = %254, %242
  %.pn130.pn = phi { ptr, i32 } [ %.pn130, %254 ], [ %243, %242 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %256

256:                                              ; preds = %255, %241, %226
  %.pn130.pn.pn = phi { ptr, i32 } [ %.pn130.pn, %255 ], [ %.pn125.pn.pn.pn, %241 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %441

._crit_edge162:                                   ; preds = %408, %._crit_edge153
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  %257 = getelementptr inbounds i8, ptr %81, i64 368
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #7
  %258 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #7
  store ptr %258, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  %259 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #7
  store ptr %259, ptr %67, align 8
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br i1 %260, label %.lr.ph164, label %._crit_edge165

261:                                              ; preds = %.lr.ph161, %408
  %262 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  %263 = getelementptr inbounds i8, ptr %262, i64 112
  %264 = call noundef zeroext i1 @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %263) #7
  br i1 %264, label %408, label %265

265:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %266 unwind label %275

266:                                              ; preds = %265
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %44, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %267 unwind label %277

267:                                              ; preds = %266
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %262)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %268 unwind label %279

268:                                              ; preds = %267
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull %46)
          to label %269 unwind label %281

269:                                              ; preds = %268
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %47)
          to label %270 unwind label %283

270:                                              ; preds = %269
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull %42, ptr noundef nonnull %47)
          to label %271 unwind label %285

271:                                              ; preds = %270
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #7
  %272 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %263) #7
  store ptr %272, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #7
  %273 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %263) #7
  store ptr %273, ptr %49, align 8
  %274 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %274, label %.lr.ph158, label %._crit_edge159

._crit_edge159:                                   ; preds = %._crit_edge156, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %408

275:                                              ; preds = %265
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %411

277:                                              ; preds = %266
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %290

279:                                              ; preds = %267
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %289

281:                                              ; preds = %268
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %288

283:                                              ; preds = %269
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %270
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  br label %287

287:                                              ; preds = %285, %283
  %.pn103 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #7
  br label %288

288:                                              ; preds = %287, %281
  %.pn103.pn = phi { ptr, i32 } [ %.pn103, %287 ], [ %282, %281 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %289

289:                                              ; preds = %288, %279
  %.pn103.pn.pn = phi { ptr, i32 } [ %.pn103.pn, %288 ], [ %280, %279 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %290

290:                                              ; preds = %289, %277
  %.pn103.pn.pn.pn = phi { ptr, i32 } [ %.pn103.pn.pn, %289 ], [ %278, %277 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br label %411

.lr.ph158:                                        ; preds = %271, %._crit_edge156
  %291 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  %292 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %293 unwind label %305

293:                                              ; preds = %.lr.ph158
  br i1 %292, label %294, label %307

294:                                              ; preds = %293
  %295 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !32
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %295, ptr noundef nonnull @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %297 unwind label %305

297:                                              ; preds = %294
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull @.str.12)
          to label %299 unwind label %305

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull align 8 dereferenceable(144) %291)
          to label %301 unwind label %305

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %303 unwind label %305

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %307 unwind label %305

305:                                              ; preds = %303, %301, %299, %297, %294, %.lr.ph158
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %407

307:                                              ; preds = %303, %293
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %50) #7
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %50, ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %291, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %308 unwind label %314

308:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  %309 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %185) #7
  store ptr %309, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  %310 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %185) #7
  store ptr %310, ptr %52, align 8
  %311 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %311, label %.lr.ph155, label %._crit_edge156

._crit_edge156:                                   ; preds = %398, %308
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %50) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %50) #7
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  %313 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %313, label %.lr.ph158, label %._crit_edge159

314:                                              ; preds = %307
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %406

.lr.ph155:                                        ; preds = %308, %398
  %316 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %317 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %318 unwind label %343

318:                                              ; preds = %.lr.ph155
  br i1 %317, label %319, label %345

319:                                              ; preds = %318
  %320 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !32
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %320, ptr noundef nonnull @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %322 unwind label %343

322:                                              ; preds = %319
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @.str.13)
          to label %324 unwind label %343

324:                                              ; preds = %322
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %326 unwind label %343

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull @.str.8)
          to label %328 unwind label %343

328:                                              ; preds = %326
  %329 = getelementptr inbounds i8, ptr %316, i64 8
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(32) %329)
          to label %331 unwind label %343

331:                                              ; preds = %328
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @.str.9)
          to label %333 unwind label %343

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(8) %316)
          to label %335 unwind label %343

335:                                              ; preds = %333
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull @.str.10)
          to label %337 unwind label %343

337:                                              ; preds = %335
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPath8AtyEqualE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(40) %329)
          to label %339 unwind label %343

339:                                              ; preds = %337
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %341 unwind label %343

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %345 unwind label %343

343:                                              ; preds = %341, %339, %337, %335, %333, %331, %328, %326, %324, %322, %319, %.lr.ph155
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %405

345:                                              ; preds = %341, %318
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %55, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %346 unwind label %364

346:                                              ; preds = %345
  %347 = getelementptr inbounds i8, ptr %316, i64 8
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %347)
          to label %348 unwind label %366

348:                                              ; preds = %346
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %316)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %349 unwind label %368

349:                                              ; preds = %348
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %54, ptr noundef nonnull %55, ptr noundef nonnull %56, ptr noundef nonnull %57, ptr noundef nonnull %58)
          to label %350 unwind label %370

350:                                              ; preds = %349
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %59)
          to label %351 unwind label %372

351:                                              ; preds = %350
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %53, ptr noundef nonnull %54, ptr noundef nonnull %59)
          to label %352 unwind label %374

352:                                              ; preds = %351
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  %353 = load ptr, ptr %7, align 8, !tbaa !5
  %.not = icmp eq ptr %353, null
  br i1 %.not, label %.thread, label %354

354:                                              ; preds = %352
  %355 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br i1 %355, label %356, label %393

356:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  store ptr @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %357 unwind label %380

357:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #7
  store ptr %60, ptr %63, align 8, !tbaa !5
  %358 = getelementptr inbounds i8, ptr %63, i64 8
  store ptr %7, ptr %358, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %63, i64 16
  store ptr %50, ptr %359, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS8_7TypeRefENS8_9TraitPathEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %360 unwind label %382

360:                                              ; preds = %357
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull %62)
          to label %361 unwind label %384

361:                                              ; preds = %360
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  %362 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %362, ptr noundef nonnull @.str.14)
          to label %363 unwind label %388

363:                                              ; preds = %361
  invoke void @__cxa_throw(ptr nonnull %362, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %444 unwind label %390

364:                                              ; preds = %345
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %404

366:                                              ; preds = %346
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %379

368:                                              ; preds = %348
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %378

370:                                              ; preds = %349
  %371 = landingpad { ptr, i32 }
          cleanup
  br label %377

372:                                              ; preds = %350
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %376

374:                                              ; preds = %351
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  br label %376

376:                                              ; preds = %374, %372
  %.pn108 = phi { ptr, i32 } [ %375, %374 ], [ %373, %372 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #7
  br label %377

377:                                              ; preds = %376, %370
  %.pn108.pn = phi { ptr, i32 } [ %.pn108, %376 ], [ %371, %370 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  br label %378

378:                                              ; preds = %377, %368
  %.pn108.pn.pn = phi { ptr, i32 } [ %.pn108.pn, %377 ], [ %369, %368 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %379

379:                                              ; preds = %378, %366
  %.pn108.pn.pn.pn = phi { ptr, i32 } [ %.pn108.pn.pn, %378 ], [ %367, %366 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  br label %404

380:                                              ; preds = %356
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %387

382:                                              ; preds = %357
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %386

384:                                              ; preds = %360
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %386

386:                                              ; preds = %384, %382
  %.pn114 = phi { ptr, i32 } [ %385, %384 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br label %387

387:                                              ; preds = %386, %380
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %386 ], [ %381, %380 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  br label %392

388:                                              ; preds = %361
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %362) #7
  br label %392

390:                                              ; preds = %363
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %392

392:                                              ; preds = %390, %388, %387
  %.pn117 = phi { ptr, i32 } [ %391, %390 ], [ %389, %388 ], [ %.pn114.pn, %387 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  br label %403

393:                                              ; preds = %354
  %.pr = load ptr, ptr %7, align 8, !tbaa !5
  %.not113 = icmp eq ptr %.pr, null
  br i1 %.not113, label %.thread, label %395

.thread:                                          ; preds = %352, %393
  %394 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %291) #7
  br label %395

395:                                              ; preds = %393, %.thread
  %396 = phi ptr [ %394, %.thread ], [ %.pr, %393 ]
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %53)
  %397 = getelementptr inbounds i8, ptr %316, i64 40
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %397)
  invoke void @_ZN18TraitResolveCommon26prep_indexes__add_equalityERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefES7_(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %396, ptr noundef nonnull %64, ptr noundef nonnull %65)
          to label %398 unwind label %401

398:                                              ; preds = %395
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %400 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %400, label %.lr.ph155, label %._crit_edge156

401:                                              ; preds = %395
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  br label %403

403:                                              ; preds = %401, %392
  %.pn117.pn = phi { ptr, i32 } [ %.pn117, %392 ], [ %402, %401 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %404

404:                                              ; preds = %403, %379, %364
  %.pn117.pn.pn = phi { ptr, i32 } [ %.pn117.pn, %403 ], [ %.pn108.pn.pn.pn, %379 ], [ %365, %364 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  br label %405

405:                                              ; preds = %404, %343
  %.pn117.pn.pn.pn = phi { ptr, i32 } [ %.pn117.pn.pn, %404 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %50) #7
  br label %406

406:                                              ; preds = %405, %314
  %.pn117.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn117.pn.pn.pn, %405 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %50) #7
  br label %407

407:                                              ; preds = %406, %305
  %.pn117.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn117.pn.pn.pn.pn, %406 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br label %411

408:                                              ; preds = %261, %._crit_edge159
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  %410 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %410, label %261, label %._crit_edge162

411:                                              ; preds = %407, %290, %275
  %.pn117.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn117.pn.pn.pn.pn.pn, %407 ], [ %.pn103.pn.pn.pn, %290 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %441

._crit_edge165:                                   ; preds = %432, %._crit_edge162
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #7
  ret void

.lr.ph164:                                        ; preds = %._crit_edge162, %432
  %412 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  %413 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %414 unwind label %426

414:                                              ; preds = %.lr.ph164
  br i1 %413, label %415, label %428

415:                                              ; preds = %414
  %416 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !32
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %416, ptr noundef nonnull @__func__._ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb)
          to label %418 unwind label %426

418:                                              ; preds = %415
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef nonnull @.str.15)
          to label %420 unwind label %426

420:                                              ; preds = %418
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef nonnull align 8 dereferenceable(144) %412)
          to label %422 unwind label %426

422:                                              ; preds = %420
  %423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %424 unwind label %426

424:                                              ; preds = %422
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %428 unwind label %426

426:                                              ; preds = %428, %424, %422, %420, %418, %415, %.lr.ph164
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %440

428:                                              ; preds = %424, %414
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %68, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %430 unwind label %426

430:                                              ; preds = %428
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %69, ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %412, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %431 unwind label %435

431:                                              ; preds = %430
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %429, ptr noundef nonnull %68, ptr noundef nonnull %69, i1 zeroext poison)
          to label %432 unwind label %437

432:                                              ; preds = %431
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %69) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  %434 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br i1 %434, label %.lr.ph164, label %._crit_edge165

435:                                              ; preds = %430
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %431
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %69) #7
  br label %439

439:                                              ; preds = %437, %435
  %.pn = phi { ptr, i32 } [ %438, %437 ], [ %436, %435 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  br label %440

440:                                              ; preds = %439, %426
  %.pn.pn = phi { ptr, i32 } [ %.pn, %439 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #7
  br label %441

441:                                              ; preds = %.loopexit, %.loopexit.split-lp, %440, %411, %256, %180, %99
  %.pn143 = phi { ptr, i32 } [ %100, %99 ], [ %.pn139.pn.pn, %180 ], [ %.pn130.pn.pn, %256 ], [ %.pn117.pn.pn.pn.pn.pn.pn, %411 ], [ %.pn.pn, %440 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #7
  br label %442

442:                                              ; preds = %441, %97
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %441 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #7
  br label %443

443:                                              ; preds = %442, %95
  %.pn143.pn.pn = phi { ptr, i32 } [ %.pn143.pn, %442 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #7
  resume { ptr, i32 } %.pn143.pn.pn

444:                                              ; preds = %363
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(152) ptr @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_1clES6_RKNS3_11GenericPathE"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbENK3$_3clERK8RcStringS6_RKNS8_8AtyEqualE"(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef, ptr noundef) local_unnamed_addr #2 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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

declare void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #1

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #1

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4 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 = { 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 = { 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 = { 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 #7 = { nounwind }
attributes #8 = { noreturn }

!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 0}
!10 = !{!"_ZTSZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEbE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !22, i64 72, !28, i64 104, !28, i64 112, !28, i64 120, !28, i64 128, !28, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !28, i64 200, !28, i64 208}
!13 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !21, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !23, i64 0, !27, i64 24}
!23 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!28 = !{!"_ZTSN3HIR10SimplePathE", !29, i64 0}
!29 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!33, !33, i64 0}
!33 = !{!"int", !7, i64 0}


; Effective O3 passes: DeadArgumentEliminationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass