; LLVM IR from thepowersgang/mrustc :: src/hir_typeck/expr_cs.ll (ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_)

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

%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.69, %class.ThinVector.70, %class.ThinVector.71 }
%class.ThinVector.69 = type { ptr }
%class.ThinVector.70 = type { ptr }
%class.ThinVector.71 = type { ptr }
%"struct.std::pair.158" = type { ptr, %"struct.Context::TaitEntry" }
%"struct.Context::TaitEntry" = type { %"struct.HIR::PathParams", %"class.HIR::TypeRef" }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%class.anon.160 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.161 = type { ptr, ptr }
%class.anon.162 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.163 = type { ptr, ptr, ptr }
%class.anon.164 = type { ptr, ptr }
%class.anon.165 = type { ptr, ptr }
%class.anon.166 = type { ptr, ptr }
%class.anon.167 = type { ptr, ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.170 = type { ptr, ptr }
%class.anon.171 = type { ptr, ptr }
%class.anon.172 = type { ptr, ptr }
%class.anon.173 = type { ptr, 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.91" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr.91" = type { %"struct.std::__uniq_ptr_data.92" }
%"struct.std::__uniq_ptr_data.92" = type { %"class.std::__uniq_ptr_impl.93" }
%"class.std::__uniq_ptr_impl.93" = type { %"class.std::tuple.94" }
%"class.std::tuple.94" = type { %"struct.std::_Tuple_impl.95" }
%"struct.std::_Tuple_impl.95" = type { %"struct.std::_Head_base.98" }
%"struct.std::_Head_base.98" = type { ptr }
%class.anon.174 = type { ptr }
%class.anon.175 = type { ptr }
%class.anon.176 = type { ptr, ptr }
%class.anon.177 = type { ptr, ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.125", [8 x i8] }
%"class.std::unique_ptr.125" = type { %"struct.std::__uniq_ptr_data.126" }
%"struct.std::__uniq_ptr_data.126" = type { %"class.std::__uniq_ptr_impl.127" }
%"class.std::__uniq_ptr_impl.127" = type { %"class.std::tuple.128" }
%"class.std::tuple.128" = type { %"struct.std::_Tuple_impl.129" }
%"struct.std::_Tuple_impl.129" = type { %"struct.std::_Head_base.132" }
%"struct.std::_Head_base.132" = type { ptr }
%"class.HIR::EncodedLiteralPtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.178", %"class.std::vector.183" }
%"class.std::vector.178" = type { %"struct.std::_Vector_base.179" }
%"struct.std::_Vector_base.179" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.183" = type { %"struct.std::_Vector_base.184" }
%"struct.std::_Vector_base.184" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.188 = type { ptr, ptr }
%class.anon.189 = type { ptr, ptr }
%class.anon.190 = type { ptr, ptr }
%class.anon.191 = type { ptr, ptr }
%class.anon.192 = type { ptr, ptr }
%class.anon.193 = type { ptr, ptr }
%class.anon.194 = type { ptr, ptr }
%class.anon.195 = type { ptr, ptr }
%struct.Context = type { ptr, %"class.std::vector", %class.HMTypeInferrence, %class.TraitResolution, i32, %"class.std::vector.23", %"class.std::vector.28", %"class.std::vector.33", %"class.std::vector.38", %"class.std::vector.43", %"class.std::vector.47", %"class.std::map.52", %"struct.HIR::SimplePath" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Context::Binding, std::allocator<Context::Binding>>::_Vector_impl" }
%"struct.std::_Vector_base<Context::Binding, std::allocator<Context::Binding>>::_Vector_impl" = type { %"struct.std::_Vector_base<Context::Binding, std::allocator<Context::Binding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Context::Binding, std::allocator<Context::Binding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HMTypeInferrence = type <{ %"class.std::vector.0", %"class.std::vector.5", i8, [7 x i8] }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<HMTypeInferrence::IVar, std::allocator<HMTypeInferrence::IVar>>::_Vector_impl" }
%"struct.std::_Vector_base<HMTypeInferrence::IVar, std::allocator<HMTypeInferrence::IVar>>::_Vector_impl" = type { %"struct.std::_Vector_base<HMTypeInferrence::IVar, std::allocator<HMTypeInferrence::IVar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HMTypeInferrence::IVar, std::allocator<HMTypeInferrence::IVar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<HMTypeInferrence::IVarValue, std::allocator<HMTypeInferrence::IVarValue>>::_Vector_impl" }
%"struct.std::_Vector_base<HMTypeInferrence::IVarValue, std::allocator<HMTypeInferrence::IVarValue>>::_Vector_impl" = type { %"struct.std::_Vector_base<HMTypeInferrence::IVarValue, std::allocator<HMTypeInferrence::IVarValue>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HMTypeInferrence::IVarValue, std::allocator<HMTypeInferrence::IVarValue>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.18" }
%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" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RangeVecMap = type <{ %"class.std::vector.13", [8 x i8] }>
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<std::unique_ptr<Context::Coercion>, std::allocator<std::unique_ptr<Context::Coercion>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<Context::Coercion>, std::allocator<std::unique_ptr<Context::Coercion>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<Context::Coercion>, std::allocator<std::unique_ptr<Context::Coercion>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<Context::Coercion>, std::allocator<std::unique_ptr<Context::Coercion>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<Context::Associated, std::allocator<Context::Associated>>::_Vector_impl" }
%"struct.std::_Vector_base<Context::Associated, std::allocator<Context::Associated>>::_Vector_impl" = type { %"struct.std::_Vector_base<Context::Associated, std::allocator<Context::Associated>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Context::Associated, std::allocator<Context::Associated>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<HIR::ExprNode *, std::allocator<HIR::ExprNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExprNode *, std::allocator<HIR::ExprNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExprNode *, std::allocator<HIR::ExprNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExprNode *, std::allocator<HIR::ExprNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<std::unique_ptr<Context::Revisitor>, std::allocator<std::unique_ptr<Context::Revisitor>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<Context::Revisitor>, std::allocator<std::unique_ptr<Context::Revisitor>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<Context::Revisitor>, std::allocator<std::unique_ptr<Context::Revisitor>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<Context::Revisitor>, std::allocator<std::unique_ptr<Context::Revisitor>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<Context::IVarPossible, std::allocator<Context::IVarPossible>>::_Vector_impl" }
%"struct.std::_Vector_base<Context::IVarPossible, std::allocator<Context::IVarPossible>>::_Vector_impl" = type { %"struct.std::_Vector_base<Context::IVarPossible, std::allocator<Context::IVarPossible>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Context::IVarPossible, std::allocator<Context::IVarPossible>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.52" = type { %"class.std::_Rb_tree.53" }
%"class.std::_Rb_tree.53" = type { %"struct.std::_Rb_tree<HIR::TypeData_ErasedType_AliasInner *, std::pair<HIR::TypeData_ErasedType_AliasInner *const, Context::TaitEntry>, std::_Select1st<std::pair<HIR::TypeData_ErasedType_AliasInner *const, Context::TaitEntry>>, std::less<HIR::TypeData_ErasedType_AliasInner *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeData_ErasedType_AliasInner *, std::pair<HIR::TypeData_ErasedType_AliasInner *const, Context::TaitEntry>, std::_Select1st<std::pair<HIR::TypeData_ErasedType_AliasInner *const, Context::TaitEntry>>, std::less<HIR::TypeData_ErasedType_AliasInner *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.91" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.115", %"class.std::vector.120", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.115" = type { %"struct.std::_Vector_base.116" }
%"struct.std::_Vector_base.116" = 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 }
%"class.std::vector.120" = type { %"struct.std::_Vector_base.121" }
%"struct.std::_Vector_base.121" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeData_ErasedType_Inner" = type { i32, %"union.HIR::TypeData_ErasedType_Inner::DataUnion" }
%"union.HIR::TypeData_ErasedType_Inner::DataUnion" = type { %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", [56 x i8] }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Alias" = type { %"struct.HIR::PathParams", %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.HIR::TypeData::Data_Infer" = type { i32, i32 }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.110", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.91", %"class.HIR::GenericPath", %"class.std::map.99", %"class.std::map.105", ptr }
%"class.std::map.99" = type { %"class.std::_Rb_tree.100" }
%"class.std::_Rb_tree.100" = 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" }
%"class.std::map.105" = type { %"class.std::_Rb_tree.106" }
%"class.std::_Rb_tree.106" = 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" }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.std::pair.168" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn" = type <{ %"class.HIR::Path", i32, [4 x i8] }>
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.133" }
%"class.HIR::GenericParams" = type { %"class.std::vector.138", %"class.std::vector.143", %"class.std::vector.148", %"class.std::vector.153" }
%"class.std::vector.138" = type { %"struct.std::_Vector_base.139" }
%"struct.std::_Vector_base.139" = 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.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = 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.148" = type { %"struct.std::_Vector_base.149" }
%"struct.std::_Vector_base.149" = 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.153" = type { %"struct.std::_Vector_base.154" }
%"struct.std::_Vector_base.154" = 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 }
%"class.std::vector.133" = type { %"struct.std::_Vector_base.134" }
%"struct.std::_Vector_base.134" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Closure" = type { ptr }
%"struct.HIR::TypeData::Data_Generator" = type { ptr }

@g_debug_indent_level = external global i32, align 4
@.str.16 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [95 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [20 x i8], align 1

declare noundef zeroext i1 @_Z13debug_enabledv() #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) #1

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.HIR::TypeRef", align 8
  %10 = alloca %"class.HIR::TypeRef", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"struct.HIR::PathParams", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"struct.HIR::PathParams", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"struct.std::pair.158", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"struct.Context::TaitEntry", align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"struct.std::pair", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"struct.std::pair.158", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"struct.Context::TaitEntry", align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca %"struct.std::pair", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %class.anon.160, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"struct.std::_Bit_reference", align 8
  %44 = alloca %"struct.std::_Bit_reference", align 8
  %45 = alloca %class.anon.161, align 8
  %46 = alloca %class.anon.162, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.HIR::TypeRef", align 8
  %49 = alloca %struct.Span, align 8
  %50 = alloca %"class.std::function", align 8
  %51 = alloca %class.anon.163, align 8
  %52 = alloca i8, align 1
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i8, align 1
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.164, align 8
  %67 = alloca i8, align 1
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca %struct.Span, align 8
  %71 = alloca %"class.std::function", align 8
  %72 = alloca %class.anon.165, align 8
  %73 = alloca i8, align 1
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca %struct.Span, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.166, align 8
  %79 = alloca i8, align 1
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca %struct.Span, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.167, align 8
  %85 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %86 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %87 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %88 = alloca %struct.Span, align 8
  %89 = alloca %"class.std::function", align 8
  %90 = alloca %class.anon.170, align 8
  %91 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %92 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %93 = alloca %struct.Span, align 8
  %94 = alloca %"class.std::function", align 8
  %95 = alloca %class.anon.171, align 8
  %96 = alloca i32, align 4
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca %struct.Span, align 8
  %100 = alloca %"class.std::function", align 8
  %101 = alloca %class.anon.172, align 8
  %102 = alloca i8, align 1
  %103 = alloca ptr, align 8
  %104 = alloca ptr, align 8
  %105 = alloca %struct.Span, align 8
  %106 = alloca %"class.std::function", align 8
  %107 = alloca %class.anon.173, align 8
  %108 = alloca i8, align 1
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca i8, align 1
  %112 = alloca ptr, align 8
  %113 = alloca ptr, align 8
  %114 = alloca %"class.HIR::Path", align 8
  %115 = alloca %"struct.HIR::SimplePath", align 8
  %116 = alloca %struct.Span, align 8
  %117 = alloca %"class.std::function", align 8
  %118 = alloca %class.anon.174, align 8
  %119 = alloca %"class.HIR::Path", align 8
  %120 = alloca %"struct.HIR::SimplePath", align 8
  %121 = alloca %struct.Span, align 8
  %122 = alloca %"class.std::function", align 8
  %123 = alloca %class.anon.175, align 8
  %124 = alloca %struct.Span, align 8
  %125 = alloca %"class.std::function", align 8
  %126 = alloca %class.anon.176, align 8
  %127 = alloca i8, align 1
  %128 = alloca ptr, align 8
  %129 = alloca ptr, align 8
  %130 = alloca %struct.Span, align 8
  %131 = alloca %"class.std::function", align 8
  %132 = alloca %class.anon.177, align 8
  %133 = alloca i8, align 1
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca i8, align 1
  %137 = alloca ptr, align 8
  %138 = alloca ptr, align 8
  %139 = alloca %"class.HIR::ConstGeneric", align 8
  %140 = alloca %"class.HIR::EncodedLiteralPtr", align 8
  %141 = alloca %struct.EncodedLiteral, align 8
  %142 = alloca %"class.HIR::ConstGeneric", align 8
  %143 = alloca %"class.HIR::EncodedLiteralPtr", align 8
  %144 = alloca %struct.EncodedLiteral, align 8
  %145 = alloca %struct.Span, align 8
  %146 = alloca %"class.std::function", align 8
  %147 = alloca %class.anon.188, align 8
  %148 = alloca i8, align 1
  %149 = alloca ptr, align 8
  %150 = alloca ptr, align 8
  %151 = alloca i8, align 1
  %152 = alloca ptr, align 8
  %153 = alloca ptr, align 8
  %154 = alloca %struct.Span, align 8
  %155 = alloca %"class.std::function", align 8
  %156 = alloca %class.anon.189, align 8
  %157 = alloca i32, align 4
  %158 = alloca i8, align 1
  %159 = alloca ptr, align 8
  %160 = alloca ptr, align 8
  %161 = alloca %struct.Span, align 8
  %162 = alloca %"class.std::function", align 8
  %163 = alloca %class.anon.190, align 8
  %164 = alloca i8, align 1
  %165 = alloca ptr, align 8
  %166 = alloca ptr, align 8
  %167 = alloca %struct.Span, align 8
  %168 = alloca %"class.std::function", align 8
  %169 = alloca %class.anon.191, align 8
  %170 = alloca i8, align 1
  %171 = alloca ptr, align 8
  %172 = alloca ptr, align 8
  %173 = alloca %struct.Span, align 8
  %174 = alloca %"class.std::function", align 8
  %175 = alloca %class.anon.192, align 8
  %176 = alloca i8, align 1
  %177 = alloca ptr, align 8
  %178 = alloca ptr, align 8
  %179 = alloca %struct.Span, align 8
  %180 = alloca %"class.std::function", align 8
  %181 = alloca %class.anon.193, align 8
  %182 = alloca i32, align 4
  %183 = alloca i8, align 1
  %184 = alloca ptr, align 8
  %185 = alloca ptr, align 8
  %186 = alloca %struct.Span, align 8
  %187 = alloca %"class.std::function", align 8
  %188 = alloca %class.anon.194, align 8
  %189 = alloca i8, align 1
  %190 = alloca ptr, align 8
  %191 = alloca ptr, align 8
  %192 = alloca %struct.Span, align 8
  %193 = alloca %"class.std::function", align 8
  %194 = alloca %class.anon.195, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %195 = load ptr, ptr %5, align 8
  %196 = load ptr, ptr %7, align 8, !tbaa !5
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) %197)
  br i1 %198, label %207, label %199

199:                                              ; preds = %4
  %200 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %200, ptr noundef nonnull align 8 dereferenceable(8) %201)
  %203 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %203, ptr noundef nonnull align 8 dereferenceable(8) %204)
  %206 = call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %205)
  br i1 %206, label %207, label %208

207:                                              ; preds = %199, %4
  br label %2585

208:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %209 unwind label %251

209:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %210 = load ptr, ptr %7, align 8, !tbaa !5
  %211 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %212 unwind label %255

212:                                              ; preds = %209
  %213 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
          to label %214 unwind label %255

214:                                              ; preds = %212
  br i1 %213, label %215, label %224

215:                                              ; preds = %214
  %216 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 3
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %218, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %221 unwind label %255

221:                                              ; preds = %215
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK15TraitResolution23expand_associated_typesERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %216, ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %223 unwind label %255

223:                                              ; preds = %221
  br label %226

224:                                              ; preds = %214
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  br label %226

226:                                              ; preds = %224, %223
  %227 = phi ptr [ %222, %223 ], [ %225, %224 ]
  store ptr %227, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %228)
          to label %230 unwind label %259

230:                                              ; preds = %226
  %231 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %229)
          to label %232 unwind label %259

232:                                              ; preds = %230
  br i1 %231, label %233, label %242

233:                                              ; preds = %232
  %234 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 3
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %237 = load ptr, ptr %8, align 8, !tbaa !5
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %236, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %239 unwind label %259

239:                                              ; preds = %233
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK15TraitResolution23expand_associated_typesERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %234, ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %241 unwind label %259

241:                                              ; preds = %239
  br label %244

242:                                              ; preds = %232
  %243 = load ptr, ptr %8, align 8, !tbaa !5
  br label %244

244:                                              ; preds = %242, %241
  %245 = phi ptr [ %240, %241 ], [ %243, %242 ]
  store ptr %245, ptr %14, align 8, !tbaa !5
  %246 = load ptr, ptr %13, align 8, !tbaa !5
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %247)
          to label %249 unwind label %259

249:                                              ; preds = %244
  br i1 %248, label %250, label %263

250:                                              ; preds = %249
  store i32 1, ptr %15, align 4
  br label %2583

251:                                              ; preds = %208
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %11, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %12, align 4
  br label %2590

255:                                              ; preds = %221, %215, %212, %209
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %11, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %12, align 4
  br label %2589

259:                                              ; preds = %244, %239, %233, %230, %226
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %11, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %12, align 4
  br label %2588

263:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %264 = load ptr, ptr %14, align 8, !tbaa !5
  %265 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %266 unwind label %301

266:                                              ; preds = %263
  %267 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %265)
          to label %268 unwind label %301

268:                                              ; preds = %266
  store ptr %267, ptr %16, align 8, !tbaa !5
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = icmp ne ptr %269, null
  br i1 %270, label %271, label %319

271:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %272 = load ptr, ptr %16, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %272, i32 0, i32 0
  %274 = getelementptr inbounds %"class.HIR::Path", ptr %273, i32 0, i32 0
  %275 = invoke noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %274)
          to label %276 unwind label %305

276:                                              ; preds = %271
  store ptr %275, ptr %17, align 8, !tbaa !5
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = icmp ne ptr %277, null
  br i1 %278, label %279, label %314

279:                                              ; preds = %276
  %280 = load ptr, ptr %16, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %280, i32 0, i32 1
  %282 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
          to label %283 unwind label %305

283:                                              ; preds = %279
  br i1 %282, label %284, label %313

284:                                              ; preds = %283
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = load ptr, ptr %13, align 8, !tbaa !5
  %287 = load ptr, ptr %17, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %287, i32 0, i32 1
  %289 = getelementptr inbounds %"class.HIR::GenericPath", ptr %288, i32 0, i32 0
  %290 = load ptr, ptr %17, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %290, i32 0, i32 1
  %292 = getelementptr inbounds %"class.HIR::GenericPath", ptr %291, i32 0, i32 1
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %18, ptr noundef nonnull align 8 dereferenceable(24) %292)
          to label %293 unwind label %305

293:                                              ; preds = %284
  %294 = load ptr, ptr %17, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %294, i32 0, i32 0
  %296 = load ptr, ptr %17, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %296, i32 0, i32 2
  %298 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %299 unwind label %309

299:                                              ; preds = %293
  invoke void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef %18, ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef %298, i1 noundef zeroext false)
          to label %300 unwind label %309

300:                                              ; preds = %299
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  store i32 1, ptr %15, align 4
  br label %315

301:                                              ; preds = %266, %263
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %11, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %12, align 4
  br label %360

305:                                              ; preds = %284, %279, %271
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %11, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %12, align 4
  br label %318

309:                                              ; preds = %299, %293
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %11, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  br label %318

313:                                              ; preds = %283
  br label %314

314:                                              ; preds = %313, %276
  store i32 0, ptr %15, align 4
  br label %315

315:                                              ; preds = %314, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  %316 = load i32, ptr %15, align 4
  switch i32 %316, label %320 [
    i32 0, label %317
  ]

317:                                              ; preds = %315
  br label %319

318:                                              ; preds = %309, %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %360

319:                                              ; preds = %317, %268
  store i32 0, ptr %15, align 4
  br label %320

320:                                              ; preds = %319, %315
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  %321 = load i32, ptr %15, align 4
  switch i32 %321, label %2583 [
    i32 0, label %322
  ]

322:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %323 = load ptr, ptr %13, align 8, !tbaa !5
  %324 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %323)
          to label %325 unwind label %361

325:                                              ; preds = %322
  %326 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %324)
          to label %327 unwind label %361

327:                                              ; preds = %325
  store ptr %326, ptr %19, align 8, !tbaa !5
  %328 = load ptr, ptr %19, align 8, !tbaa !5
  %329 = icmp ne ptr %328, null
  br i1 %329, label %330, label %379

330:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %331 = load ptr, ptr %19, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %331, i32 0, i32 0
  %333 = getelementptr inbounds %"class.HIR::Path", ptr %332, i32 0, i32 0
  %334 = invoke noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %333)
          to label %335 unwind label %365

335:                                              ; preds = %330
  store ptr %334, ptr %20, align 8, !tbaa !5
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = icmp ne ptr %336, null
  br i1 %337, label %338, label %374

338:                                              ; preds = %335
  %339 = load ptr, ptr %19, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %339, i32 0, i32 1
  %341 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %340)
          to label %342 unwind label %365

342:                                              ; preds = %338
  br i1 %341, label %343, label %373

343:                                              ; preds = %342
  %344 = load ptr, ptr %6, align 8, !tbaa !5
  %345 = load ptr, ptr %14, align 8, !tbaa !5
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %346, i32 0, i32 1
  %348 = getelementptr inbounds %"class.HIR::GenericPath", ptr %347, i32 0, i32 0
  %349 = load ptr, ptr %20, align 8, !tbaa !5
  %350 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %349, i32 0, i32 1
  %351 = getelementptr inbounds %"class.HIR::GenericPath", ptr %350, i32 0, i32 1
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %21, ptr noundef nonnull align 8 dereferenceable(24) %351)
          to label %352 unwind label %365

352:                                              ; preds = %343
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %353, i32 0, i32 0
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %355, i32 0, i32 2
  %357 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %358 unwind label %369

358:                                              ; preds = %352
  invoke void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef %21, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef %357, i1 noundef zeroext false)
          to label %359 unwind label %369

359:                                              ; preds = %358
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  store i32 1, ptr %15, align 4
  br label %375

360:                                              ; preds = %318, %301
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %2588

361:                                              ; preds = %325, %322
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %11, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %12, align 4
  br label %437

365:                                              ; preds = %343, %338, %330
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %11, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %12, align 4
  br label %378

369:                                              ; preds = %358, %352
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %11, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  br label %378

373:                                              ; preds = %342
  br label %374

374:                                              ; preds = %373, %335
  store i32 0, ptr %15, align 4
  br label %375

375:                                              ; preds = %374, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %376 = load i32, ptr %15, align 4
  switch i32 %376, label %380 [
    i32 0, label %377
  ]

377:                                              ; preds = %375
  br label %379

378:                                              ; preds = %369, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %437

379:                                              ; preds = %377, %327
  store i32 0, ptr %15, align 4
  br label %380

380:                                              ; preds = %379, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  %381 = load i32, ptr %15, align 4
  switch i32 %381, label %2583 [
    i32 0, label %382
  ]

382:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %383 = load ptr, ptr %14, align 8, !tbaa !5
  %384 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %383)
          to label %385 unwind label %438

385:                                              ; preds = %382
  %386 = invoke noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %384)
          to label %387 unwind label %438

387:                                              ; preds = %385
  store ptr %386, ptr %22, align 8, !tbaa !5
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = icmp ne ptr %388, null
  br i1 %389, label %390, label %491

390:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %391 = load ptr, ptr %22, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %391, i32 0, i32 3
  %393 = invoke noundef ptr @_ZNK3HIR25TypeData_ErasedType_Inner9opt_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %392)
          to label %394 unwind label %442

394:                                              ; preds = %390
  store ptr %393, ptr %23, align 8, !tbaa !5
  %395 = load ptr, ptr %23, align 8, !tbaa !5
  %396 = icmp ne ptr %395, null
  br i1 %396, label %397, label %486

397:                                              ; preds = %394
  %398 = load ptr, ptr %13, align 8, !tbaa !5
  %399 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %400 unwind label %442

400:                                              ; preds = %397
  %401 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %399)
          to label %402 unwind label %442

402:                                              ; preds = %400
  br i1 %401, label %485, label %403

403:                                              ; preds = %402
  %404 = load ptr, ptr %23, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %404, i32 0, i32 1
  %406 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %405) #8
  %407 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 3
  %408 = getelementptr inbounds %class.TraitResolution, ptr %407, i32 0, i32 3
  %409 = load ptr, ptr %408, align 8, !tbaa !9
  %410 = invoke noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112) %406, ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %411 unwind label %442

411:                                              ; preds = %403
  br i1 %410, label %412, label %485

412:                                              ; preds = %411
  %413 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %414 = load ptr, ptr %23, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %414, i32 0, i32 1
  %416 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %415) #8
  store ptr %416, ptr %24, align 8, !tbaa !5
  %417 = invoke noundef i64 @_ZNKSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(48) %413, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %418 unwind label %446

418:                                              ; preds = %412
  %419 = icmp eq i64 %417, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br i1 %419, label %420, label %469

420:                                              ; preds = %418
  %421 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %422 = load ptr, ptr %23, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %422, i32 0, i32 1
  %424 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %423) #8
  store ptr %424, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  %425 = load ptr, ptr %23, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %425, i32 0, i32 0
  %427 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %427)
          to label %428 unwind label %450

428:                                              ; preds = %420
  invoke void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(24) %426, ptr noundef %28)
          to label %429 unwind label %454

429:                                              ; preds = %428
  invoke void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.158") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %430 unwind label %458

430:                                              ; preds = %429
  %431 = invoke { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %421, ptr noundef nonnull align 8 dereferenceable(40) %25)
          to label %432 unwind label %462

432:                                              ; preds = %430
  %433 = getelementptr inbounds { ptr, i8 }, ptr %29, i32 0, i32 0
  %434 = extractvalue { ptr, i8 } %431, 0
  store ptr %434, ptr %433, align 8
  %435 = getelementptr inbounds { ptr, i8 }, ptr %29, i32 0, i32 1
  %436 = extractvalue { ptr, i8 } %431, 1
  store i8 %436, ptr %435, align 8
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #8
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #8
  br label %484

437:                                              ; preds = %378, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %2588

438:                                              ; preds = %385, %382
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %11, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %12, align 4
  br label %543

442:                                              ; preds = %403, %400, %397, %390
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %11, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %12, align 4
  br label %490

446:                                              ; preds = %412
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %490

450:                                              ; preds = %420
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %468

454:                                              ; preds = %428
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  br label %467

458:                                              ; preds = %429
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %11, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %12, align 4
  br label %466

462:                                              ; preds = %430
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %11, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %12, align 4
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #8
  br label %466

466:                                              ; preds = %462, %458
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %467

467:                                              ; preds = %466, %454
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %468

468:                                              ; preds = %467, %450
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #8
  br label %490

469:                                              ; preds = %418
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  %471 = load ptr, ptr %13, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %473 = load ptr, ptr %23, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %473, i32 0, i32 1
  %475 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %474) #8
  store ptr %475, ptr %30, align 8, !tbaa !5
  %476 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48) %472, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %477 unwind label %480

477:                                              ; preds = %469
  %478 = getelementptr inbounds %"struct.Context::TaitEntry", ptr %476, i32 0, i32 1
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull align 8 dereferenceable(8) %478)
          to label %479 unwind label %480

479:                                              ; preds = %477
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %484

480:                                              ; preds = %477, %469
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %11, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %490

484:                                              ; preds = %479, %432
  store i32 1, ptr %15, align 4
  br label %487

485:                                              ; preds = %411, %402
  br label %486

486:                                              ; preds = %485, %394
  store i32 0, ptr %15, align 4
  br label %487

487:                                              ; preds = %486, %484
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %488 = load i32, ptr %15, align 4
  switch i32 %488, label %492 [
    i32 0, label %489
  ]

489:                                              ; preds = %487
  br label %491

490:                                              ; preds = %480, %468, %446, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %543

491:                                              ; preds = %489, %387
  store i32 0, ptr %15, align 4
  br label %492

492:                                              ; preds = %491, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  %493 = load i32, ptr %15, align 4
  switch i32 %493, label %2583 [
    i32 0, label %494
  ]

494:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %495 = load ptr, ptr %13, align 8, !tbaa !5
  %496 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %497 unwind label %544

497:                                              ; preds = %494
  %498 = invoke noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %496)
          to label %499 unwind label %544

499:                                              ; preds = %497
  store ptr %498, ptr %31, align 8, !tbaa !5
  %500 = load ptr, ptr %31, align 8, !tbaa !5
  %501 = icmp ne ptr %500, null
  br i1 %501, label %502, label %597

502:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %503 = load ptr, ptr %31, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %503, i32 0, i32 3
  %505 = invoke noundef ptr @_ZNK3HIR25TypeData_ErasedType_Inner9opt_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %504)
          to label %506 unwind label %548

506:                                              ; preds = %502
  store ptr %505, ptr %32, align 8, !tbaa !5
  %507 = load ptr, ptr %32, align 8, !tbaa !5
  %508 = icmp ne ptr %507, null
  br i1 %508, label %509, label %592

509:                                              ; preds = %506
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %510, i32 0, i32 1
  %512 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %511) #8
  %513 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 3
  %514 = getelementptr inbounds %class.TraitResolution, ptr %513, i32 0, i32 3
  %515 = load ptr, ptr %514, align 8, !tbaa !9
  %516 = invoke noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112) %512, ptr noundef nonnull align 8 dereferenceable(8) %515)
          to label %517 unwind label %548

517:                                              ; preds = %509
  br i1 %516, label %518, label %591

518:                                              ; preds = %517
  %519 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %520, i32 0, i32 1
  %522 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %521) #8
  store ptr %522, ptr %33, align 8, !tbaa !5
  %523 = invoke noundef i64 @_ZNKSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(48) %519, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %524 unwind label %552

524:                                              ; preds = %518
  %525 = icmp eq i64 %523, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br i1 %525, label %526, label %575

526:                                              ; preds = %524
  %527 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 40, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %528 = load ptr, ptr %32, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %528, i32 0, i32 1
  %530 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %529) #8
  store ptr %530, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %531, i32 0, i32 0
  %533 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %533)
          to label %534 unwind label %556

534:                                              ; preds = %526
  invoke void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(24) %532, ptr noundef %37)
          to label %535 unwind label %560

535:                                              ; preds = %534
  invoke void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.158") align 8 %34, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %536 unwind label %564

536:                                              ; preds = %535
  %537 = invoke { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %527, ptr noundef nonnull align 8 dereferenceable(40) %34)
          to label %538 unwind label %568

538:                                              ; preds = %536
  %539 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 0
  %540 = extractvalue { ptr, i8 } %537, 0
  store ptr %540, ptr %539, align 8
  %541 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 1
  %542 = extractvalue { ptr, i8 } %537, 1
  store i8 %542, ptr %541, align 8
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %34) #8
  br label %590

543:                                              ; preds = %490, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %2588

544:                                              ; preds = %497, %494
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %11, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %12, align 4
  br label %625

548:                                              ; preds = %509, %502
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %11, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %12, align 4
  br label %596

552:                                              ; preds = %518
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %11, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %596

556:                                              ; preds = %526
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %11, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %12, align 4
  br label %574

560:                                              ; preds = %534
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %11, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %12, align 4
  br label %573

564:                                              ; preds = %535
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %11, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %12, align 4
  br label %572

568:                                              ; preds = %536
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %11, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %12, align 4
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  br label %572

572:                                              ; preds = %568, %564
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %573

573:                                              ; preds = %572, %560
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %574

574:                                              ; preds = %573, %556
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %34) #8
  br label %596

575:                                              ; preds = %524
  %576 = load ptr, ptr %6, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %578 = load ptr, ptr %32, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %578, i32 0, i32 1
  %580 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %579) #8
  store ptr %580, ptr %39, align 8, !tbaa !5
  %581 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48) %577, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %582 unwind label %586

582:                                              ; preds = %575
  %583 = getelementptr inbounds %"struct.Context::TaitEntry", ptr %581, i32 0, i32 1
  %584 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(8) %583, ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %585 unwind label %586

585:                                              ; preds = %582
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %590

586:                                              ; preds = %582, %575
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %11, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %596

590:                                              ; preds = %585, %538
  store i32 1, ptr %15, align 4
  br label %593

591:                                              ; preds = %517
  br label %592

592:                                              ; preds = %591, %506
  store i32 0, ptr %15, align 4
  br label %593

593:                                              ; preds = %592, %590
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  %594 = load i32, ptr %15, align 4
  switch i32 %594, label %598 [
    i32 0, label %595
  ]

595:                                              ; preds = %593
  br label %597

596:                                              ; preds = %586, %574, %552, %548
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %625

597:                                              ; preds = %595, %499
  store i32 0, ptr %15, align 4
  br label %598

598:                                              ; preds = %597, %593
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  %599 = load i32, ptr %15, align 4
  switch i32 %599, label %2583 [
    i32 0, label %600
  ]

600:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #8
  %601 = getelementptr inbounds %class.anon.160, ptr %40, i32 0, i32 0
  store ptr %195, ptr %601, align 8, !tbaa !80
  %602 = getelementptr inbounds %class.anon.160, ptr %40, i32 0, i32 1
  %603 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %603, ptr %602, align 8, !tbaa !5
  br label %604

604:                                              ; preds = %600
  %605 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %606 unwind label %626

606:                                              ; preds = %604
  br i1 %605, label %607, label %630

607:                                              ; preds = %606
  %608 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !82
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %608, ptr noundef @__FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_)
          to label %610 unwind label %626

610:                                              ; preds = %607
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef @.str.17)
          to label %612 unwind label %626

612:                                              ; preds = %610
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef nonnull align 8 dereferenceable(8) %613)
          to label %615 unwind label %626

615:                                              ; preds = %612
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef @.str.18)
          to label %617 unwind label %626

617:                                              ; preds = %615
  %618 = load ptr, ptr %14, align 8, !tbaa !5
  %619 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %620 unwind label %626

620:                                              ; preds = %617
  %621 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef @_ZSt3decRSt8ios_base)
          to label %622 unwind label %626

622:                                              ; preds = %620
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %621, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %624 unwind label %626

624:                                              ; preds = %622
  br label %630

625:                                              ; preds = %596, %544
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %2588

626:                                              ; preds = %622, %620, %617, %615, %612, %610, %607, %604
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %11, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %12, align 4
  br label %2587

630:                                              ; preds = %624, %606
  br label %631

631:                                              ; preds = %630
  br label %632

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %633 = load ptr, ptr %14, align 8, !tbaa !5
  %634 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %633)
          to label %635 unwind label %701

635:                                              ; preds = %632
  %636 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %634)
          to label %637 unwind label %701

637:                                              ; preds = %635
  store ptr %636, ptr %41, align 8, !tbaa !5
  %638 = load ptr, ptr %41, align 8, !tbaa !5
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %733

640:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %641 = load ptr, ptr %13, align 8, !tbaa !5
  %642 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %641)
          to label %643 unwind label %705

643:                                              ; preds = %640
  %644 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %642)
          to label %645 unwind label %705

645:                                              ; preds = %643
  store ptr %644, ptr %42, align 8, !tbaa !5
  %646 = load ptr, ptr %42, align 8, !tbaa !5
  %647 = icmp ne ptr %646, null
  br i1 %647, label %648, label %727

648:                                              ; preds = %645
  %649 = load ptr, ptr %41, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %649, i32 0, i32 0
  %651 = load i32, ptr %650, align 4, !tbaa !83
  %652 = zext i32 %651 to i64
  %653 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 9
  %654 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %653) #8
  %655 = icmp ult i64 %652, %654
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #8
  br i1 %655, label %656, label %669

656:                                              ; preds = %648
  %657 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 9
  %658 = load ptr, ptr %41, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %658, i32 0, i32 0
  %660 = load i32, ptr %659, align 4, !tbaa !83
  %661 = zext i32 %660 to i64
  %662 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %657, i64 noundef %661)
          to label %663 unwind label %709

663:                                              ; preds = %656
  %664 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %665 = extractvalue { ptr, i64 } %662, 0
  store ptr %665, ptr %664, align 8
  %666 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %667 = extractvalue { ptr, i64 } %662, 1
  store i64 %667, ptr %666, align 8
  %668 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %43) #8
  br i1 %668, label %692, label %669

669:                                              ; preds = %663, %648
  %670 = load ptr, ptr %42, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %670, i32 0, i32 0
  %672 = load i32, ptr %671, align 4, !tbaa !83
  %673 = zext i32 %672 to i64
  %674 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 9
  %675 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %674) #8
  %676 = icmp ult i64 %673, %675
  br i1 %676, label %677, label %690

677:                                              ; preds = %669
  %678 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 9
  %679 = load ptr, ptr %42, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %679, i32 0, i32 0
  %681 = load i32, ptr %680, align 4, !tbaa !83
  %682 = zext i32 %681 to i64
  %683 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %678, i64 noundef %682)
          to label %684 unwind label %713

684:                                              ; preds = %677
  %685 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %686 = extractvalue { ptr, i64 } %683, 0
  store ptr %686, ptr %685, align 8
  %687 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %688 = extractvalue { ptr, i64 } %683, 1
  store i64 %688, ptr %687, align 8
  %689 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44) #8
  br label %690

690:                                              ; preds = %684, %669
  %691 = phi i1 [ false, %669 ], [ %689, %684 ]
  br label %692

692:                                              ; preds = %690, %663
  %693 = phi i1 [ true, %663 ], [ %691, %690 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br i1 %693, label %694, label %718

694:                                              ; preds = %692
  %695 = load ptr, ptr %6, align 8, !tbaa !5
  %696 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN7Context13require_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %695, ptr noundef nonnull align 8 dereferenceable(8) %696)
          to label %697 unwind label %705

697:                                              ; preds = %694
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7Context13require_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %698, ptr noundef nonnull align 8 dereferenceable(8) %699)
          to label %700 unwind label %705

700:                                              ; preds = %697
  br label %718

701:                                              ; preds = %740, %736, %733, %635, %632
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %11, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %12, align 4
  br label %2586

705:                                              ; preds = %727, %718, %697, %694, %643, %640
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %11, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %12, align 4
  br label %732

709:                                              ; preds = %656
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %11, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %12, align 4
  br label %717

713:                                              ; preds = %677
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %11, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  br label %717

717:                                              ; preds = %713, %709
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br label %732

718:                                              ; preds = %700, %692
  %719 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %720 = load ptr, ptr %42, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %720, i32 0, i32 0
  %722 = load i32, ptr %721, align 4, !tbaa !83
  %723 = load ptr, ptr %41, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %723, i32 0, i32 0
  %725 = load i32, ptr %724, align 4, !tbaa !83
  invoke void @_ZN16HMTypeInferrence10ivar_unifyEjj(ptr noundef nonnull align 8 dereferenceable(49) %719, i32 noundef %722, i32 noundef %725)
          to label %726 unwind label %705

726:                                              ; preds = %718
  br label %731

727:                                              ; preds = %645
  %728 = load ptr, ptr %14, align 8, !tbaa !5
  %729 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(8) %728, ptr noundef nonnull align 8 dereferenceable(8) %729)
          to label %730 unwind label %705

730:                                              ; preds = %727
  br label %731

731:                                              ; preds = %730, %726
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %2578

732:                                              ; preds = %717, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %2586

733:                                              ; preds = %637
  %734 = load ptr, ptr %13, align 8, !tbaa !5
  %735 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %734)
          to label %736 unwind label %701

736:                                              ; preds = %733
  %737 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %735)
          to label %738 unwind label %701

738:                                              ; preds = %736
  %739 = icmp ne ptr %737, null
  br i1 %739, label %740, label %744

740:                                              ; preds = %738
  %741 = load ptr, ptr %13, align 8, !tbaa !5
  %742 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef nonnull align 8 dereferenceable(8) %742)
          to label %743 unwind label %701

743:                                              ; preds = %740
  br label %2577

744:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #8
  %745 = getelementptr inbounds %class.anon.161, ptr %45, i32 0, i32 0
  %746 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %746, ptr %745, align 8, !tbaa !5
  %747 = getelementptr inbounds %class.anon.161, ptr %45, i32 0, i32 1
  store ptr %195, ptr %747, align 8, !tbaa !86
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #8
  %748 = getelementptr inbounds %class.anon.162, ptr %46, i32 0, i32 0
  store ptr %45, ptr %748, align 8, !tbaa !5
  %749 = getelementptr inbounds %class.anon.162, ptr %46, i32 0, i32 1
  store ptr %195, ptr %749, align 8, !tbaa !88
  %750 = getelementptr inbounds %class.anon.162, ptr %46, i32 0, i32 2
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %751, ptr %750, align 8, !tbaa !5
  %752 = load ptr, ptr %13, align 8, !tbaa !5
  %753 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %752)
          to label %754 unwind label %764

754:                                              ; preds = %744
  %755 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %753)
          to label %756 unwind label %764

756:                                              ; preds = %754
  br i1 %755, label %757, label %768

757:                                              ; preds = %756
  %758 = load ptr, ptr %14, align 8, !tbaa !5
  %759 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %758)
          to label %760 unwind label %764

760:                                              ; preds = %757
  %761 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %759)
          to label %762 unwind label %764

762:                                              ; preds = %760
  br i1 %761, label %763, label %768

763:                                              ; preds = %762
  store i32 1, ptr %15, align 4
  br label %2573

764:                                              ; preds = %826, %810, %807, %805, %802, %771, %768, %760, %757, %754, %744
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %11, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %12, align 4
  br label %2576

768:                                              ; preds = %762, %756
  %769 = load ptr, ptr %14, align 8, !tbaa !5
  %770 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %769)
          to label %771 unwind label %764

771:                                              ; preds = %768
  %772 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %770)
          to label %773 unwind label %764

773:                                              ; preds = %771
  br i1 %772, label %774, label %800

774:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %775)
          to label %777 unwind label %790

777:                                              ; preds = %774
  %778 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %776)
          to label %779 unwind label %790

779:                                              ; preds = %777
  store ptr %778, ptr %47, align 8, !tbaa !5
  %780 = load ptr, ptr %47, align 8, !tbaa !5
  %781 = icmp ne ptr %780, null
  br i1 %781, label %782, label %798

782:                                              ; preds = %779
  %783 = getelementptr inbounds %struct.Context, ptr %195, i32 0, i32 2
  %784 = load ptr, ptr %47, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %784, i32 0, i32 0
  %786 = load i32, ptr %785, align 4, !tbaa !83
  %787 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %48, ptr noundef nonnull align 8 dereferenceable(8) %787)
          to label %788 unwind label %790

788:                                              ; preds = %782
  invoke void @_ZN16HMTypeInferrence11set_ivar_toEjN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %783, i32 noundef %786, ptr noundef %48)
          to label %789 unwind label %794

789:                                              ; preds = %788
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %798

790:                                              ; preds = %782, %777, %774
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %11, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %12, align 4
  br label %799

794:                                              ; preds = %788
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %11, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %799

798:                                              ; preds = %789, %779
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  store i32 1, ptr %15, align 4
  br label %2573

799:                                              ; preds = %794, %790
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %2576

800:                                              ; preds = %773
  br label %801

801:                                              ; preds = %800
  br label %802

802:                                              ; preds = %801
  %803 = load ptr, ptr %13, align 8, !tbaa !5
  %804 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %803)
          to label %805 unwind label %764

805:                                              ; preds = %802
  %806 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %804)
          to label %807 unwind label %764

807:                                              ; preds = %805
  %808 = load ptr, ptr %14, align 8, !tbaa !5
  %809 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %808)
          to label %810 unwind label %764

810:                                              ; preds = %807
  %811 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %809)
          to label %812 unwind label %764

812:                                              ; preds = %810
  %813 = icmp ne i32 %806, %811
  br i1 %813, label %814, label %847

814:                                              ; preds = %812
  br label %815

815:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %816)
          to label %817 unwind label %827

817:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #8
  %818 = getelementptr inbounds %class.anon.163, ptr %51, i32 0, i32 0
  store ptr %195, ptr %818, align 8, !tbaa !90
  %819 = getelementptr inbounds %class.anon.163, ptr %51, i32 0, i32 1
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %820, ptr %819, align 8, !tbaa !5
  %821 = getelementptr inbounds %class.anon.163, ptr %51, i32 0, i32 2
  %822 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %822, ptr %821, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %823 unwind label %831

823:                                              ; preds = %817
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 0, ptr noundef %50)
          to label %824 unwind label %835

824:                                              ; preds = %823
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  %825 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %825, ptr noundef @.str.19)
          to label %826 unwind label %841

826:                                              ; preds = %824
  invoke void @__cxa_throw(ptr %825, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %764

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

831:                                              ; preds = %817
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %11, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %12, align 4
  br label %839

835:                                              ; preds = %823
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %11, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %839

839:                                              ; preds = %835, %831
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %840

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

841:                                              ; preds = %824
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %11, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %12, align 4
  call void @__cxa_free_exception(ptr %825) #8
  br label %2576

845:                                              ; No predecessors!
  br label %846

846:                                              ; preds = %845
  br label %847

847:                                              ; preds = %846, %812
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #8
  store i8 1, ptr %52, align 1, !tbaa !92
  br label %848

848:                                              ; preds = %2571, %847
  %849 = load i8, ptr %52, align 1, !tbaa !92, !range !93, !noundef !94
  %850 = trunc i8 %849 to i1
  br i1 %850, label %852, label %851

851:                                              ; preds = %848
  store i32 6, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %2572

852:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %853 = load ptr, ptr %13, align 8, !tbaa !5
  %854 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %853)
          to label %855 unwind label %863

855:                                              ; preds = %852
  store ptr %854, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %856 = load ptr, ptr %14, align 8, !tbaa !5
  %857 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %856)
          to label %858 unwind label %867

858:                                              ; preds = %855
  store ptr %857, ptr %54, align 8, !tbaa !5
  br label %859

859:                                              ; preds = %2567, %858
  %860 = load i8, ptr %52, align 1, !tbaa !92, !range !93, !noundef !94
  %861 = trunc i8 %860 to i1
  br i1 %861, label %871, label %862

862:                                              ; preds = %859
  store i32 9, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %2570

863:                                              ; preds = %852
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %11, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %12, align 4
  br label %2569

867:                                              ; preds = %871, %855
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %11, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %12, align 4
  br label %2568

871:                                              ; preds = %859
  %872 = load ptr, ptr %53, align 8, !tbaa !5
  %873 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %872)
          to label %874 unwind label %867

874:                                              ; preds = %871
  switch i32 %873, label %2566 [
    i32 0, label %875
    i32 1, label %876
    i32 2, label %909
    i32 3, label %941
    i32 4, label %1006
    i32 5, label %1072
    i32 6, label %1139
    i32 7, label %1389
    i32 8, label %1750
    i32 9, label %1970
    i32 10, label %2008
    i32 11, label %2099
    i32 12, label %2172
    i32 13, label %2245
    i32 14, label %2311
    i32 15, label %2432
    i32 16, label %2499
  ]

875:                                              ; preds = %874
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2212, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

876:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #8
  store i8 1, ptr %55, align 1, !tbaa !92
  br label %877

877:                                              ; preds = %907, %876
  %878 = load i8, ptr %55, align 1, !tbaa !92, !range !93, !noundef !94
  %879 = trunc i8 %878 to i1
  br i1 %879, label %881, label %880

880:                                              ; preds = %877
  store i32 13, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  br label %908

881:                                              ; preds = %877
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %882 = load ptr, ptr %53, align 8, !tbaa !5
  %883 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %882)
          to label %884 unwind label %894

884:                                              ; preds = %881
  store ptr %883, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %885 = load ptr, ptr %54, align 8, !tbaa !5
  %886 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %885)
          to label %887 unwind label %898

887:                                              ; preds = %884
  store ptr %886, ptr %57, align 8, !tbaa !5
  br label %888

888:                                              ; preds = %904, %887
  %889 = load ptr, ptr %56, align 8, !tbaa !5
  %890 = load ptr, ptr %57, align 8, !tbaa !5
  %891 = load i8, ptr %55, align 1, !tbaa !92, !range !93, !noundef !94
  %892 = trunc i8 %891 to i1
  br i1 %892, label %902, label %893

893:                                              ; preds = %888
  store i32 16, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %906

894:                                              ; preds = %881
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %11, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %12, align 4
  br label %905

898:                                              ; preds = %902, %884
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %11, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %905

902:                                              ; preds = %888
  %903 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.22, ptr %903, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %903, ptr @_ZTIPKc, ptr null) #9
          to label %2596 unwind label %898

904:                                              ; No predecessors!
  store i8 0, ptr %55, align 1, !tbaa !92
  br label %888, !llvm.loop !95

905:                                              ; preds = %898, %894
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  br label %2568

906:                                              ; preds = %893
  br label %907

907:                                              ; preds = %906
  store i8 0, ptr %55, align 1, !tbaa !92
  br label %877, !llvm.loop !97

908:                                              ; preds = %880
  br label %2566

909:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  store i8 1, ptr %58, align 1, !tbaa !92
  br label %910

910:                                              ; preds = %939, %909
  %911 = load i8, ptr %58, align 1, !tbaa !92, !range !93, !noundef !94
  %912 = trunc i8 %911 to i1
  br i1 %912, label %914, label %913

913:                                              ; preds = %910
  store i32 19, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %940

914:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %915 = load ptr, ptr %53, align 8, !tbaa !5
  %916 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %915)
          to label %917 unwind label %927

917:                                              ; preds = %914
  store ptr %916, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %918 = load ptr, ptr %54, align 8, !tbaa !5
  %919 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %918)
          to label %920 unwind label %931

920:                                              ; preds = %917
  store ptr %919, ptr %60, align 8, !tbaa !5
  br label %921

921:                                              ; preds = %936, %920
  %922 = load ptr, ptr %59, align 8, !tbaa !5
  %923 = load ptr, ptr %60, align 8, !tbaa !5
  %924 = load i8, ptr %58, align 1, !tbaa !92, !range !93, !noundef !94
  %925 = trunc i8 %924 to i1
  br i1 %925, label %935, label %926

926:                                              ; preds = %921
  store i32 22, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %938

927:                                              ; preds = %914
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %11, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %12, align 4
  br label %937

931:                                              ; preds = %917
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %11, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %937

935:                                              ; preds = %921
  br label %936

936:                                              ; preds = %935
  store i8 0, ptr %58, align 1, !tbaa !92
  br label %921, !llvm.loop !98

937:                                              ; preds = %931, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %2568

938:                                              ; preds = %926
  br label %939

939:                                              ; preds = %938
  store i8 0, ptr %58, align 1, !tbaa !92
  br label %910, !llvm.loop !99

940:                                              ; preds = %913
  br label %2566

941:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  store i8 1, ptr %61, align 1, !tbaa !92
  br label %942

942:                                              ; preds = %1004, %941
  %943 = load i8, ptr %61, align 1, !tbaa !92, !range !93, !noundef !94
  %944 = trunc i8 %943 to i1
  br i1 %944, label %946, label %945

945:                                              ; preds = %942
  store i32 25, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  br label %1005

946:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %947 = load ptr, ptr %53, align 8, !tbaa !5
  %948 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %947)
          to label %949 unwind label %959

949:                                              ; preds = %946
  store ptr %948, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %950 = load ptr, ptr %54, align 8, !tbaa !5
  %951 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %950)
          to label %952 unwind label %963

952:                                              ; preds = %949
  store ptr %951, ptr %63, align 8, !tbaa !5
  br label %953

953:                                              ; preds = %1000, %952
  %954 = load ptr, ptr %62, align 8, !tbaa !5
  %955 = load ptr, ptr %63, align 8, !tbaa !5
  %956 = load i8, ptr %61, align 1, !tbaa !92, !range !93, !noundef !94
  %957 = trunc i8 %956 to i1
  br i1 %957, label %967, label %958

958:                                              ; preds = %953
  store i32 28, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %1003

959:                                              ; preds = %946
  %960 = landingpad { ptr, i32 }
          cleanup
  %961 = extractvalue { ptr, i32 } %960, 0
  store ptr %961, ptr %11, align 8
  %962 = extractvalue { ptr, i32 } %960, 1
  store i32 %962, ptr %12, align 4
  br label %1002

963:                                              ; preds = %983, %949
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %11, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %12, align 4
  br label %1001

967:                                              ; preds = %953
  %968 = load ptr, ptr %62, align 8, !tbaa !5
  %969 = load i32, ptr %968, align 4, !tbaa !100
  %970 = load ptr, ptr %63, align 8, !tbaa !5
  %971 = load i32, ptr %970, align 4, !tbaa !100
  %972 = icmp ne i32 %969, %971
  br i1 %972, label %973, label %999

973:                                              ; preds = %967
  br label %974

974:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %975 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %975)
          to label %976 unwind label %984

976:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #8
  %977 = getelementptr inbounds %class.anon.164, ptr %66, i32 0, i32 0
  %978 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %978, ptr %977, align 8, !tbaa !5
  %979 = getelementptr inbounds %class.anon.164, ptr %66, i32 0, i32 1
  %980 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %980, ptr %979, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, i32 noundef 0, ptr noundef %65)
          to label %981 unwind label %988

981:                                              ; preds = %976
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  %982 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %982, ptr noundef @.str.19)
          to label %983 unwind label %993

983:                                              ; preds = %981
  invoke void @__cxa_throw(ptr %982, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %963

984:                                              ; preds = %974
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %11, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %12, align 4
  br label %992

988:                                              ; preds = %976
  %989 = landingpad { ptr, i32 }
          cleanup
  %990 = extractvalue { ptr, i32 } %989, 0
  store ptr %990, ptr %11, align 8
  %991 = extractvalue { ptr, i32 } %989, 1
  store i32 %991, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %992

992:                                              ; preds = %988, %984
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %1001

993:                                              ; preds = %981
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %11, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %12, align 4
  call void @__cxa_free_exception(ptr %982) #8
  br label %1001

997:                                              ; No predecessors!
  br label %998

998:                                              ; preds = %997
  br label %999

999:                                              ; preds = %998, %967
  br label %1000

1000:                                             ; preds = %999
  store i8 0, ptr %61, align 1, !tbaa !92
  br label %953, !llvm.loop !102

1001:                                             ; preds = %993, %992, %963
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %1002

1002:                                             ; preds = %1001, %959
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  br label %2568

1003:                                             ; preds = %958
  br label %1004

1004:                                             ; preds = %1003
  store i8 0, ptr %61, align 1, !tbaa !92
  br label %942, !llvm.loop !103

1005:                                             ; preds = %945
  br label %2566

1006:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #8
  store i8 1, ptr %67, align 1, !tbaa !92
  br label %1007

1007:                                             ; preds = %1070, %1006
  %1008 = load i8, ptr %67, align 1, !tbaa !92, !range !93, !noundef !94
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1007
  store i32 33, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #8
  br label %1071

1011:                                             ; preds = %1007
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  %1012 = load ptr, ptr %53, align 8, !tbaa !5
  %1013 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1012)
          to label %1014 unwind label %1024

1014:                                             ; preds = %1011
  store ptr %1013, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %1015 = load ptr, ptr %54, align 8, !tbaa !5
  %1016 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1015)
          to label %1017 unwind label %1028

1017:                                             ; preds = %1014
  store ptr %1016, ptr %69, align 8, !tbaa !5
  br label %1018

1018:                                             ; preds = %1066, %1017
  %1019 = load ptr, ptr %68, align 8, !tbaa !5
  %1020 = load ptr, ptr %69, align 8, !tbaa !5
  %1021 = load i8, ptr %67, align 1, !tbaa !92, !range !93, !noundef !94
  %1022 = trunc i8 %1021 to i1
  br i1 %1022, label %1032, label %1023

1023:                                             ; preds = %1018
  store i32 36, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  br label %1069

1024:                                             ; preds = %1011
  %1025 = landingpad { ptr, i32 }
          cleanup
  %1026 = extractvalue { ptr, i32 } %1025, 0
  store ptr %1026, ptr %11, align 8
  %1027 = extractvalue { ptr, i32 } %1025, 1
  store i32 %1027, ptr %12, align 4
  br label %1068

1028:                                             ; preds = %1049, %1032, %1014
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %11, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %12, align 4
  br label %1067

1032:                                             ; preds = %1018
  %1033 = load ptr, ptr %68, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1033, i32 0, i32 0
  %1035 = load ptr, ptr %69, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1035, i32 0, i32 0
  %1037 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(88) %1034, ptr noundef nonnull align 8 dereferenceable(88) %1036)
          to label %1038 unwind label %1028

1038:                                             ; preds = %1032
  br i1 %1037, label %1065, label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %1041 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %1041)
          to label %1042 unwind label %1050

1042:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #8
  %1043 = getelementptr inbounds %class.anon.165, ptr %72, i32 0, i32 0
  %1044 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1044, ptr %1043, align 8, !tbaa !5
  %1045 = getelementptr inbounds %class.anon.165, ptr %72, i32 0, i32 1
  %1046 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1046, ptr %1045, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef 0, ptr noundef %71)
          to label %1047 unwind label %1054

1047:                                             ; preds = %1042
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  %1048 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1048, ptr noundef @.str.19)
          to label %1049 unwind label %1059

1049:                                             ; preds = %1047
  invoke void @__cxa_throw(ptr %1048, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1028

1050:                                             ; preds = %1040
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %11, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %12, align 4
  br label %1058

1054:                                             ; preds = %1042
  %1055 = landingpad { ptr, i32 }
          cleanup
  %1056 = extractvalue { ptr, i32 } %1055, 0
  store ptr %1056, ptr %11, align 8
  %1057 = extractvalue { ptr, i32 } %1055, 1
  store i32 %1057, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %1058

1058:                                             ; preds = %1054, %1050
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %1067

1059:                                             ; preds = %1047
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %11, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1048) #8
  br label %1067

1063:                                             ; No predecessors!
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064, %1038
  br label %1066

1066:                                             ; preds = %1065
  store i8 0, ptr %67, align 1, !tbaa !92
  br label %1018, !llvm.loop !104

1067:                                             ; preds = %1059, %1058, %1028
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %1068

1068:                                             ; preds = %1067, %1024
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #8
  br label %2568

1069:                                             ; preds = %1023
  br label %1070

1070:                                             ; preds = %1069
  store i8 0, ptr %67, align 1, !tbaa !92
  br label %1007, !llvm.loop !105

1071:                                             ; preds = %1010
  br label %2566

1072:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  store i8 1, ptr %73, align 1, !tbaa !92
  br label %1073

1073:                                             ; preds = %1137, %1072
  %1074 = load i8, ptr %73, align 1, !tbaa !92, !range !93, !noundef !94
  %1075 = trunc i8 %1074 to i1
  br i1 %1075, label %1077, label %1076

1076:                                             ; preds = %1073
  store i32 41, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %1138

1077:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %1078 = load ptr, ptr %53, align 8, !tbaa !5
  %1079 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1078)
          to label %1080 unwind label %1090

1080:                                             ; preds = %1077
  store ptr %1079, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %1081 = load ptr, ptr %54, align 8, !tbaa !5
  %1082 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1081)
          to label %1083 unwind label %1094

1083:                                             ; preds = %1080
  store ptr %1082, ptr %75, align 8, !tbaa !5
  br label %1084

1084:                                             ; preds = %1133, %1083
  %1085 = load ptr, ptr %74, align 8, !tbaa !5
  %1086 = load ptr, ptr %75, align 8, !tbaa !5
  %1087 = load i8, ptr %73, align 1, !tbaa !92, !range !93, !noundef !94
  %1088 = trunc i8 %1087 to i1
  br i1 %1088, label %1098, label %1089

1089:                                             ; preds = %1084
  store i32 44, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1136

1090:                                             ; preds = %1077
  %1091 = landingpad { ptr, i32 }
          cleanup
  %1092 = extractvalue { ptr, i32 } %1091, 0
  store ptr %1092, ptr %11, align 8
  %1093 = extractvalue { ptr, i32 } %1091, 1
  store i32 %1093, ptr %12, align 4
  br label %1135

1094:                                             ; preds = %1116, %1080
  %1095 = landingpad { ptr, i32 }
          cleanup
  %1096 = extractvalue { ptr, i32 } %1095, 0
  store ptr %1096, ptr %11, align 8
  %1097 = extractvalue { ptr, i32 } %1095, 1
  store i32 %1097, ptr %12, align 4
  br label %1134

1098:                                             ; preds = %1084
  %1099 = load ptr, ptr %74, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %1099, i32 0, i32 1
  %1101 = load i32, ptr %1100, align 8, !tbaa !106
  %1102 = load ptr, ptr %75, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %1102, i32 0, i32 1
  %1104 = load i32, ptr %1103, align 8, !tbaa !106
  %1105 = icmp ne i32 %1101, %1104
  br i1 %1105, label %1106, label %1132

1106:                                             ; preds = %1098
  br label %1107

1107:                                             ; preds = %1106
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %1108 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %1108)
          to label %1109 unwind label %1117

1109:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #8
  %1110 = getelementptr inbounds %class.anon.166, ptr %78, i32 0, i32 0
  %1111 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1111, ptr %1110, align 8, !tbaa !5
  %1112 = getelementptr inbounds %class.anon.166, ptr %78, i32 0, i32 1
  %1113 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1113, ptr %1112, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(16) %78) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 0, ptr noundef %77)
          to label %1114 unwind label %1121

1114:                                             ; preds = %1109
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  %1115 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1115, ptr noundef @.str.19)
          to label %1116 unwind label %1126

1116:                                             ; preds = %1114
  invoke void @__cxa_throw(ptr %1115, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1094

1117:                                             ; preds = %1107
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %11, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %12, align 4
  br label %1125

1121:                                             ; preds = %1109
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %11, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %1125

1125:                                             ; preds = %1121, %1117
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %1134

1126:                                             ; preds = %1114
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %11, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1115) #8
  br label %1134

1130:                                             ; No predecessors!
  br label %1131

1131:                                             ; preds = %1130
  br label %1132

1132:                                             ; preds = %1131, %1098
  br label %1133

1133:                                             ; preds = %1132
  store i8 0, ptr %73, align 1, !tbaa !92
  br label %1084, !llvm.loop !109

1134:                                             ; preds = %1126, %1125, %1094
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %1135

1135:                                             ; preds = %1134, %1090
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %2568

1136:                                             ; preds = %1089
  br label %1137

1137:                                             ; preds = %1136
  store i8 0, ptr %73, align 1, !tbaa !92
  br label %1073, !llvm.loop !110

1138:                                             ; preds = %1076
  br label %2566

1139:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #8
  store i8 1, ptr %79, align 1, !tbaa !92
  br label %1140

1140:                                             ; preds = %1387, %1139
  %1141 = load i8, ptr %79, align 1, !tbaa !92, !range !93, !noundef !94
  %1142 = trunc i8 %1141 to i1
  br i1 %1142, label %1144, label %1143

1143:                                             ; preds = %1140
  store i32 49, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  br label %1388

1144:                                             ; preds = %1140
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %1145 = load ptr, ptr %53, align 8, !tbaa !5
  %1146 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1145)
          to label %1147 unwind label %1157

1147:                                             ; preds = %1144
  store ptr %1146, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %1148 = load ptr, ptr %54, align 8, !tbaa !5
  %1149 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1148)
          to label %1150 unwind label %1161

1150:                                             ; preds = %1147
  store ptr %1149, ptr %81, align 8, !tbaa !5
  br label %1151

1151:                                             ; preds = %1383, %1150
  %1152 = load ptr, ptr %80, align 8, !tbaa !5
  %1153 = load ptr, ptr %81, align 8, !tbaa !5
  %1154 = load i8, ptr %79, align 1, !tbaa !92, !range !93, !noundef !94
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1165, label %1156

1156:                                             ; preds = %1151
  store i32 52, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %1386

1157:                                             ; preds = %1144
  %1158 = landingpad { ptr, i32 }
          cleanup
  %1159 = extractvalue { ptr, i32 } %1158, 0
  store ptr %1159, ptr %11, align 8
  %1160 = extractvalue { ptr, i32 } %1158, 1
  store i32 %1160, ptr %12, align 4
  br label %1385

1161:                                             ; preds = %1300, %1202, %1186, %1165, %1147
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %11, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %12, align 4
  br label %1384

1165:                                             ; preds = %1151
  %1166 = load ptr, ptr %80, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1166, i32 0, i32 0
  %1168 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1167, i32 0, i32 1
  %1169 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1168, i32 0, i32 0
  %1170 = load ptr, ptr %81, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1170, i32 0, i32 0
  %1172 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1171, i32 0, i32 1
  %1173 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1172, i32 0, i32 0
  %1174 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1169, ptr noundef nonnull align 8 dereferenceable(8) %1173)
          to label %1175 unwind label %1161

1175:                                             ; preds = %1165
  br i1 %1174, label %1176, label %1202

1176:                                             ; preds = %1175
  br label %1177

1177:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %1178 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %1178)
          to label %1179 unwind label %1187

1179:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #8
  %1180 = getelementptr inbounds %class.anon.167, ptr %84, i32 0, i32 0
  %1181 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1181, ptr %1180, align 8, !tbaa !5
  %1182 = getelementptr inbounds %class.anon.167, ptr %84, i32 0, i32 1
  %1183 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1183, ptr %1182, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 0, ptr noundef %83)
          to label %1184 unwind label %1191

1184:                                             ; preds = %1179
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  %1185 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1185, ptr noundef @.str.19)
          to label %1186 unwind label %1196

1186:                                             ; preds = %1184
  invoke void @__cxa_throw(ptr %1185, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1161

1187:                                             ; preds = %1177
  %1188 = landingpad { ptr, i32 }
          cleanup
  %1189 = extractvalue { ptr, i32 } %1188, 0
  store ptr %1189, ptr %11, align 8
  %1190 = extractvalue { ptr, i32 } %1188, 1
  store i32 %1190, ptr %12, align 4
  br label %1195

1191:                                             ; preds = %1179
  %1192 = landingpad { ptr, i32 }
          cleanup
  %1193 = extractvalue { ptr, i32 } %1192, 0
  store ptr %1193, ptr %11, align 8
  %1194 = extractvalue { ptr, i32 } %1192, 1
  store i32 %1194, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %1195

1195:                                             ; preds = %1191, %1187
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %1384

1196:                                             ; preds = %1184
  %1197 = landingpad { ptr, i32 }
          cleanup
  %1198 = extractvalue { ptr, i32 } %1197, 0
  store ptr %1198, ptr %11, align 8
  %1199 = extractvalue { ptr, i32 } %1197, 1
  store i32 %1199, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1185) #8
  br label %1384

1200:                                             ; No predecessors!
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201, %1175
  %1203 = load ptr, ptr %80, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1203, i32 0, i32 0
  %1205 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1204, i32 0, i32 1
  %1206 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1205, i32 0, i32 1
  %1207 = load ptr, ptr %81, align 8, !tbaa !5
  %1208 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1207, i32 0, i32 0
  %1209 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1208, i32 0, i32 1
  %1210 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1209, i32 0, i32 1
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(24) %1206, ptr noundef nonnull align 8 dereferenceable(24) %1210)
          to label %1211 unwind label %1161

1211:                                             ; preds = %1202
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %1212 = load ptr, ptr %80, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1212, i32 0, i32 0
  %1214 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1213, i32 0, i32 2
  %1215 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1214) #8
  %1216 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %85, i32 0, i32 0
  store ptr %1215, ptr %1216, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %1217 = load ptr, ptr %81, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1217, i32 0, i32 0
  %1219 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1218, i32 0, i32 2
  %1220 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1219) #8
  %1221 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %86, i32 0, i32 0
  store ptr %1220, ptr %1221, align 8
  br label %1222

1222:                                             ; preds = %1276, %1211
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %1223 = load ptr, ptr %80, align 8, !tbaa !5
  %1224 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1223, i32 0, i32 0
  %1225 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1224, i32 0, i32 2
  %1226 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1225) #8
  %1227 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %87, i32 0, i32 0
  store ptr %1226, ptr %1227, align 8
  %1228 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  br i1 %1228, label %1230, label %1229

1229:                                             ; preds = %1222
  store i32 57, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %1282

1230:                                             ; preds = %1222
  %1231 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  %1232 = getelementptr inbounds %"struct.std::pair.168", ptr %1231, i32 0, i32 0
  %1233 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  %1234 = getelementptr inbounds %"struct.std::pair.168", ptr %1233, i32 0, i32 0
  %1235 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %1232, ptr noundef nonnull align 8 dereferenceable(8) %1234)
          to label %1236 unwind label %1248

1236:                                             ; preds = %1230
  br i1 %1235, label %1237, label %1267

1237:                                             ; preds = %1236
  br label %1238

1238:                                             ; preds = %1237
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %1239 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %1239)
          to label %1240 unwind label %1252

1240:                                             ; preds = %1238
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #8
  %1241 = getelementptr inbounds %class.anon.170, ptr %90, i32 0, i32 0
  %1242 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1242, ptr %1241, align 8, !tbaa !5
  %1243 = getelementptr inbounds %class.anon.170, ptr %90, i32 0, i32 1
  %1244 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1244, ptr %1243, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %88, i32 noundef 0, ptr noundef %89)
          to label %1245 unwind label %1256

1245:                                             ; preds = %1240
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  %1246 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1246, ptr noundef @.str.19)
          to label %1247 unwind label %1261

1247:                                             ; preds = %1245
  invoke void @__cxa_throw(ptr %1246, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1248

1248:                                             ; preds = %1267, %1247, %1230
  %1249 = landingpad { ptr, i32 }
          cleanup
  %1250 = extractvalue { ptr, i32 } %1249, 0
  store ptr %1250, ptr %11, align 8
  %1251 = extractvalue { ptr, i32 } %1249, 1
  store i32 %1251, ptr %12, align 4
  br label %1281

1252:                                             ; preds = %1238
  %1253 = landingpad { ptr, i32 }
          cleanup
  %1254 = extractvalue { ptr, i32 } %1253, 0
  store ptr %1254, ptr %11, align 8
  %1255 = extractvalue { ptr, i32 } %1253, 1
  store i32 %1255, ptr %12, align 4
  br label %1260

1256:                                             ; preds = %1240
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %11, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %1260

1260:                                             ; preds = %1256, %1252
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %1281

1261:                                             ; preds = %1245
  %1262 = landingpad { ptr, i32 }
          cleanup
  %1263 = extractvalue { ptr, i32 } %1262, 0
  store ptr %1263, ptr %11, align 8
  %1264 = extractvalue { ptr, i32 } %1262, 1
  store i32 %1264, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1246) #8
  br label %1281

1265:                                             ; No predecessors!
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266, %1236
  %1268 = load ptr, ptr %6, align 8, !tbaa !5
  %1269 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  %1270 = getelementptr inbounds %"struct.std::pair.168", ptr %1269, i32 0, i32 1
  %1271 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1270, i32 0, i32 1
  %1272 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  %1273 = getelementptr inbounds %"struct.std::pair.168", ptr %1272, i32 0, i32 1
  %1274 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1273, i32 0, i32 1
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1268, ptr noundef nonnull align 8 dereferenceable(8) %1271, ptr noundef nonnull align 8 dereferenceable(8) %1274)
          to label %1275 unwind label %1248

1275:                                             ; preds = %1267
  br label %1276

1276:                                             ; preds = %1275
  %1277 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef 0) #8
  %1278 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %91, i32 0, i32 0
  store ptr %1277, ptr %1278, align 8
  %1279 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 0) #8
  %1280 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %92, i32 0, i32 0
  store ptr %1279, ptr %1280, align 8
  br label %1222, !llvm.loop !111

1281:                                             ; preds = %1261, %1260, %1248
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %1384

1282:                                             ; preds = %1229
  %1283 = load ptr, ptr %80, align 8, !tbaa !5
  %1284 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1283, i32 0, i32 1
  %1285 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1284) #8
  %1286 = load ptr, ptr %81, align 8, !tbaa !5
  %1287 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1286, i32 0, i32 1
  %1288 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1287) #8
  %1289 = icmp ne i64 %1285, %1288
  br i1 %1289, label %1290, label %1316

1290:                                             ; preds = %1282
  br label %1291

1291:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %1292 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %1292)
          to label %1293 unwind label %1301

1293:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #8
  %1294 = getelementptr inbounds %class.anon.171, ptr %95, i32 0, i32 0
  %1295 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1295, ptr %1294, align 8, !tbaa !5
  %1296 = getelementptr inbounds %class.anon.171, ptr %95, i32 0, i32 1
  %1297 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1297, ptr %1296, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef 0, ptr noundef %94)
          to label %1298 unwind label %1305

1298:                                             ; preds = %1293
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  %1299 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1299, ptr noundef @.str.19)
          to label %1300 unwind label %1310

1300:                                             ; preds = %1298
  invoke void @__cxa_throw(ptr %1299, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1161

1301:                                             ; preds = %1291
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %11, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %12, align 4
  br label %1309

1305:                                             ; preds = %1293
  %1306 = landingpad { ptr, i32 }
          cleanup
  %1307 = extractvalue { ptr, i32 } %1306, 0
  store ptr %1307, ptr %11, align 8
  %1308 = extractvalue { ptr, i32 } %1306, 1
  store i32 %1308, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  br label %1309

1309:                                             ; preds = %1305, %1301
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1384

1310:                                             ; preds = %1298
  %1311 = landingpad { ptr, i32 }
          cleanup
  %1312 = extractvalue { ptr, i32 } %1311, 0
  store ptr %1312, ptr %11, align 8
  %1313 = extractvalue { ptr, i32 } %1311, 1
  store i32 %1313, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1299) #8
  br label %1384

1314:                                             ; No predecessors!
  br label %1315

1315:                                             ; preds = %1314
  br label %1316

1316:                                             ; preds = %1315, %1282
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #8
  store i32 0, ptr %96, align 4, !tbaa !82
  br label %1317

1317:                                             ; preds = %1378, %1316
  %1318 = load i32, ptr %96, align 4, !tbaa !82
  %1319 = zext i32 %1318 to i64
  %1320 = load ptr, ptr %80, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1320, i32 0, i32 1
  %1322 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1321) #8
  %1323 = icmp ult i64 %1319, %1322
  br i1 %1323, label %1325, label %1324

1324:                                             ; preds = %1317
  store i32 64, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  br label %1382

1325:                                             ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %1326 = load ptr, ptr %80, align 8, !tbaa !5
  %1327 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1326, i32 0, i32 1
  %1328 = load i32, ptr %96, align 4, !tbaa !82
  %1329 = zext i32 %1328 to i64
  %1330 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1327, i64 noundef %1329) #8
  store ptr %1330, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %1331 = load ptr, ptr %81, align 8, !tbaa !5
  %1332 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1331, i32 0, i32 1
  %1333 = load i32, ptr %96, align 4, !tbaa !82
  %1334 = zext i32 %1333 to i64
  %1335 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1332, i64 noundef %1334) #8
  store ptr %1335, ptr %98, align 8, !tbaa !5
  %1336 = load ptr, ptr %97, align 8, !tbaa !5
  %1337 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1336, i32 0, i32 0
  %1338 = load ptr, ptr %98, align 8, !tbaa !5
  %1339 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1338, i32 0, i32 0
  %1340 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1337, ptr noundef nonnull align 8 dereferenceable(8) %1339)
          to label %1341 unwind label %1353

1341:                                             ; preds = %1325
  br i1 %1340, label %1342, label %1372

1342:                                             ; preds = %1341
  br label %1343

1343:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %1344 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %1344)
          to label %1345 unwind label %1357

1345:                                             ; preds = %1343
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #8
  %1346 = getelementptr inbounds %class.anon.172, ptr %101, i32 0, i32 0
  %1347 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1347, ptr %1346, align 8, !tbaa !5
  %1348 = getelementptr inbounds %class.anon.172, ptr %101, i32 0, i32 1
  %1349 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1349, ptr %1348, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef 0, ptr noundef %100)
          to label %1350 unwind label %1361

1350:                                             ; preds = %1345
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  %1351 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1351, ptr noundef @.str.19)
          to label %1352 unwind label %1366

1352:                                             ; preds = %1350
  invoke void @__cxa_throw(ptr %1351, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1353

1353:                                             ; preds = %1372, %1352, %1325
  %1354 = landingpad { ptr, i32 }
          cleanup
  %1355 = extractvalue { ptr, i32 } %1354, 0
  store ptr %1355, ptr %11, align 8
  %1356 = extractvalue { ptr, i32 } %1354, 1
  store i32 %1356, ptr %12, align 4
  br label %1381

1357:                                             ; preds = %1343
  %1358 = landingpad { ptr, i32 }
          cleanup
  %1359 = extractvalue { ptr, i32 } %1358, 0
  store ptr %1359, ptr %11, align 8
  %1360 = extractvalue { ptr, i32 } %1358, 1
  store i32 %1360, ptr %12, align 4
  br label %1365

1361:                                             ; preds = %1345
  %1362 = landingpad { ptr, i32 }
          cleanup
  %1363 = extractvalue { ptr, i32 } %1362, 0
  store ptr %1363, ptr %11, align 8
  %1364 = extractvalue { ptr, i32 } %1362, 1
  store i32 %1364, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br label %1365

1365:                                             ; preds = %1361, %1357
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %1381

1366:                                             ; preds = %1350
  %1367 = landingpad { ptr, i32 }
          cleanup
  %1368 = extractvalue { ptr, i32 } %1367, 0
  store ptr %1368, ptr %11, align 8
  %1369 = extractvalue { ptr, i32 } %1367, 1
  store i32 %1369, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1351) #8
  br label %1381

1370:                                             ; No predecessors!
  br label %1371

1371:                                             ; preds = %1370
  br label %1372

1372:                                             ; preds = %1371, %1341
  %1373 = load ptr, ptr %97, align 8, !tbaa !5
  %1374 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1373, i32 0, i32 1
  %1375 = load ptr, ptr %98, align 8, !tbaa !5
  %1376 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1375, i32 0, i32 1
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(24) %1374, ptr noundef nonnull align 8 dereferenceable(24) %1376)
          to label %1377 unwind label %1353

1377:                                             ; preds = %1372
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1378

1378:                                             ; preds = %1377
  %1379 = load i32, ptr %96, align 4, !tbaa !82
  %1380 = add i32 %1379, 1
  store i32 %1380, ptr %96, align 4, !tbaa !82
  br label %1317, !llvm.loop !112

1381:                                             ; preds = %1366, %1365, %1353
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  br label %1384

1382:                                             ; preds = %1324
  br label %1383

1383:                                             ; preds = %1382
  store i8 0, ptr %79, align 1, !tbaa !92
  br label %1151, !llvm.loop !113

1384:                                             ; preds = %1381, %1310, %1309, %1281, %1196, %1195, %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  br label %1385

1385:                                             ; preds = %1384, %1157
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  br label %2568

1386:                                             ; preds = %1156
  br label %1387

1387:                                             ; preds = %1386
  store i8 0, ptr %79, align 1, !tbaa !92
  br label %1140, !llvm.loop !114

1388:                                             ; preds = %1143
  br label %2566

1389:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  store i8 1, ptr %102, align 1, !tbaa !92
  br label %1390

1390:                                             ; preds = %1748, %1389
  %1391 = load i8, ptr %102, align 1, !tbaa !92, !range !93, !noundef !94
  %1392 = trunc i8 %1391 to i1
  br i1 %1392, label %1394, label %1393

1393:                                             ; preds = %1390
  store i32 69, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %1749

1394:                                             ; preds = %1390
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %1395 = load ptr, ptr %53, align 8, !tbaa !5
  %1396 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1395)
          to label %1397 unwind label %1407

1397:                                             ; preds = %1394
  store ptr %1396, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  %1398 = load ptr, ptr %54, align 8, !tbaa !5
  %1399 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1398)
          to label %1400 unwind label %1411

1400:                                             ; preds = %1397
  store ptr %1399, ptr %104, align 8, !tbaa !5
  br label %1401

1401:                                             ; preds = %1744, %1400
  %1402 = load ptr, ptr %103, align 8, !tbaa !5
  %1403 = load ptr, ptr %104, align 8, !tbaa !5
  %1404 = load i8, ptr %102, align 1, !tbaa !92, !range !93, !noundef !94
  %1405 = trunc i8 %1404 to i1
  br i1 %1405, label %1415, label %1406

1406:                                             ; preds = %1401
  store i32 72, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %1747

1407:                                             ; preds = %1394
  %1408 = landingpad { ptr, i32 }
          cleanup
  %1409 = extractvalue { ptr, i32 } %1408, 0
  store ptr %1409, ptr %11, align 8
  %1410 = extractvalue { ptr, i32 } %1408, 1
  store i32 %1410, ptr %12, align 4
  br label %1746

1411:                                             ; preds = %1435, %1419, %1415, %1397
  %1412 = landingpad { ptr, i32 }
          cleanup
  %1413 = extractvalue { ptr, i32 } %1412, 0
  store ptr %1413, ptr %11, align 8
  %1414 = extractvalue { ptr, i32 } %1412, 1
  store i32 %1414, ptr %12, align 4
  br label %1745

1415:                                             ; preds = %1401
  %1416 = load ptr, ptr %103, align 8, !tbaa !5
  %1417 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1416, i32 0, i32 3
  %1418 = invoke noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %1417)
          to label %1419 unwind label %1411

1419:                                             ; preds = %1415
  %1420 = load ptr, ptr %104, align 8, !tbaa !5
  %1421 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1420, i32 0, i32 3
  %1422 = invoke noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %1421)
          to label %1423 unwind label %1411

1423:                                             ; preds = %1419
  %1424 = icmp ne i32 %1418, %1422
  br i1 %1424, label %1425, label %1451

1425:                                             ; preds = %1423
  br label %1426

1426:                                             ; preds = %1425
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %1427 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %1427)
          to label %1428 unwind label %1436

1428:                                             ; preds = %1426
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #8
  %1429 = getelementptr inbounds %class.anon.173, ptr %107, i32 0, i32 0
  %1430 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1430, ptr %1429, align 8, !tbaa !5
  %1431 = getelementptr inbounds %class.anon.173, ptr %107, i32 0, i32 1
  %1432 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1432, ptr %1431, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(16) %107) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 0, ptr noundef %106)
          to label %1433 unwind label %1440

1433:                                             ; preds = %1428
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  %1434 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1434, ptr noundef @.str.19)
          to label %1435 unwind label %1445

1435:                                             ; preds = %1433
  invoke void @__cxa_throw(ptr %1434, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1411

1436:                                             ; preds = %1426
  %1437 = landingpad { ptr, i32 }
          cleanup
  %1438 = extractvalue { ptr, i32 } %1437, 0
  store ptr %1438, ptr %11, align 8
  %1439 = extractvalue { ptr, i32 } %1437, 1
  store i32 %1439, ptr %12, align 4
  br label %1444

1440:                                             ; preds = %1428
  %1441 = landingpad { ptr, i32 }
          cleanup
  %1442 = extractvalue { ptr, i32 } %1441, 0
  store ptr %1442, ptr %11, align 8
  %1443 = extractvalue { ptr, i32 } %1441, 1
  store i32 %1443, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  br label %1444

1444:                                             ; preds = %1440, %1436
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  br label %1745

1445:                                             ; preds = %1433
  %1446 = landingpad { ptr, i32 }
          cleanup
  %1447 = extractvalue { ptr, i32 } %1446, 0
  store ptr %1447, ptr %11, align 8
  %1448 = extractvalue { ptr, i32 } %1446, 1
  store i32 %1448, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1434) #8
  br label %1745

1449:                                             ; No predecessors!
  br label %1450

1450:                                             ; preds = %1449
  br label %1451

1451:                                             ; preds = %1450, %1423
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #8
  store i8 1, ptr %108, align 1, !tbaa !92
  br label %1452

1452:                                             ; preds = %1742, %1451
  %1453 = load i8, ptr %108, align 1, !tbaa !92, !range !93, !noundef !94
  %1454 = trunc i8 %1453 to i1
  br i1 %1454, label %1456, label %1455

1455:                                             ; preds = %1452
  store i32 77, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #8
  br label %1743

1456:                                             ; preds = %1452
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  %1457 = load ptr, ptr %103, align 8, !tbaa !5
  %1458 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1457, i32 0, i32 3
  store ptr %1458, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1459 = load ptr, ptr %104, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1459, i32 0, i32 3
  store ptr %1460, ptr %110, align 8, !tbaa !5
  br label %1461

1461:                                             ; preds = %1739, %1456
  %1462 = load i8, ptr %108, align 1, !tbaa !92, !range !93, !noundef !94
  %1463 = trunc i8 %1462 to i1
  br i1 %1463, label %1465, label %1464

1464:                                             ; preds = %1461
  store i32 80, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  br label %1741

1465:                                             ; preds = %1461
  %1466 = load ptr, ptr %109, align 8, !tbaa !5
  %1467 = invoke noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %1466)
          to label %1468 unwind label %1469

1468:                                             ; preds = %1465
  switch i32 %1467, label %1738 [
    i32 0, label %1473
    i32 1, label %1474
    i32 3, label %1632
    i32 2, label %1702
  ]

1469:                                             ; preds = %1465
  %1470 = landingpad { ptr, i32 }
          cleanup
  %1471 = extractvalue { ptr, i32 } %1470, 0
  store ptr %1471, ptr %11, align 8
  %1472 = extractvalue { ptr, i32 } %1470, 1
  store i32 %1472, ptr %12, align 4
  br label %1740

1473:                                             ; preds = %1468
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2264, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

1474:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #8
  store i8 1, ptr %111, align 1, !tbaa !92
  br label %1475

1475:                                             ; preds = %1630, %1474
  %1476 = load i8, ptr %111, align 1, !tbaa !92, !range !93, !noundef !94
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1479, label %1478

1478:                                             ; preds = %1475
  store i32 84, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #8
  br label %1631

1479:                                             ; preds = %1475
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #8
  %1480 = load ptr, ptr %109, align 8, !tbaa !5
  %1481 = invoke noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104) %1480)
          to label %1482 unwind label %1492

1482:                                             ; preds = %1479
  store ptr %1481, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  %1483 = load ptr, ptr %110, align 8, !tbaa !5
  %1484 = invoke noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104) %1483)
          to label %1485 unwind label %1496

1485:                                             ; preds = %1482
  store ptr %1484, ptr %113, align 8, !tbaa !5
  br label %1486

1486:                                             ; preds = %1626, %1485
  %1487 = load ptr, ptr %112, align 8, !tbaa !5
  %1488 = load ptr, ptr %113, align 8, !tbaa !5
  %1489 = load i8, ptr %111, align 1, !tbaa !92, !range !93, !noundef !94
  %1490 = trunc i8 %1489 to i1
  br i1 %1490, label %1500, label %1491

1491:                                             ; preds = %1486
  store i32 87, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  br label %1629

1492:                                             ; preds = %1479
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %11, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %12, align 4
  br label %1628

1496:                                             ; preds = %1609, %1592, %1562, %1516, %1482
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %11, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %12, align 4
  br label %1627

1500:                                             ; preds = %1486
  br label %1501

1501:                                             ; preds = %1500
  %1502 = load ptr, ptr %112, align 8, !tbaa !5
  %1503 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %1502, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 88, ptr %114) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %1504 unwind label %1517

1504:                                             ; preds = %1501
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %114, ptr noundef %115)
          to label %1505 unwind label %1521

1505:                                             ; preds = %1504
  %1506 = invoke noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %1503, ptr noundef nonnull align 8 dereferenceable(88) %114)
          to label %1507 unwind label %1525

1507:                                             ; preds = %1505
  %1508 = xor i1 %1506, true
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %114) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %114) #8
  br i1 %1508, label %1509, label %1544

1509:                                             ; preds = %1507
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %1510 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(8) %1510)
          to label %1511 unwind label %1531

1511:                                             ; preds = %1509
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %1512 = getelementptr inbounds %class.anon.174, ptr %118, i32 0, i32 0
  %1513 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1513, ptr %1512, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef %117)
          to label %1514 unwind label %1535

1514:                                             ; preds = %1511
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  %1515 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1515, ptr noundef @.str.16)
          to label %1516 unwind label %1540

1516:                                             ; preds = %1514
  invoke void @__cxa_throw(ptr %1515, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1496

1517:                                             ; preds = %1501
  %1518 = landingpad { ptr, i32 }
          cleanup
  %1519 = extractvalue { ptr, i32 } %1518, 0
  store ptr %1519, ptr %11, align 8
  %1520 = extractvalue { ptr, i32 } %1518, 1
  store i32 %1520, ptr %12, align 4
  br label %1530

1521:                                             ; preds = %1504
  %1522 = landingpad { ptr, i32 }
          cleanup
  %1523 = extractvalue { ptr, i32 } %1522, 0
  store ptr %1523, ptr %11, align 8
  %1524 = extractvalue { ptr, i32 } %1522, 1
  store i32 %1524, ptr %12, align 4
  br label %1529

1525:                                             ; preds = %1505
  %1526 = landingpad { ptr, i32 }
          cleanup
  %1527 = extractvalue { ptr, i32 } %1526, 0
  store ptr %1527, ptr %11, align 8
  %1528 = extractvalue { ptr, i32 } %1526, 1
  store i32 %1528, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %114) #8
  br label %1529

1529:                                             ; preds = %1525, %1521
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  br label %1530

1530:                                             ; preds = %1529, %1517
  call void @llvm.lifetime.end.p0(i64 88, ptr %114) #8
  br label %1627

1531:                                             ; preds = %1509
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %11, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %12, align 4
  br label %1539

1535:                                             ; preds = %1511
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %11, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  br label %1539

1539:                                             ; preds = %1535, %1531
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  br label %1627

1540:                                             ; preds = %1514
  %1541 = landingpad { ptr, i32 }
          cleanup
  %1542 = extractvalue { ptr, i32 } %1541, 0
  store ptr %1542, ptr %11, align 8
  %1543 = extractvalue { ptr, i32 } %1541, 1
  store i32 %1543, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1515) #8
  br label %1627

1544:                                             ; preds = %1507
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

1546:                                             ; preds = %1545
  br label %1547

1547:                                             ; preds = %1546
  %1548 = load ptr, ptr %113, align 8, !tbaa !5
  %1549 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %1548, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 88, ptr %119) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %1550 unwind label %1563

1550:                                             ; preds = %1547
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %119, ptr noundef %120)
          to label %1551 unwind label %1567

1551:                                             ; preds = %1550
  %1552 = invoke noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %1549, ptr noundef nonnull align 8 dereferenceable(88) %119)
          to label %1553 unwind label %1571

1553:                                             ; preds = %1551
  %1554 = xor i1 %1552, true
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %119) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %119) #8
  br i1 %1554, label %1555, label %1590

1555:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  %1556 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %1556)
          to label %1557 unwind label %1577

1557:                                             ; preds = %1555
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  %1558 = getelementptr inbounds %class.anon.175, ptr %123, i32 0, i32 0
  %1559 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1559, ptr %1558, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull align 8 dereferenceable(8) %123) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef %122)
          to label %1560 unwind label %1581

1560:                                             ; preds = %1557
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  %1561 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1561, ptr noundef @.str.16)
          to label %1562 unwind label %1586

1562:                                             ; preds = %1560
  invoke void @__cxa_throw(ptr %1561, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1496

1563:                                             ; preds = %1547
  %1564 = landingpad { ptr, i32 }
          cleanup
  %1565 = extractvalue { ptr, i32 } %1564, 0
  store ptr %1565, ptr %11, align 8
  %1566 = extractvalue { ptr, i32 } %1564, 1
  store i32 %1566, ptr %12, align 4
  br label %1576

1567:                                             ; preds = %1550
  %1568 = landingpad { ptr, i32 }
          cleanup
  %1569 = extractvalue { ptr, i32 } %1568, 0
  store ptr %1569, ptr %11, align 8
  %1570 = extractvalue { ptr, i32 } %1568, 1
  store i32 %1570, ptr %12, align 4
  br label %1575

1571:                                             ; preds = %1551
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %11, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %119) #8
  br label %1575

1575:                                             ; preds = %1571, %1567
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #8
  br label %1576

1576:                                             ; preds = %1575, %1563
  call void @llvm.lifetime.end.p0(i64 88, ptr %119) #8
  br label %1627

1577:                                             ; preds = %1555
  %1578 = landingpad { ptr, i32 }
          cleanup
  %1579 = extractvalue { ptr, i32 } %1578, 0
  store ptr %1579, ptr %11, align 8
  %1580 = extractvalue { ptr, i32 } %1578, 1
  store i32 %1580, ptr %12, align 4
  br label %1585

1581:                                             ; preds = %1557
  %1582 = landingpad { ptr, i32 }
          cleanup
  %1583 = extractvalue { ptr, i32 } %1582, 0
  store ptr %1583, ptr %11, align 8
  %1584 = extractvalue { ptr, i32 } %1582, 1
  store i32 %1584, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  br label %1585

1585:                                             ; preds = %1581, %1577
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1627

1586:                                             ; preds = %1560
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %11, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1561) #8
  br label %1627

1590:                                             ; preds = %1553
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

1592:                                             ; preds = %1591
  %1593 = load ptr, ptr %112, align 8, !tbaa !5
  %1594 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %1593, i32 0, i32 0
  %1595 = load ptr, ptr %113, align 8, !tbaa !5
  %1596 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %1595, i32 0, i32 0
  %1597 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(88) %1594, ptr noundef nonnull align 8 dereferenceable(88) %1596)
          to label %1598 unwind label %1496

1598:                                             ; preds = %1592
  br i1 %1597, label %1625, label %1599

1599:                                             ; preds = %1598
  br label %1600

1600:                                             ; preds = %1599
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  %1601 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %1601)
          to label %1602 unwind label %1610

1602:                                             ; preds = %1600
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #8
  %1603 = getelementptr inbounds %class.anon.176, ptr %126, i32 0, i32 0
  %1604 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1604, ptr %1603, align 8, !tbaa !5
  %1605 = getelementptr inbounds %class.anon.176, ptr %126, i32 0, i32 1
  %1606 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1606, ptr %1605, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 8 dereferenceable(16) %126) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %124, i32 noundef 0, ptr noundef %125)
          to label %1607 unwind label %1614

1607:                                             ; preds = %1602
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  %1608 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1608, ptr noundef @.str.19)
          to label %1609 unwind label %1619

1609:                                             ; preds = %1607
  invoke void @__cxa_throw(ptr %1608, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1496

1610:                                             ; preds = %1600
  %1611 = landingpad { ptr, i32 }
          cleanup
  %1612 = extractvalue { ptr, i32 } %1611, 0
  store ptr %1612, ptr %11, align 8
  %1613 = extractvalue { ptr, i32 } %1611, 1
  store i32 %1613, ptr %12, align 4
  br label %1618

1614:                                             ; preds = %1602
  %1615 = landingpad { ptr, i32 }
          cleanup
  %1616 = extractvalue { ptr, i32 } %1615, 0
  store ptr %1616, ptr %11, align 8
  %1617 = extractvalue { ptr, i32 } %1615, 1
  store i32 %1617, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  br label %1618

1618:                                             ; preds = %1614, %1610
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  br label %1627

1619:                                             ; preds = %1607
  %1620 = landingpad { ptr, i32 }
          cleanup
  %1621 = extractvalue { ptr, i32 } %1620, 0
  store ptr %1621, ptr %11, align 8
  %1622 = extractvalue { ptr, i32 } %1620, 1
  store i32 %1622, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1608) #8
  br label %1627

1623:                                             ; No predecessors!
  br label %1624

1624:                                             ; preds = %1623
  br label %1625

1625:                                             ; preds = %1624, %1598
  br label %1626

1626:                                             ; preds = %1625
  store i8 0, ptr %111, align 1, !tbaa !92
  br label %1486, !llvm.loop !115

1627:                                             ; preds = %1619, %1618, %1586, %1585, %1576, %1540, %1539, %1530, %1496
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  br label %1628

1628:                                             ; preds = %1627, %1492
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #8
  br label %1740

1629:                                             ; preds = %1491
  br label %1630

1630:                                             ; preds = %1629
  store i8 0, ptr %111, align 1, !tbaa !92
  br label %1475, !llvm.loop !116

1631:                                             ; preds = %1478
  br label %1738

1632:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #8
  store i8 1, ptr %127, align 1, !tbaa !92
  br label %1633

1633:                                             ; preds = %1700, %1632
  %1634 = load i8, ptr %127, align 1, !tbaa !92, !range !93, !noundef !94
  %1635 = trunc i8 %1634 to i1
  br i1 %1635, label %1637, label %1636

1636:                                             ; preds = %1633
  store i32 96, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #8
  br label %1701

1637:                                             ; preds = %1633
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  %1638 = load ptr, ptr %109, align 8, !tbaa !5
  %1639 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %1638)
          to label %1640 unwind label %1650

1640:                                             ; preds = %1637
  store ptr %1639, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1641 = load ptr, ptr %110, align 8, !tbaa !5
  %1642 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %1641)
          to label %1643 unwind label %1654

1643:                                             ; preds = %1640
  store ptr %1642, ptr %129, align 8, !tbaa !5
  br label %1644

1644:                                             ; preds = %1696, %1643
  %1645 = load ptr, ptr %128, align 8, !tbaa !5
  %1646 = load ptr, ptr %129, align 8, !tbaa !5
  %1647 = load i8, ptr %127, align 1, !tbaa !92, !range !93, !noundef !94
  %1648 = trunc i8 %1647 to i1
  br i1 %1648, label %1658, label %1649

1649:                                             ; preds = %1644
  store i32 99, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  br label %1699

1650:                                             ; preds = %1637
  %1651 = landingpad { ptr, i32 }
          cleanup
  %1652 = extractvalue { ptr, i32 } %1651, 0
  store ptr %1652, ptr %11, align 8
  %1653 = extractvalue { ptr, i32 } %1651, 1
  store i32 %1653, ptr %12, align 4
  br label %1698

1654:                                             ; preds = %1690, %1674, %1640
  %1655 = landingpad { ptr, i32 }
          cleanup
  %1656 = extractvalue { ptr, i32 } %1655, 0
  store ptr %1656, ptr %11, align 8
  %1657 = extractvalue { ptr, i32 } %1655, 1
  store i32 %1657, ptr %12, align 4
  br label %1697

1658:                                             ; preds = %1644
  %1659 = load ptr, ptr %128, align 8, !tbaa !5
  %1660 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %1659, i32 0, i32 1
  %1661 = load ptr, ptr %129, align 8, !tbaa !5
  %1662 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %1661, i32 0, i32 1
  %1663 = call noundef zeroext i1 @_ZStneIN3HIR30TypeData_ErasedType_AliasInnerES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %1660, ptr noundef nonnull align 8 dereferenceable(16) %1662) #8
  br i1 %1663, label %1664, label %1690

1664:                                             ; preds = %1658
  br label %1665

1665:                                             ; preds = %1664
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  %1666 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %1666)
          to label %1667 unwind label %1675

1667:                                             ; preds = %1665
  call void @llvm.lifetime.start.p0(i64 16, ptr %132) #8
  %1668 = getelementptr inbounds %class.anon.177, ptr %132, i32 0, i32 0
  %1669 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1669, ptr %1668, align 8, !tbaa !5
  %1670 = getelementptr inbounds %class.anon.177, ptr %132, i32 0, i32 1
  %1671 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1671, ptr %1670, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(16) %132) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %130, i32 noundef 0, ptr noundef %131)
          to label %1672 unwind label %1679

1672:                                             ; preds = %1667
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  %1673 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1673, ptr noundef @.str.19)
          to label %1674 unwind label %1684

1674:                                             ; preds = %1672
  invoke void @__cxa_throw(ptr %1673, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1654

1675:                                             ; preds = %1665
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %11, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %12, align 4
  br label %1683

1679:                                             ; preds = %1667
  %1680 = landingpad { ptr, i32 }
          cleanup
  %1681 = extractvalue { ptr, i32 } %1680, 0
  store ptr %1681, ptr %11, align 8
  %1682 = extractvalue { ptr, i32 } %1680, 1
  store i32 %1682, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #8
  br label %1683

1683:                                             ; preds = %1679, %1675
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1697

1684:                                             ; preds = %1672
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %11, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1673) #8
  br label %1697

1688:                                             ; No predecessors!
  br label %1689

1689:                                             ; preds = %1688
  br label %1690

1690:                                             ; preds = %1689, %1658
  %1691 = load ptr, ptr %128, align 8, !tbaa !5
  %1692 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %1691, i32 0, i32 0
  %1693 = load ptr, ptr %129, align 8, !tbaa !5
  %1694 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %1693, i32 0, i32 0
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(24) %1692, ptr noundef nonnull align 8 dereferenceable(24) %1694)
          to label %1695 unwind label %1654

1695:                                             ; preds = %1690
  br label %1696

1696:                                             ; preds = %1695
  store i8 0, ptr %127, align 1, !tbaa !92
  br label %1644, !llvm.loop !117

1697:                                             ; preds = %1684, %1683, %1654
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %1698

1698:                                             ; preds = %1697, %1650
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #8
  br label %1740

1699:                                             ; preds = %1649
  br label %1700

1700:                                             ; preds = %1699
  store i8 0, ptr %127, align 1, !tbaa !92
  br label %1633, !llvm.loop !118

1701:                                             ; preds = %1636
  br label %1738

1702:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #8
  store i8 1, ptr %133, align 1, !tbaa !92
  br label %1703

1703:                                             ; preds = %1736, %1702
  %1704 = load i8, ptr %133, align 1, !tbaa !92, !range !93, !noundef !94
  %1705 = trunc i8 %1704 to i1
  br i1 %1705, label %1707, label %1706

1706:                                             ; preds = %1703
  store i32 104, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #8
  br label %1737

1707:                                             ; preds = %1703
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  %1708 = load ptr, ptr %109, align 8, !tbaa !5
  %1709 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(104) %1708)
          to label %1710 unwind label %1720

1710:                                             ; preds = %1707
  store ptr %1709, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  %1711 = load ptr, ptr %110, align 8, !tbaa !5
  %1712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(104) %1711)
          to label %1713 unwind label %1724

1713:                                             ; preds = %1710
  store ptr %1712, ptr %135, align 8, !tbaa !5
  br label %1714

1714:                                             ; preds = %1733, %1713
  %1715 = load ptr, ptr %134, align 8, !tbaa !5
  %1716 = load ptr, ptr %135, align 8, !tbaa !5
  %1717 = load i8, ptr %133, align 1, !tbaa !92, !range !93, !noundef !94
  %1718 = trunc i8 %1717 to i1
  br i1 %1718, label %1728, label %1719

1719:                                             ; preds = %1714
  store i32 107, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  br label %1735

1720:                                             ; preds = %1707
  %1721 = landingpad { ptr, i32 }
          cleanup
  %1722 = extractvalue { ptr, i32 } %1721, 0
  store ptr %1722, ptr %11, align 8
  %1723 = extractvalue { ptr, i32 } %1721, 1
  store i32 %1723, ptr %12, align 4
  br label %1734

1724:                                             ; preds = %1728, %1710
  %1725 = landingpad { ptr, i32 }
          cleanup
  %1726 = extractvalue { ptr, i32 } %1725, 0
  store ptr %1726, ptr %11, align 8
  %1727 = extractvalue { ptr, i32 } %1725, 1
  store i32 %1727, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %1734

1728:                                             ; preds = %1714
  %1729 = load ptr, ptr %6, align 8, !tbaa !5
  %1730 = load ptr, ptr %134, align 8, !tbaa !5
  %1731 = load ptr, ptr %135, align 8, !tbaa !5
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1729, ptr noundef nonnull align 8 dereferenceable(8) %1730, ptr noundef nonnull align 8 dereferenceable(8) %1731)
          to label %1732 unwind label %1724

1732:                                             ; preds = %1728
  br label %1733

1733:                                             ; preds = %1732
  store i8 0, ptr %133, align 1, !tbaa !92
  br label %1714, !llvm.loop !119

1734:                                             ; preds = %1724, %1720
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #8
  br label %1740

1735:                                             ; preds = %1719
  br label %1736

1736:                                             ; preds = %1735
  store i8 0, ptr %133, align 1, !tbaa !92
  br label %1703, !llvm.loop !120

1737:                                             ; preds = %1706
  br label %1738

1738:                                             ; preds = %1737, %1701, %1631, %1468
  br label %1739

1739:                                             ; preds = %1738
  store i8 0, ptr %108, align 1, !tbaa !92
  br label %1461, !llvm.loop !121

1740:                                             ; preds = %1734, %1698, %1628, %1469
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #8
  br label %1745

1741:                                             ; preds = %1464
  br label %1742

1742:                                             ; preds = %1741
  store i8 0, ptr %108, align 1, !tbaa !92
  br label %1452, !llvm.loop !122

1743:                                             ; preds = %1455
  br label %1744

1744:                                             ; preds = %1743
  store i8 0, ptr %102, align 1, !tbaa !92
  br label %1401, !llvm.loop !123

1745:                                             ; preds = %1740, %1445, %1444, %1411
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %1746

1746:                                             ; preds = %1745, %1407
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %2568

1747:                                             ; preds = %1406
  br label %1748

1748:                                             ; preds = %1747
  store i8 0, ptr %102, align 1, !tbaa !92
  br label %1390, !llvm.loop !124

1749:                                             ; preds = %1393
  br label %2566

1750:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %136) #8
  store i8 1, ptr %136, align 1, !tbaa !92
  br label %1751

1751:                                             ; preds = %1968, %1750
  %1752 = load i8, ptr %136, align 1, !tbaa !92, !range !93, !noundef !94
  %1753 = trunc i8 %1752 to i1
  br i1 %1753, label %1755, label %1754

1754:                                             ; preds = %1751
  store i32 110, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #8
  br label %1969

1755:                                             ; preds = %1751
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #8
  %1756 = load ptr, ptr %53, align 8, !tbaa !5
  %1757 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1756)
          to label %1758 unwind label %1768

1758:                                             ; preds = %1755
  store ptr %1757, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #8
  %1759 = load ptr, ptr %54, align 8, !tbaa !5
  %1760 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1759)
          to label %1761 unwind label %1772

1761:                                             ; preds = %1758
  store ptr %1760, ptr %138, align 8, !tbaa !5
  br label %1762

1762:                                             ; preds = %1964, %1761
  %1763 = load ptr, ptr %137, align 8, !tbaa !5
  %1764 = load ptr, ptr %138, align 8, !tbaa !5
  %1765 = load i8, ptr %136, align 1, !tbaa !92, !range !93, !noundef !94
  %1766 = trunc i8 %1765 to i1
  br i1 %1766, label %1776, label %1767

1767:                                             ; preds = %1762
  store i32 113, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  br label %1967

1768:                                             ; preds = %1755
  %1769 = landingpad { ptr, i32 }
          cleanup
  %1770 = extractvalue { ptr, i32 } %1769, 0
  store ptr %1770, ptr %11, align 8
  %1771 = extractvalue { ptr, i32 } %1769, 1
  store i32 %1771, ptr %12, align 4
  br label %1966

1772:                                             ; preds = %1946, %1932, %1928, %1923, %1889, %1881, %1873, %1868, %1826, %1818, %1813, %1810, %1806, %1801, %1798, %1794, %1789, %1782, %1776, %1758
  %1773 = landingpad { ptr, i32 }
          cleanup
  %1774 = extractvalue { ptr, i32 } %1773, 0
  store ptr %1774, ptr %11, align 8
  %1775 = extractvalue { ptr, i32 } %1773, 1
  store i32 %1775, ptr %12, align 4
  br label %1965

1776:                                             ; preds = %1762
  %1777 = load ptr, ptr %6, align 8, !tbaa !5
  %1778 = load ptr, ptr %137, align 8, !tbaa !5
  %1779 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1778, i32 0, i32 0
  %1780 = load ptr, ptr %138, align 8, !tbaa !5
  %1781 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1780, i32 0, i32 0
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1777, ptr noundef nonnull align 8 dereferenceable(8) %1779, ptr noundef nonnull align 8 dereferenceable(8) %1781)
          to label %1782 unwind label %1772

1782:                                             ; preds = %1776
  %1783 = load ptr, ptr %137, align 8, !tbaa !5
  %1784 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1783, i32 0, i32 1
  %1785 = load ptr, ptr %138, align 8, !tbaa !5
  %1786 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1785, i32 0, i32 1
  %1787 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySizeneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %1784, ptr noundef nonnull align 8 dereferenceable(32) %1786)
          to label %1788 unwind label %1772

1788:                                             ; preds = %1782
  br i1 %1787, label %1789, label %1963

1789:                                             ; preds = %1788
  %1790 = load ptr, ptr %137, align 8, !tbaa !5
  %1791 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1790, i32 0, i32 1
  %1792 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1791)
          to label %1793 unwind label %1772

1793:                                             ; preds = %1789
  br i1 %1792, label %1794, label %1801

1794:                                             ; preds = %1793
  %1795 = load ptr, ptr %137, align 8, !tbaa !5
  %1796 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1795, i32 0, i32 1
  %1797 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1796)
          to label %1798 unwind label %1772

1798:                                             ; preds = %1794
  %1799 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGeneric8is_InferEv(ptr noundef nonnull align 8 dereferenceable(24) %1797)
          to label %1800 unwind label %1772

1800:                                             ; preds = %1798
  br i1 %1799, label %1813, label %1801

1801:                                             ; preds = %1800, %1793
  %1802 = load ptr, ptr %138, align 8, !tbaa !5
  %1803 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1802, i32 0, i32 1
  %1804 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1803)
          to label %1805 unwind label %1772

1805:                                             ; preds = %1801
  br i1 %1804, label %1806, label %1936

1806:                                             ; preds = %1805
  %1807 = load ptr, ptr %138, align 8, !tbaa !5
  %1808 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1807, i32 0, i32 1
  %1809 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1808)
          to label %1810 unwind label %1772

1810:                                             ; preds = %1806
  %1811 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGeneric8is_InferEv(ptr noundef nonnull align 8 dereferenceable(24) %1809)
          to label %1812 unwind label %1772

1812:                                             ; preds = %1810
  br i1 %1811, label %1813, label %1936

1813:                                             ; preds = %1812, %1800
  %1814 = load ptr, ptr %137, align 8, !tbaa !5
  %1815 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1814, i32 0, i32 1
  %1816 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1815)
          to label %1817 unwind label %1772

1817:                                             ; preds = %1813
  br i1 %1816, label %1868, label %1818

1818:                                             ; preds = %1817
  %1819 = load ptr, ptr %137, align 8, !tbaa !5
  %1820 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1819, i32 0, i32 1
  %1821 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1820)
          to label %1822 unwind label %1772

1822:                                             ; preds = %1818
  br i1 %1821, label %1823, label %1824

1823:                                             ; preds = %1822
  br label %1826

1824:                                             ; preds = %1822
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.21, i32 noundef 2289, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

1825:                                             ; No predecessors!
  br label %1826

1826:                                             ; preds = %1825, %1823
  %1827 = load ptr, ptr %138, align 8, !tbaa !5
  %1828 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1827, i32 0, i32 1
  %1829 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1828)
          to label %1830 unwind label %1772

1830:                                             ; preds = %1826
  br i1 %1829, label %1831, label %1832

1831:                                             ; preds = %1830
  br label %1834

1832:                                             ; preds = %1830
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.21, i32 noundef 2290, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

1833:                                             ; No predecessors!
  br label %1834

1834:                                             ; preds = %1833, %1831
  %1835 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %139) #8
  %1836 = load ptr, ptr %137, align 8, !tbaa !5
  %1837 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1836, i32 0, i32 1
  %1838 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1837)
          to label %1839 unwind label %1849

1839:                                             ; preds = %1834
  %1840 = load i64, ptr %1838, align 8, !tbaa !125
  invoke void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteral) align 8 %141, i64 noundef %1840)
          to label %1841 unwind label %1849

1841:                                             ; preds = %1839
  invoke void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef %141)
          to label %1842 unwind label %1853

1842:                                             ; preds = %1841
  invoke void @_ZN3HIR12ConstGenericC2ENS_17EncodedLiteralPtrE(ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef %140)
          to label %1843 unwind label %1857

1843:                                             ; preds = %1842
  %1844 = load ptr, ptr %138, align 8, !tbaa !5
  %1845 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1844, i32 0, i32 1
  %1846 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1845)
          to label %1847 unwind label %1861

1847:                                             ; preds = %1843
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1835, ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 8 dereferenceable(24) %1846)
          to label %1848 unwind label %1861

1848:                                             ; preds = %1847
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %139) #8
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %141) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %139) #8
  br label %1935

1849:                                             ; preds = %1839, %1834
  %1850 = landingpad { ptr, i32 }
          cleanup
  %1851 = extractvalue { ptr, i32 } %1850, 0
  store ptr %1851, ptr %11, align 8
  %1852 = extractvalue { ptr, i32 } %1850, 1
  store i32 %1852, ptr %12, align 4
  br label %1867

1853:                                             ; preds = %1841
  %1854 = landingpad { ptr, i32 }
          cleanup
  %1855 = extractvalue { ptr, i32 } %1854, 0
  store ptr %1855, ptr %11, align 8
  %1856 = extractvalue { ptr, i32 } %1854, 1
  store i32 %1856, ptr %12, align 4
  br label %1866

1857:                                             ; preds = %1842
  %1858 = landingpad { ptr, i32 }
          cleanup
  %1859 = extractvalue { ptr, i32 } %1858, 0
  store ptr %1859, ptr %11, align 8
  %1860 = extractvalue { ptr, i32 } %1858, 1
  store i32 %1860, ptr %12, align 4
  br label %1865

1861:                                             ; preds = %1847, %1843
  %1862 = landingpad { ptr, i32 }
          cleanup
  %1863 = extractvalue { ptr, i32 } %1862, 0
  store ptr %1863, ptr %11, align 8
  %1864 = extractvalue { ptr, i32 } %1862, 1
  store i32 %1864, ptr %12, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %139) #8
  br label %1865

1865:                                             ; preds = %1861, %1857
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br label %1866

1866:                                             ; preds = %1865, %1853
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %141) #8
  br label %1867

1867:                                             ; preds = %1866, %1849
  call void @llvm.lifetime.end.p0(i64 24, ptr %139) #8
  br label %1965

1868:                                             ; preds = %1817
  %1869 = load ptr, ptr %138, align 8, !tbaa !5
  %1870 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1869, i32 0, i32 1
  %1871 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1870)
          to label %1872 unwind label %1772

1872:                                             ; preds = %1868
  br i1 %1871, label %1923, label %1873

1873:                                             ; preds = %1872
  %1874 = load ptr, ptr %137, align 8, !tbaa !5
  %1875 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1874, i32 0, i32 1
  %1876 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1875)
          to label %1877 unwind label %1772

1877:                                             ; preds = %1873
  br i1 %1876, label %1878, label %1879

1878:                                             ; preds = %1877
  br label %1881

1879:                                             ; preds = %1877
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.21, i32 noundef 2294, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

1880:                                             ; No predecessors!
  br label %1881

1881:                                             ; preds = %1880, %1878
  %1882 = load ptr, ptr %138, align 8, !tbaa !5
  %1883 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1882, i32 0, i32 1
  %1884 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1883)
          to label %1885 unwind label %1772

1885:                                             ; preds = %1881
  br i1 %1884, label %1886, label %1887

1886:                                             ; preds = %1885
  br label %1889

1887:                                             ; preds = %1885
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.21, i32 noundef 2295, ptr noundef @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

1888:                                             ; No predecessors!
  br label %1889

1889:                                             ; preds = %1888, %1886
  %1890 = load ptr, ptr %6, align 8, !tbaa !5
  %1891 = load ptr, ptr %137, align 8, !tbaa !5
  %1892 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1891, i32 0, i32 1
  %1893 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1892)
          to label %1894 unwind label %1772

1894:                                             ; preds = %1889
  call void @llvm.lifetime.start.p0(i64 24, ptr %142) #8
  %1895 = load ptr, ptr %138, align 8, !tbaa !5
  %1896 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1895, i32 0, i32 1
  %1897 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1896)
          to label %1898 unwind label %1904

1898:                                             ; preds = %1894
  %1899 = load i64, ptr %1897, align 8, !tbaa !125
  invoke void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteral) align 8 %144, i64 noundef %1899)
          to label %1900 unwind label %1904

1900:                                             ; preds = %1898
  invoke void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef %144)
          to label %1901 unwind label %1908

1901:                                             ; preds = %1900
  invoke void @_ZN3HIR12ConstGenericC2ENS_17EncodedLiteralPtrE(ptr noundef nonnull align 8 dereferenceable(24) %142, ptr noundef %143)
          to label %1902 unwind label %1912

1902:                                             ; preds = %1901
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1890, ptr noundef nonnull align 8 dereferenceable(24) %1893, ptr noundef nonnull align 8 dereferenceable(24) %142)
          to label %1903 unwind label %1916

1903:                                             ; preds = %1902
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #8
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #8
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %142) #8
  br label %1934

1904:                                             ; preds = %1898, %1894
  %1905 = landingpad { ptr, i32 }
          cleanup
  %1906 = extractvalue { ptr, i32 } %1905, 0
  store ptr %1906, ptr %11, align 8
  %1907 = extractvalue { ptr, i32 } %1905, 1
  store i32 %1907, ptr %12, align 4
  br label %1922

1908:                                             ; preds = %1900
  %1909 = landingpad { ptr, i32 }
          cleanup
  %1910 = extractvalue { ptr, i32 } %1909, 0
  store ptr %1910, ptr %11, align 8
  %1911 = extractvalue { ptr, i32 } %1909, 1
  store i32 %1911, ptr %12, align 4
  br label %1921

1912:                                             ; preds = %1901
  %1913 = landingpad { ptr, i32 }
          cleanup
  %1914 = extractvalue { ptr, i32 } %1913, 0
  store ptr %1914, ptr %11, align 8
  %1915 = extractvalue { ptr, i32 } %1913, 1
  store i32 %1915, ptr %12, align 4
  br label %1920

1916:                                             ; preds = %1902
  %1917 = landingpad { ptr, i32 }
          cleanup
  %1918 = extractvalue { ptr, i32 } %1917, 0
  store ptr %1918, ptr %11, align 8
  %1919 = extractvalue { ptr, i32 } %1917, 1
  store i32 %1919, ptr %12, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #8
  br label %1920

1920:                                             ; preds = %1916, %1912
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #8
  br label %1921

1921:                                             ; preds = %1920, %1908
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #8
  br label %1922

1922:                                             ; preds = %1921, %1904
  call void @llvm.lifetime.end.p0(i64 24, ptr %142) #8
  br label %1965

1923:                                             ; preds = %1872
  %1924 = load ptr, ptr %6, align 8, !tbaa !5
  %1925 = load ptr, ptr %137, align 8, !tbaa !5
  %1926 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1925, i32 0, i32 1
  %1927 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1926)
          to label %1928 unwind label %1772

1928:                                             ; preds = %1923
  %1929 = load ptr, ptr %138, align 8, !tbaa !5
  %1930 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1929, i32 0, i32 1
  %1931 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %1930)
          to label %1932 unwind label %1772

1932:                                             ; preds = %1928
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1924, ptr noundef nonnull align 8 dereferenceable(24) %1927, ptr noundef nonnull align 8 dereferenceable(24) %1931)
          to label %1933 unwind label %1772

1933:                                             ; preds = %1932
  br label %1934

1934:                                             ; preds = %1933, %1903
  br label %1935

1935:                                             ; preds = %1934, %1848
  br label %1962

1936:                                             ; preds = %1812, %1805
  br label %1937

1937:                                             ; preds = %1936
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #8
  %1938 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %1938)
          to label %1939 unwind label %1947

1939:                                             ; preds = %1937
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #8
  %1940 = getelementptr inbounds %class.anon.188, ptr %147, i32 0, i32 0
  %1941 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1941, ptr %1940, align 8, !tbaa !5
  %1942 = getelementptr inbounds %class.anon.188, ptr %147, i32 0, i32 1
  %1943 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1943, ptr %1942, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(16) %147) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %145, i32 noundef 0, ptr noundef %146)
          to label %1944 unwind label %1951

1944:                                             ; preds = %1939
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  %1945 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1945, ptr noundef @.str.19)
          to label %1946 unwind label %1956

1946:                                             ; preds = %1944
  invoke void @__cxa_throw(ptr %1945, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %1772

1947:                                             ; preds = %1937
  %1948 = landingpad { ptr, i32 }
          cleanup
  %1949 = extractvalue { ptr, i32 } %1948, 0
  store ptr %1949, ptr %11, align 8
  %1950 = extractvalue { ptr, i32 } %1948, 1
  store i32 %1950, ptr %12, align 4
  br label %1955

1951:                                             ; preds = %1939
  %1952 = landingpad { ptr, i32 }
          cleanup
  %1953 = extractvalue { ptr, i32 } %1952, 0
  store ptr %1953, ptr %11, align 8
  %1954 = extractvalue { ptr, i32 } %1952, 1
  store i32 %1954, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  br label %1955

1955:                                             ; preds = %1951, %1947
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  br label %1965

1956:                                             ; preds = %1944
  %1957 = landingpad { ptr, i32 }
          cleanup
  %1958 = extractvalue { ptr, i32 } %1957, 0
  store ptr %1958, ptr %11, align 8
  %1959 = extractvalue { ptr, i32 } %1957, 1
  store i32 %1959, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1945) #8
  br label %1965

1960:                                             ; No predecessors!
  br label %1961

1961:                                             ; preds = %1960
  br label %1962

1962:                                             ; preds = %1961, %1935
  br label %1963

1963:                                             ; preds = %1962, %1788
  br label %1964

1964:                                             ; preds = %1963
  store i8 0, ptr %136, align 1, !tbaa !92
  br label %1762, !llvm.loop !126

1965:                                             ; preds = %1956, %1955, %1922, %1867, %1772
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  br label %1966

1966:                                             ; preds = %1965, %1768
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #8
  br label %2568

1967:                                             ; preds = %1767
  br label %1968

1968:                                             ; preds = %1967
  store i8 0, ptr %136, align 1, !tbaa !92
  br label %1751, !llvm.loop !127

1969:                                             ; preds = %1754
  br label %2566

1970:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #8
  store i8 1, ptr %148, align 1, !tbaa !92
  br label %1971

1971:                                             ; preds = %2006, %1970
  %1972 = load i8, ptr %148, align 1, !tbaa !92, !range !93, !noundef !94
  %1973 = trunc i8 %1972 to i1
  br i1 %1973, label %1975, label %1974

1974:                                             ; preds = %1971
  store i32 118, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #8
  br label %2007

1975:                                             ; preds = %1971
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #8
  %1976 = load ptr, ptr %53, align 8, !tbaa !5
  %1977 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1976)
          to label %1978 unwind label %1988

1978:                                             ; preds = %1975
  store ptr %1977, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #8
  %1979 = load ptr, ptr %54, align 8, !tbaa !5
  %1980 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1979)
          to label %1981 unwind label %1992

1981:                                             ; preds = %1978
  store ptr %1980, ptr %150, align 8, !tbaa !5
  br label %1982

1982:                                             ; preds = %2003, %1981
  %1983 = load ptr, ptr %149, align 8, !tbaa !5
  %1984 = load ptr, ptr %150, align 8, !tbaa !5
  %1985 = load i8, ptr %148, align 1, !tbaa !92, !range !93, !noundef !94
  %1986 = trunc i8 %1985 to i1
  br i1 %1986, label %1996, label %1987

1987:                                             ; preds = %1982
  store i32 121, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  br label %2005

1988:                                             ; preds = %1975
  %1989 = landingpad { ptr, i32 }
          cleanup
  %1990 = extractvalue { ptr, i32 } %1989, 0
  store ptr %1990, ptr %11, align 8
  %1991 = extractvalue { ptr, i32 } %1989, 1
  store i32 %1991, ptr %12, align 4
  br label %2004

1992:                                             ; preds = %1996, %1978
  %1993 = landingpad { ptr, i32 }
          cleanup
  %1994 = extractvalue { ptr, i32 } %1993, 0
  store ptr %1994, ptr %11, align 8
  %1995 = extractvalue { ptr, i32 } %1993, 1
  store i32 %1995, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #8
  br label %2004

1996:                                             ; preds = %1982
  %1997 = load ptr, ptr %6, align 8, !tbaa !5
  %1998 = load ptr, ptr %149, align 8, !tbaa !5
  %1999 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %1998, i32 0, i32 0
  %2000 = load ptr, ptr %150, align 8, !tbaa !5
  %2001 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %2000, i32 0, i32 0
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %1997, ptr noundef nonnull align 8 dereferenceable(8) %1999, ptr noundef nonnull align 8 dereferenceable(8) %2001)
          to label %2002 unwind label %1992

2002:                                             ; preds = %1996
  br label %2003

2003:                                             ; preds = %2002
  store i8 0, ptr %148, align 1, !tbaa !92
  br label %1982, !llvm.loop !128

2004:                                             ; preds = %1992, %1988
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #8
  br label %2568

2005:                                             ; preds = %1987
  br label %2006

2006:                                             ; preds = %2005
  store i8 0, ptr %148, align 1, !tbaa !92
  br label %1971, !llvm.loop !129

2007:                                             ; preds = %1974
  br label %2566

2008:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %151) #8
  store i8 1, ptr %151, align 1, !tbaa !92
  br label %2009

2009:                                             ; preds = %2097, %2008
  %2010 = load i8, ptr %151, align 1, !tbaa !92, !range !93, !noundef !94
  %2011 = trunc i8 %2010 to i1
  br i1 %2011, label %2013, label %2012

2012:                                             ; preds = %2009
  store i32 124, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #8
  br label %2098

2013:                                             ; preds = %2009
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #8
  %2014 = load ptr, ptr %53, align 8, !tbaa !5
  %2015 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2014)
          to label %2016 unwind label %2026

2016:                                             ; preds = %2013
  store ptr %2015, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #8
  %2017 = load ptr, ptr %54, align 8, !tbaa !5
  %2018 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2017)
          to label %2019 unwind label %2030

2019:                                             ; preds = %2016
  store ptr %2018, ptr %153, align 8, !tbaa !5
  br label %2020

2020:                                             ; preds = %2093, %2019
  %2021 = load ptr, ptr %152, align 8, !tbaa !5
  %2022 = load ptr, ptr %153, align 8, !tbaa !5
  %2023 = load i8, ptr %151, align 1, !tbaa !92, !range !93, !noundef !94
  %2024 = trunc i8 %2023 to i1
  br i1 %2024, label %2034, label %2025

2025:                                             ; preds = %2020
  store i32 127, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #8
  br label %2096

2026:                                             ; preds = %2013
  %2027 = landingpad { ptr, i32 }
          cleanup
  %2028 = extractvalue { ptr, i32 } %2027, 0
  store ptr %2028, ptr %11, align 8
  %2029 = extractvalue { ptr, i32 } %2027, 1
  store i32 %2029, ptr %12, align 4
  br label %2095

2030:                                             ; preds = %2050, %2016
  %2031 = landingpad { ptr, i32 }
          cleanup
  %2032 = extractvalue { ptr, i32 } %2031, 0
  store ptr %2032, ptr %11, align 8
  %2033 = extractvalue { ptr, i32 } %2031, 1
  store i32 %2033, ptr %12, align 4
  br label %2094

2034:                                             ; preds = %2020
  %2035 = load ptr, ptr %152, align 8, !tbaa !5
  %2036 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2035) #8
  %2037 = load ptr, ptr %153, align 8, !tbaa !5
  %2038 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2037) #8
  %2039 = icmp ne i64 %2036, %2038
  br i1 %2039, label %2040, label %2066

2040:                                             ; preds = %2034
  br label %2041

2041:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #8
  %2042 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) %2042)
          to label %2043 unwind label %2051

2043:                                             ; preds = %2041
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #8
  %2044 = getelementptr inbounds %class.anon.189, ptr %156, i32 0, i32 0
  %2045 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2045, ptr %2044, align 8, !tbaa !5
  %2046 = getelementptr inbounds %class.anon.189, ptr %156, i32 0, i32 1
  %2047 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2047, ptr %2046, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(16) %156) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %154, i32 noundef 0, ptr noundef %155)
          to label %2048 unwind label %2055

2048:                                             ; preds = %2043
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #8
  %2049 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2049, ptr noundef @.str.19)
          to label %2050 unwind label %2060

2050:                                             ; preds = %2048
  invoke void @__cxa_throw(ptr %2049, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2030

2051:                                             ; preds = %2041
  %2052 = landingpad { ptr, i32 }
          cleanup
  %2053 = extractvalue { ptr, i32 } %2052, 0
  store ptr %2053, ptr %11, align 8
  %2054 = extractvalue { ptr, i32 } %2052, 1
  store i32 %2054, ptr %12, align 4
  br label %2059

2055:                                             ; preds = %2043
  %2056 = landingpad { ptr, i32 }
          cleanup
  %2057 = extractvalue { ptr, i32 } %2056, 0
  store ptr %2057, ptr %11, align 8
  %2058 = extractvalue { ptr, i32 } %2056, 1
  store i32 %2058, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  br label %2059

2059:                                             ; preds = %2055, %2051
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #8
  br label %2094

2060:                                             ; preds = %2048
  %2061 = landingpad { ptr, i32 }
          cleanup
  %2062 = extractvalue { ptr, i32 } %2061, 0
  store ptr %2062, ptr %11, align 8
  %2063 = extractvalue { ptr, i32 } %2061, 1
  store i32 %2063, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2049) #8
  br label %2094

2064:                                             ; No predecessors!
  br label %2065

2065:                                             ; preds = %2064
  br label %2066

2066:                                             ; preds = %2065, %2034
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #8
  store i32 0, ptr %157, align 4, !tbaa !82
  br label %2067

2067:                                             ; preds = %2085, %2066
  %2068 = load i32, ptr %157, align 4, !tbaa !82
  %2069 = zext i32 %2068 to i64
  %2070 = load ptr, ptr %152, align 8, !tbaa !5
  %2071 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2070) #8
  %2072 = icmp ult i64 %2069, %2071
  br i1 %2072, label %2074, label %2073

2073:                                             ; preds = %2067
  store i32 132, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #8
  br label %2092

2074:                                             ; preds = %2067
  %2075 = load ptr, ptr %6, align 8, !tbaa !5
  %2076 = load ptr, ptr %152, align 8, !tbaa !5
  %2077 = load i32, ptr %157, align 4, !tbaa !82
  %2078 = zext i32 %2077 to i64
  %2079 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2076, i64 noundef %2078) #8
  %2080 = load ptr, ptr %153, align 8, !tbaa !5
  %2081 = load i32, ptr %157, align 4, !tbaa !82
  %2082 = zext i32 %2081 to i64
  %2083 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2080, i64 noundef %2082) #8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %2075, ptr noundef nonnull align 8 dereferenceable(8) %2079, ptr noundef nonnull align 8 dereferenceable(8) %2083)
          to label %2084 unwind label %2088

2084:                                             ; preds = %2074
  br label %2085

2085:                                             ; preds = %2084
  %2086 = load i32, ptr %157, align 4, !tbaa !82
  %2087 = add i32 %2086, 1
  store i32 %2087, ptr %157, align 4, !tbaa !82
  br label %2067, !llvm.loop !130

2088:                                             ; preds = %2074
  %2089 = landingpad { ptr, i32 }
          cleanup
  %2090 = extractvalue { ptr, i32 } %2089, 0
  store ptr %2090, ptr %11, align 8
  %2091 = extractvalue { ptr, i32 } %2089, 1
  store i32 %2091, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #8
  br label %2094

2092:                                             ; preds = %2073
  br label %2093

2093:                                             ; preds = %2092
  store i8 0, ptr %151, align 1, !tbaa !92
  br label %2020, !llvm.loop !131

2094:                                             ; preds = %2088, %2060, %2059, %2030
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #8
  br label %2095

2095:                                             ; preds = %2094, %2026
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #8
  br label %2568

2096:                                             ; preds = %2025
  br label %2097

2097:                                             ; preds = %2096
  store i8 0, ptr %151, align 1, !tbaa !92
  br label %2009, !llvm.loop !132

2098:                                             ; preds = %2012
  br label %2566

2099:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %158) #8
  store i8 1, ptr %158, align 1, !tbaa !92
  br label %2100

2100:                                             ; preds = %2170, %2099
  %2101 = load i8, ptr %158, align 1, !tbaa !92, !range !93, !noundef !94
  %2102 = trunc i8 %2101 to i1
  br i1 %2102, label %2104, label %2103

2103:                                             ; preds = %2100
  store i32 135, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #8
  br label %2171

2104:                                             ; preds = %2100
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #8
  %2105 = load ptr, ptr %53, align 8, !tbaa !5
  %2106 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %2105)
          to label %2107 unwind label %2117

2107:                                             ; preds = %2104
  store ptr %2106, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #8
  %2108 = load ptr, ptr %54, align 8, !tbaa !5
  %2109 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %2108)
          to label %2110 unwind label %2121

2110:                                             ; preds = %2107
  store ptr %2109, ptr %160, align 8, !tbaa !5
  br label %2111

2111:                                             ; preds = %2166, %2110
  %2112 = load ptr, ptr %159, align 8, !tbaa !5
  %2113 = load ptr, ptr %160, align 8, !tbaa !5
  %2114 = load i8, ptr %158, align 1, !tbaa !92, !range !93, !noundef !94
  %2115 = trunc i8 %2114 to i1
  br i1 %2115, label %2125, label %2116

2116:                                             ; preds = %2111
  store i32 138, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #8
  br label %2169

2117:                                             ; preds = %2104
  %2118 = landingpad { ptr, i32 }
          cleanup
  %2119 = extractvalue { ptr, i32 } %2118, 0
  store ptr %2119, ptr %11, align 8
  %2120 = extractvalue { ptr, i32 } %2118, 1
  store i32 %2120, ptr %12, align 4
  br label %2168

2121:                                             ; preds = %2159, %2143, %2107
  %2122 = landingpad { ptr, i32 }
          cleanup
  %2123 = extractvalue { ptr, i32 } %2122, 0
  store ptr %2123, ptr %11, align 8
  %2124 = extractvalue { ptr, i32 } %2122, 1
  store i32 %2124, ptr %12, align 4
  br label %2167

2125:                                             ; preds = %2111
  %2126 = load ptr, ptr %159, align 8, !tbaa !5
  %2127 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2126, i32 0, i32 1
  %2128 = load i32, ptr %2127, align 4, !tbaa !133
  %2129 = load ptr, ptr %160, align 8, !tbaa !5
  %2130 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2129, i32 0, i32 1
  %2131 = load i32, ptr %2130, align 4, !tbaa !133
  %2132 = icmp ne i32 %2128, %2131
  br i1 %2132, label %2133, label %2159

2133:                                             ; preds = %2125
  br label %2134

2134:                                             ; preds = %2133
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #8
  %2135 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(8) %2135)
          to label %2136 unwind label %2144

2136:                                             ; preds = %2134
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #8
  %2137 = getelementptr inbounds %class.anon.190, ptr %163, i32 0, i32 0
  %2138 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2138, ptr %2137, align 8, !tbaa !5
  %2139 = getelementptr inbounds %class.anon.190, ptr %163, i32 0, i32 1
  %2140 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2140, ptr %2139, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 8 dereferenceable(16) %163) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %161, i32 noundef 0, ptr noundef %162)
          to label %2141 unwind label %2148

2141:                                             ; preds = %2136
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  %2142 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2142, ptr noundef @.str.19)
          to label %2143 unwind label %2153

2143:                                             ; preds = %2141
  invoke void @__cxa_throw(ptr %2142, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2121

2144:                                             ; preds = %2134
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %11, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %12, align 4
  br label %2152

2148:                                             ; preds = %2136
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %11, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #8
  br label %2152

2152:                                             ; preds = %2148, %2144
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  br label %2167

2153:                                             ; preds = %2141
  %2154 = landingpad { ptr, i32 }
          cleanup
  %2155 = extractvalue { ptr, i32 } %2154, 0
  store ptr %2155, ptr %11, align 8
  %2156 = extractvalue { ptr, i32 } %2154, 1
  store i32 %2156, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2142) #8
  br label %2167

2157:                                             ; No predecessors!
  br label %2158

2158:                                             ; preds = %2157
  br label %2159

2159:                                             ; preds = %2158, %2125
  %2160 = load ptr, ptr %6, align 8, !tbaa !5
  %2161 = load ptr, ptr %159, align 8, !tbaa !5
  %2162 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2161, i32 0, i32 2
  %2163 = load ptr, ptr %160, align 8, !tbaa !5
  %2164 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2163, i32 0, i32 2
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %2160, ptr noundef nonnull align 8 dereferenceable(8) %2162, ptr noundef nonnull align 8 dereferenceable(8) %2164)
          to label %2165 unwind label %2121

2165:                                             ; preds = %2159
  br label %2166

2166:                                             ; preds = %2165
  store i8 0, ptr %158, align 1, !tbaa !92
  br label %2111, !llvm.loop !138

2167:                                             ; preds = %2153, %2152, %2121
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  br label %2168

2168:                                             ; preds = %2167, %2117
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #8
  br label %2568

2169:                                             ; preds = %2116
  br label %2170

2170:                                             ; preds = %2169
  store i8 0, ptr %158, align 1, !tbaa !92
  br label %2100, !llvm.loop !139

2171:                                             ; preds = %2103
  br label %2566

2172:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #8
  store i8 1, ptr %164, align 1, !tbaa !92
  br label %2173

2173:                                             ; preds = %2243, %2172
  %2174 = load i8, ptr %164, align 1, !tbaa !92, !range !93, !noundef !94
  %2175 = trunc i8 %2174 to i1
  br i1 %2175, label %2177, label %2176

2176:                                             ; preds = %2173
  store i32 143, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #8
  br label %2244

2177:                                             ; preds = %2173
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #8
  %2178 = load ptr, ptr %53, align 8, !tbaa !5
  %2179 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2178)
          to label %2180 unwind label %2190

2180:                                             ; preds = %2177
  store ptr %2179, ptr %165, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #8
  %2181 = load ptr, ptr %54, align 8, !tbaa !5
  %2182 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2181)
          to label %2183 unwind label %2194

2183:                                             ; preds = %2180
  store ptr %2182, ptr %166, align 8, !tbaa !5
  br label %2184

2184:                                             ; preds = %2239, %2183
  %2185 = load ptr, ptr %165, align 8, !tbaa !5
  %2186 = load ptr, ptr %166, align 8, !tbaa !5
  %2187 = load i8, ptr %164, align 1, !tbaa !92, !range !93, !noundef !94
  %2188 = trunc i8 %2187 to i1
  br i1 %2188, label %2198, label %2189

2189:                                             ; preds = %2184
  store i32 146, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  br label %2242

2190:                                             ; preds = %2177
  %2191 = landingpad { ptr, i32 }
          cleanup
  %2192 = extractvalue { ptr, i32 } %2191, 0
  store ptr %2192, ptr %11, align 8
  %2193 = extractvalue { ptr, i32 } %2191, 1
  store i32 %2193, ptr %12, align 4
  br label %2241

2194:                                             ; preds = %2232, %2216, %2180
  %2195 = landingpad { ptr, i32 }
          cleanup
  %2196 = extractvalue { ptr, i32 } %2195, 0
  store ptr %2196, ptr %11, align 8
  %2197 = extractvalue { ptr, i32 } %2195, 1
  store i32 %2197, ptr %12, align 4
  br label %2240

2198:                                             ; preds = %2184
  %2199 = load ptr, ptr %165, align 8, !tbaa !5
  %2200 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2199, i32 0, i32 0
  %2201 = load i32, ptr %2200, align 8, !tbaa !140
  %2202 = load ptr, ptr %166, align 8, !tbaa !5
  %2203 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2202, i32 0, i32 0
  %2204 = load i32, ptr %2203, align 8, !tbaa !140
  %2205 = icmp ne i32 %2201, %2204
  br i1 %2205, label %2206, label %2232

2206:                                             ; preds = %2198
  br label %2207

2207:                                             ; preds = %2206
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #8
  %2208 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %2208)
          to label %2209 unwind label %2217

2209:                                             ; preds = %2207
  call void @llvm.lifetime.start.p0(i64 16, ptr %169) #8
  %2210 = getelementptr inbounds %class.anon.191, ptr %169, i32 0, i32 0
  %2211 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2211, ptr %2210, align 8, !tbaa !5
  %2212 = getelementptr inbounds %class.anon.191, ptr %169, i32 0, i32 1
  %2213 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2213, ptr %2212, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef nonnull align 8 dereferenceable(16) %169) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %167, i32 noundef 0, ptr noundef %168)
          to label %2214 unwind label %2221

2214:                                             ; preds = %2209
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  %2215 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2215, ptr noundef @.str.19)
          to label %2216 unwind label %2226

2216:                                             ; preds = %2214
  invoke void @__cxa_throw(ptr %2215, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2194

2217:                                             ; preds = %2207
  %2218 = landingpad { ptr, i32 }
          cleanup
  %2219 = extractvalue { ptr, i32 } %2218, 0
  store ptr %2219, ptr %11, align 8
  %2220 = extractvalue { ptr, i32 } %2218, 1
  store i32 %2220, ptr %12, align 4
  br label %2225

2221:                                             ; preds = %2209
  %2222 = landingpad { ptr, i32 }
          cleanup
  %2223 = extractvalue { ptr, i32 } %2222, 0
  store ptr %2223, ptr %11, align 8
  %2224 = extractvalue { ptr, i32 } %2222, 1
  store i32 %2224, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  br label %2225

2225:                                             ; preds = %2221, %2217
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  br label %2240

2226:                                             ; preds = %2214
  %2227 = landingpad { ptr, i32 }
          cleanup
  %2228 = extractvalue { ptr, i32 } %2227, 0
  store ptr %2228, ptr %11, align 8
  %2229 = extractvalue { ptr, i32 } %2227, 1
  store i32 %2229, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2215) #8
  br label %2240

2230:                                             ; No predecessors!
  br label %2231

2231:                                             ; preds = %2230
  br label %2232

2232:                                             ; preds = %2231, %2198
  %2233 = load ptr, ptr %6, align 8, !tbaa !5
  %2234 = load ptr, ptr %165, align 8, !tbaa !5
  %2235 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2234, i32 0, i32 1
  %2236 = load ptr, ptr %166, align 8, !tbaa !5
  %2237 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2236, i32 0, i32 1
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %2233, ptr noundef nonnull align 8 dereferenceable(8) %2235, ptr noundef nonnull align 8 dereferenceable(8) %2237)
          to label %2238 unwind label %2194

2238:                                             ; preds = %2232
  br label %2239

2239:                                             ; preds = %2238
  store i8 0, ptr %164, align 1, !tbaa !92
  br label %2184, !llvm.loop !142

2240:                                             ; preds = %2226, %2225, %2194
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  br label %2241

2241:                                             ; preds = %2240, %2190
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #8
  br label %2568

2242:                                             ; preds = %2189
  br label %2243

2243:                                             ; preds = %2242
  store i8 0, ptr %164, align 1, !tbaa !92
  br label %2173, !llvm.loop !143

2244:                                             ; preds = %2176
  br label %2566

2245:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #8
  store i8 1, ptr %170, align 1, !tbaa !92
  br label %2246

2246:                                             ; preds = %2309, %2245
  %2247 = load i8, ptr %170, align 1, !tbaa !92, !range !93, !noundef !94
  %2248 = trunc i8 %2247 to i1
  br i1 %2248, label %2250, label %2249

2249:                                             ; preds = %2246
  store i32 151, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #8
  br label %2310

2250:                                             ; preds = %2246
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #8
  %2251 = load ptr, ptr %53, align 8, !tbaa !5
  %2252 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2251)
          to label %2253 unwind label %2263

2253:                                             ; preds = %2250
  store ptr %2252, ptr %171, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #8
  %2254 = load ptr, ptr %54, align 8, !tbaa !5
  %2255 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2254)
          to label %2256 unwind label %2267

2256:                                             ; preds = %2253
  store ptr %2255, ptr %172, align 8, !tbaa !5
  br label %2257

2257:                                             ; preds = %2305, %2256
  %2258 = load ptr, ptr %171, align 8, !tbaa !5
  %2259 = load ptr, ptr %172, align 8, !tbaa !5
  %2260 = load i8, ptr %170, align 1, !tbaa !92, !range !93, !noundef !94
  %2261 = trunc i8 %2260 to i1
  br i1 %2261, label %2271, label %2262

2262:                                             ; preds = %2257
  store i32 154, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #8
  br label %2308

2263:                                             ; preds = %2250
  %2264 = landingpad { ptr, i32 }
          cleanup
  %2265 = extractvalue { ptr, i32 } %2264, 0
  store ptr %2265, ptr %11, align 8
  %2266 = extractvalue { ptr, i32 } %2264, 1
  store i32 %2266, ptr %12, align 4
  br label %2307

2267:                                             ; preds = %2288, %2271, %2253
  %2268 = landingpad { ptr, i32 }
          cleanup
  %2269 = extractvalue { ptr, i32 } %2268, 0
  store ptr %2269, ptr %11, align 8
  %2270 = extractvalue { ptr, i32 } %2268, 1
  store i32 %2270, ptr %12, align 4
  br label %2306

2271:                                             ; preds = %2257
  %2272 = load ptr, ptr %171, align 8, !tbaa !5
  %2273 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2272, i32 0, i32 0
  %2274 = load ptr, ptr %172, align 8, !tbaa !5
  %2275 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2274, i32 0, i32 0
  %2276 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(88) %2273, ptr noundef nonnull align 8 dereferenceable(88) %2275)
          to label %2277 unwind label %2267

2277:                                             ; preds = %2271
  br i1 %2276, label %2304, label %2278

2278:                                             ; preds = %2277
  br label %2279

2279:                                             ; preds = %2278
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #8
  %2280 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(8) %2280)
          to label %2281 unwind label %2289

2281:                                             ; preds = %2279
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #8
  %2282 = getelementptr inbounds %class.anon.192, ptr %175, i32 0, i32 0
  %2283 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2283, ptr %2282, align 8, !tbaa !5
  %2284 = getelementptr inbounds %class.anon.192, ptr %175, i32 0, i32 1
  %2285 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2285, ptr %2284, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %173, i32 noundef 0, ptr noundef %174)
          to label %2286 unwind label %2293

2286:                                             ; preds = %2281
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #8
  %2287 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2287, ptr noundef @.str.19)
          to label %2288 unwind label %2298

2288:                                             ; preds = %2286
  invoke void @__cxa_throw(ptr %2287, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2267

2289:                                             ; preds = %2279
  %2290 = landingpad { ptr, i32 }
          cleanup
  %2291 = extractvalue { ptr, i32 } %2290, 0
  store ptr %2291, ptr %11, align 8
  %2292 = extractvalue { ptr, i32 } %2290, 1
  store i32 %2292, ptr %12, align 4
  br label %2297

2293:                                             ; preds = %2281
  %2294 = landingpad { ptr, i32 }
          cleanup
  %2295 = extractvalue { ptr, i32 } %2294, 0
  store ptr %2295, ptr %11, align 8
  %2296 = extractvalue { ptr, i32 } %2294, 1
  store i32 %2296, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  br label %2297

2297:                                             ; preds = %2293, %2289
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #8
  br label %2306

2298:                                             ; preds = %2286
  %2299 = landingpad { ptr, i32 }
          cleanup
  %2300 = extractvalue { ptr, i32 } %2299, 0
  store ptr %2300, ptr %11, align 8
  %2301 = extractvalue { ptr, i32 } %2299, 1
  store i32 %2301, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2287) #8
  br label %2306

2302:                                             ; No predecessors!
  br label %2303

2303:                                             ; preds = %2302
  br label %2304

2304:                                             ; preds = %2303, %2277
  br label %2305

2305:                                             ; preds = %2304
  store i8 0, ptr %170, align 1, !tbaa !92
  br label %2257, !llvm.loop !144

2306:                                             ; preds = %2298, %2297, %2267
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #8
  br label %2307

2307:                                             ; preds = %2306, %2263
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #8
  br label %2568

2308:                                             ; preds = %2262
  br label %2309

2309:                                             ; preds = %2308
  store i8 0, ptr %170, align 1, !tbaa !92
  br label %2246, !llvm.loop !145

2310:                                             ; preds = %2249
  br label %2566

2311:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #8
  store i8 1, ptr %176, align 1, !tbaa !92
  br label %2312

2312:                                             ; preds = %2430, %2311
  %2313 = load i8, ptr %176, align 1, !tbaa !92, !range !93, !noundef !94
  %2314 = trunc i8 %2313 to i1
  br i1 %2314, label %2316, label %2315

2315:                                             ; preds = %2312
  store i32 159, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #8
  br label %2431

2316:                                             ; preds = %2312
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #8
  %2317 = load ptr, ptr %53, align 8, !tbaa !5
  %2318 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2317)
          to label %2319 unwind label %2329

2319:                                             ; preds = %2316
  store ptr %2318, ptr %177, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #8
  %2320 = load ptr, ptr %54, align 8, !tbaa !5
  %2321 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2320)
          to label %2322 unwind label %2333

2322:                                             ; preds = %2319
  store ptr %2321, ptr %178, align 8, !tbaa !5
  br label %2323

2323:                                             ; preds = %2426, %2322
  %2324 = load ptr, ptr %177, align 8, !tbaa !5
  %2325 = load ptr, ptr %178, align 8, !tbaa !5
  %2326 = load i8, ptr %176, align 1, !tbaa !92, !range !93, !noundef !94
  %2327 = trunc i8 %2326 to i1
  br i1 %2327, label %2337, label %2328

2328:                                             ; preds = %2323
  store i32 162, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #8
  br label %2429

2329:                                             ; preds = %2316
  %2330 = landingpad { ptr, i32 }
          cleanup
  %2331 = extractvalue { ptr, i32 } %2330, 0
  store ptr %2331, ptr %11, align 8
  %2332 = extractvalue { ptr, i32 } %2330, 1
  store i32 %2332, ptr %12, align 4
  br label %2428

2333:                                             ; preds = %2390, %2374, %2349, %2319
  %2334 = landingpad { ptr, i32 }
          cleanup
  %2335 = extractvalue { ptr, i32 } %2334, 0
  store ptr %2335, ptr %11, align 8
  %2336 = extractvalue { ptr, i32 } %2334, 1
  store i32 %2336, ptr %12, align 4
  br label %2427

2337:                                             ; preds = %2323
  %2338 = load ptr, ptr %177, align 8, !tbaa !5
  %2339 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2338, i32 0, i32 1
  %2340 = load i8, ptr %2339, align 8, !tbaa !146, !range !93, !noundef !94
  %2341 = trunc i8 %2340 to i1
  %2342 = zext i1 %2341 to i32
  %2343 = load ptr, ptr %178, align 8, !tbaa !5
  %2344 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2343, i32 0, i32 1
  %2345 = load i8, ptr %2344, align 8, !tbaa !146, !range !93, !noundef !94
  %2346 = trunc i8 %2345 to i1
  %2347 = zext i1 %2346 to i32
  %2348 = icmp ne i32 %2342, %2347
  br i1 %2348, label %2364, label %2349

2349:                                             ; preds = %2337
  %2350 = load ptr, ptr %177, align 8, !tbaa !5
  %2351 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2350, i32 0, i32 3
  %2352 = load ptr, ptr %178, align 8, !tbaa !5
  %2353 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2352, i32 0, i32 3
  %2354 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %2351, ptr noundef nonnull align 8 dereferenceable(8) %2353)
          to label %2355 unwind label %2333

2355:                                             ; preds = %2349
  br i1 %2354, label %2364, label %2356

2356:                                             ; preds = %2355
  %2357 = load ptr, ptr %177, align 8, !tbaa !5
  %2358 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2357, i32 0, i32 5
  %2359 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2358) #8
  %2360 = load ptr, ptr %178, align 8, !tbaa !5
  %2361 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2360, i32 0, i32 5
  %2362 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2361) #8
  %2363 = icmp ne i64 %2359, %2362
  br i1 %2363, label %2364, label %2390

2364:                                             ; preds = %2356, %2355, %2337
  br label %2365

2365:                                             ; preds = %2364
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #8
  %2366 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull align 8 dereferenceable(8) %2366)
          to label %2367 unwind label %2375

2367:                                             ; preds = %2365
  call void @llvm.lifetime.start.p0(i64 16, ptr %181) #8
  %2368 = getelementptr inbounds %class.anon.193, ptr %181, i32 0, i32 0
  %2369 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2369, ptr %2368, align 8, !tbaa !5
  %2370 = getelementptr inbounds %class.anon.193, ptr %181, i32 0, i32 1
  %2371 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2371, ptr %2370, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %180, ptr noundef nonnull align 8 dereferenceable(16) %181) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %179, i32 noundef 0, ptr noundef %180)
          to label %2372 unwind label %2379

2372:                                             ; preds = %2367
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %181) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #8
  %2373 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2373, ptr noundef @.str.19)
          to label %2374 unwind label %2384

2374:                                             ; preds = %2372
  invoke void @__cxa_throw(ptr %2373, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2333

2375:                                             ; preds = %2365
  %2376 = landingpad { ptr, i32 }
          cleanup
  %2377 = extractvalue { ptr, i32 } %2376, 0
  store ptr %2377, ptr %11, align 8
  %2378 = extractvalue { ptr, i32 } %2376, 1
  store i32 %2378, ptr %12, align 4
  br label %2383

2379:                                             ; preds = %2367
  %2380 = landingpad { ptr, i32 }
          cleanup
  %2381 = extractvalue { ptr, i32 } %2380, 0
  store ptr %2381, ptr %11, align 8
  %2382 = extractvalue { ptr, i32 } %2380, 1
  store i32 %2382, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %181) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #8
  br label %2383

2383:                                             ; preds = %2379, %2375
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #8
  br label %2427

2384:                                             ; preds = %2372
  %2385 = landingpad { ptr, i32 }
          cleanup
  %2386 = extractvalue { ptr, i32 } %2385, 0
  store ptr %2386, ptr %11, align 8
  %2387 = extractvalue { ptr, i32 } %2385, 1
  store i32 %2387, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2373) #8
  br label %2427

2388:                                             ; No predecessors!
  br label %2389

2389:                                             ; preds = %2388
  br label %2390

2390:                                             ; preds = %2389, %2356
  %2391 = load ptr, ptr %6, align 8, !tbaa !5
  %2392 = load ptr, ptr %177, align 8, !tbaa !5
  %2393 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2392, i32 0, i32 4
  %2394 = load ptr, ptr %178, align 8, !tbaa !5
  %2395 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2394, i32 0, i32 4
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %2391, ptr noundef nonnull align 8 dereferenceable(8) %2393, ptr noundef nonnull align 8 dereferenceable(8) %2395)
          to label %2396 unwind label %2333

2396:                                             ; preds = %2390
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #8
  store i32 0, ptr %182, align 4, !tbaa !82
  br label %2397

2397:                                             ; preds = %2418, %2396
  %2398 = load i32, ptr %182, align 4, !tbaa !82
  %2399 = zext i32 %2398 to i64
  %2400 = load ptr, ptr %177, align 8, !tbaa !5
  %2401 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2400, i32 0, i32 5
  %2402 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2401) #8
  %2403 = icmp ult i64 %2399, %2402
  br i1 %2403, label %2405, label %2404

2404:                                             ; preds = %2397
  store i32 167, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #8
  br label %2425

2405:                                             ; preds = %2397
  %2406 = load ptr, ptr %6, align 8, !tbaa !5
  %2407 = load ptr, ptr %177, align 8, !tbaa !5
  %2408 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2407, i32 0, i32 5
  %2409 = load i32, ptr %182, align 4, !tbaa !82
  %2410 = zext i32 %2409 to i64
  %2411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2408, i64 noundef %2410) #8
  %2412 = load ptr, ptr %178, align 8, !tbaa !5
  %2413 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2412, i32 0, i32 5
  %2414 = load i32, ptr %182, align 4, !tbaa !82
  %2415 = zext i32 %2414 to i64
  %2416 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2413, i64 noundef %2415) #8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %195, ptr noundef nonnull align 8 dereferenceable(8) %2406, ptr noundef nonnull align 8 dereferenceable(8) %2411, ptr noundef nonnull align 8 dereferenceable(8) %2416)
          to label %2417 unwind label %2421

2417:                                             ; preds = %2405
  br label %2418

2418:                                             ; preds = %2417
  %2419 = load i32, ptr %182, align 4, !tbaa !82
  %2420 = add i32 %2419, 1
  store i32 %2420, ptr %182, align 4, !tbaa !82
  br label %2397, !llvm.loop !169

2421:                                             ; preds = %2405
  %2422 = landingpad { ptr, i32 }
          cleanup
  %2423 = extractvalue { ptr, i32 } %2422, 0
  store ptr %2423, ptr %11, align 8
  %2424 = extractvalue { ptr, i32 } %2422, 1
  store i32 %2424, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #8
  br label %2427

2425:                                             ; preds = %2404
  br label %2426

2426:                                             ; preds = %2425
  store i8 0, ptr %176, align 1, !tbaa !92
  br label %2323, !llvm.loop !170

2427:                                             ; preds = %2421, %2384, %2383, %2333
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #8
  br label %2428

2428:                                             ; preds = %2427, %2329
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #8
  br label %2568

2429:                                             ; preds = %2328
  br label %2430

2430:                                             ; preds = %2429
  store i8 0, ptr %176, align 1, !tbaa !92
  br label %2312, !llvm.loop !171

2431:                                             ; preds = %2315
  br label %2566

2432:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %183) #8
  store i8 1, ptr %183, align 1, !tbaa !92
  br label %2433

2433:                                             ; preds = %2497, %2432
  %2434 = load i8, ptr %183, align 1, !tbaa !92, !range !93, !noundef !94
  %2435 = trunc i8 %2434 to i1
  br i1 %2435, label %2437, label %2436

2436:                                             ; preds = %2433
  store i32 170, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #8
  br label %2498

2437:                                             ; preds = %2433
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #8
  %2438 = load ptr, ptr %53, align 8, !tbaa !5
  %2439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %2438)
          to label %2440 unwind label %2450

2440:                                             ; preds = %2437
  store ptr %2439, ptr %184, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #8
  %2441 = load ptr, ptr %54, align 8, !tbaa !5
  %2442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %2441)
          to label %2443 unwind label %2454

2443:                                             ; preds = %2440
  store ptr %2442, ptr %185, align 8, !tbaa !5
  br label %2444

2444:                                             ; preds = %2493, %2443
  %2445 = load ptr, ptr %184, align 8, !tbaa !5
  %2446 = load ptr, ptr %185, align 8, !tbaa !5
  %2447 = load i8, ptr %183, align 1, !tbaa !92, !range !93, !noundef !94
  %2448 = trunc i8 %2447 to i1
  br i1 %2448, label %2458, label %2449

2449:                                             ; preds = %2444
  store i32 173, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #8
  br label %2496

2450:                                             ; preds = %2437
  %2451 = landingpad { ptr, i32 }
          cleanup
  %2452 = extractvalue { ptr, i32 } %2451, 0
  store ptr %2452, ptr %11, align 8
  %2453 = extractvalue { ptr, i32 } %2451, 1
  store i32 %2453, ptr %12, align 4
  br label %2495

2454:                                             ; preds = %2476, %2440
  %2455 = landingpad { ptr, i32 }
          cleanup
  %2456 = extractvalue { ptr, i32 } %2455, 0
  store ptr %2456, ptr %11, align 8
  %2457 = extractvalue { ptr, i32 } %2455, 1
  store i32 %2457, ptr %12, align 4
  br label %2494

2458:                                             ; preds = %2444
  %2459 = load ptr, ptr %184, align 8, !tbaa !5
  %2460 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %2459, i32 0, i32 0
  %2461 = load ptr, ptr %2460, align 8, !tbaa !172
  %2462 = load ptr, ptr %185, align 8, !tbaa !5
  %2463 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %2462, i32 0, i32 0
  %2464 = load ptr, ptr %2463, align 8, !tbaa !172
  %2465 = icmp ne ptr %2461, %2464
  br i1 %2465, label %2466, label %2492

2466:                                             ; preds = %2458
  br label %2467

2467:                                             ; preds = %2466
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #8
  %2468 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(8) %2468)
          to label %2469 unwind label %2477

2469:                                             ; preds = %2467
  call void @llvm.lifetime.start.p0(i64 16, ptr %188) #8
  %2470 = getelementptr inbounds %class.anon.194, ptr %188, i32 0, i32 0
  %2471 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2471, ptr %2470, align 8, !tbaa !5
  %2472 = getelementptr inbounds %class.anon.194, ptr %188, i32 0, i32 1
  %2473 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2473, ptr %2472, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %187, ptr noundef nonnull align 8 dereferenceable(16) %188) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %186, i32 noundef 0, ptr noundef %187)
          to label %2474 unwind label %2481

2474:                                             ; preds = %2469
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #8
  %2475 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2475, ptr noundef @.str.19)
          to label %2476 unwind label %2486

2476:                                             ; preds = %2474
  invoke void @__cxa_throw(ptr %2475, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2454

2477:                                             ; preds = %2467
  %2478 = landingpad { ptr, i32 }
          cleanup
  %2479 = extractvalue { ptr, i32 } %2478, 0
  store ptr %2479, ptr %11, align 8
  %2480 = extractvalue { ptr, i32 } %2478, 1
  store i32 %2480, ptr %12, align 4
  br label %2485

2481:                                             ; preds = %2469
  %2482 = landingpad { ptr, i32 }
          cleanup
  %2483 = extractvalue { ptr, i32 } %2482, 0
  store ptr %2483, ptr %11, align 8
  %2484 = extractvalue { ptr, i32 } %2482, 1
  store i32 %2484, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #8
  br label %2485

2485:                                             ; preds = %2481, %2477
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #8
  br label %2494

2486:                                             ; preds = %2474
  %2487 = landingpad { ptr, i32 }
          cleanup
  %2488 = extractvalue { ptr, i32 } %2487, 0
  store ptr %2488, ptr %11, align 8
  %2489 = extractvalue { ptr, i32 } %2487, 1
  store i32 %2489, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2475) #8
  br label %2494

2490:                                             ; No predecessors!
  br label %2491

2491:                                             ; preds = %2490
  br label %2492

2492:                                             ; preds = %2491, %2458
  br label %2493

2493:                                             ; preds = %2492
  store i8 0, ptr %183, align 1, !tbaa !92
  br label %2444, !llvm.loop !174

2494:                                             ; preds = %2486, %2485, %2454
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #8
  br label %2495

2495:                                             ; preds = %2494, %2450
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #8
  br label %2568

2496:                                             ; preds = %2449
  br label %2497

2497:                                             ; preds = %2496
  store i8 0, ptr %183, align 1, !tbaa !92
  br label %2433, !llvm.loop !175

2498:                                             ; preds = %2436
  br label %2566

2499:                                             ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %189) #8
  store i8 1, ptr %189, align 1, !tbaa !92
  br label %2500

2500:                                             ; preds = %2564, %2499
  %2501 = load i8, ptr %189, align 1, !tbaa !92, !range !93, !noundef !94
  %2502 = trunc i8 %2501 to i1
  br i1 %2502, label %2504, label %2503

2503:                                             ; preds = %2500
  store i32 178, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #8
  br label %2565

2504:                                             ; preds = %2500
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #8
  %2505 = load ptr, ptr %53, align 8, !tbaa !5
  %2506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %2505)
          to label %2507 unwind label %2517

2507:                                             ; preds = %2504
  store ptr %2506, ptr %190, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #8
  %2508 = load ptr, ptr %54, align 8, !tbaa !5
  %2509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %2508)
          to label %2510 unwind label %2521

2510:                                             ; preds = %2507
  store ptr %2509, ptr %191, align 8, !tbaa !5
  br label %2511

2511:                                             ; preds = %2560, %2510
  %2512 = load ptr, ptr %190, align 8, !tbaa !5
  %2513 = load ptr, ptr %191, align 8, !tbaa !5
  %2514 = load i8, ptr %189, align 1, !tbaa !92, !range !93, !noundef !94
  %2515 = trunc i8 %2514 to i1
  br i1 %2515, label %2525, label %2516

2516:                                             ; preds = %2511
  store i32 181, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #8
  br label %2563

2517:                                             ; preds = %2504
  %2518 = landingpad { ptr, i32 }
          cleanup
  %2519 = extractvalue { ptr, i32 } %2518, 0
  store ptr %2519, ptr %11, align 8
  %2520 = extractvalue { ptr, i32 } %2518, 1
  store i32 %2520, ptr %12, align 4
  br label %2562

2521:                                             ; preds = %2543, %2507
  %2522 = landingpad { ptr, i32 }
          cleanup
  %2523 = extractvalue { ptr, i32 } %2522, 0
  store ptr %2523, ptr %11, align 8
  %2524 = extractvalue { ptr, i32 } %2522, 1
  store i32 %2524, ptr %12, align 4
  br label %2561

2525:                                             ; preds = %2511
  %2526 = load ptr, ptr %190, align 8, !tbaa !5
  %2527 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %2526, i32 0, i32 0
  %2528 = load ptr, ptr %2527, align 8, !tbaa !176
  %2529 = load ptr, ptr %191, align 8, !tbaa !5
  %2530 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %2529, i32 0, i32 0
  %2531 = load ptr, ptr %2530, align 8, !tbaa !176
  %2532 = icmp ne ptr %2528, %2531
  br i1 %2532, label %2533, label %2559

2533:                                             ; preds = %2525
  br label %2534

2534:                                             ; preds = %2533
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #8
  %2535 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %2535)
          to label %2536 unwind label %2544

2536:                                             ; preds = %2534
  call void @llvm.lifetime.start.p0(i64 16, ptr %194) #8
  %2537 = getelementptr inbounds %class.anon.195, ptr %194, i32 0, i32 0
  %2538 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2538, ptr %2537, align 8, !tbaa !5
  %2539 = getelementptr inbounds %class.anon.195, ptr %194, i32 0, i32 1
  %2540 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %2540, ptr %2539, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(16) %194) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %192, i32 noundef 0, ptr noundef %193)
          to label %2541 unwind label %2548

2541:                                             ; preds = %2536
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %194) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #8
  %2542 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2542, ptr noundef @.str.19)
          to label %2543 unwind label %2553

2543:                                             ; preds = %2541
  invoke void @__cxa_throw(ptr %2542, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %2596 unwind label %2521

2544:                                             ; preds = %2534
  %2545 = landingpad { ptr, i32 }
          cleanup
  %2546 = extractvalue { ptr, i32 } %2545, 0
  store ptr %2546, ptr %11, align 8
  %2547 = extractvalue { ptr, i32 } %2545, 1
  store i32 %2547, ptr %12, align 4
  br label %2552

2548:                                             ; preds = %2536
  %2549 = landingpad { ptr, i32 }
          cleanup
  %2550 = extractvalue { ptr, i32 } %2549, 0
  store ptr %2550, ptr %11, align 8
  %2551 = extractvalue { ptr, i32 } %2549, 1
  store i32 %2551, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %194) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #8
  br label %2552

2552:                                             ; preds = %2548, %2544
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #8
  br label %2561

2553:                                             ; preds = %2541
  %2554 = landingpad { ptr, i32 }
          cleanup
  %2555 = extractvalue { ptr, i32 } %2554, 0
  store ptr %2555, ptr %11, align 8
  %2556 = extractvalue { ptr, i32 } %2554, 1
  store i32 %2556, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2542) #8
  br label %2561

2557:                                             ; No predecessors!
  br label %2558

2558:                                             ; preds = %2557
  br label %2559

2559:                                             ; preds = %2558, %2525
  br label %2560

2560:                                             ; preds = %2559
  store i8 0, ptr %189, align 1, !tbaa !92
  br label %2511, !llvm.loop !178

2561:                                             ; preds = %2553, %2552, %2521
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #8
  br label %2562

2562:                                             ; preds = %2561, %2517
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #8
  br label %2568

2563:                                             ; preds = %2516
  br label %2564

2564:                                             ; preds = %2563
  store i8 0, ptr %189, align 1, !tbaa !92
  br label %2500, !llvm.loop !179

2565:                                             ; preds = %2503
  br label %2566

2566:                                             ; preds = %2565, %2498, %2431, %2310, %2244, %2171, %2098, %2007, %1969, %1749, %1388, %1138, %1071, %1005, %940, %908, %874
  br label %2567

2567:                                             ; preds = %2566
  store i8 0, ptr %52, align 1, !tbaa !92
  br label %859, !llvm.loop !180

2568:                                             ; preds = %2562, %2495, %2428, %2307, %2241, %2168, %2095, %2004, %1966, %1746, %1385, %1135, %1068, %1002, %937, %905, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %2569

2569:                                             ; preds = %2568, %863
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %2576

2570:                                             ; preds = %862
  br label %2571

2571:                                             ; preds = %2570
  store i8 0, ptr %52, align 1, !tbaa !92
  br label %848, !llvm.loop !181

2572:                                             ; preds = %851
  store i32 0, ptr %15, align 4
  br label %2573

2573:                                             ; preds = %2572, %798, %763
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  %2574 = load i32, ptr %15, align 4
  switch i32 %2574, label %2579 [
    i32 0, label %2575
  ]

2575:                                             ; preds = %2573
  br label %2577

2576:                                             ; preds = %2569, %841, %840, %799, %764
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  br label %2586

2577:                                             ; preds = %2575, %743
  br label %2578

2578:                                             ; preds = %2577, %731
  store i32 0, ptr %15, align 4
  br label %2579

2579:                                             ; preds = %2578, %2573
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  %2580 = load i32, ptr %15, align 4
  switch i32 %2580, label %2582 [
    i32 0, label %2581
  ]

2581:                                             ; preds = %2579
  store i32 0, ptr %15, align 4
  br label %2582

2582:                                             ; preds = %2581, %2579
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  br label %2583

2583:                                             ; preds = %2582, %598, %492, %380, %320, %250
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  %2584 = load i32, ptr %15, align 4
  switch i32 %2584, label %2596 [
    i32 0, label %2585
    i32 1, label %2585
  ]

2585:                                             ; preds = %2583, %2583, %207
  ret void

2586:                                             ; preds = %2576, %732, %701
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %2587

2587:                                             ; preds = %2586, %626
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  br label %2588

2588:                                             ; preds = %2587, %625, %543, %437, %360, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %2589

2589:                                             ; preds = %2588, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %2590

2590:                                             ; preds = %2589, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %2591

2591:                                             ; preds = %2590
  %2592 = load ptr, ptr %11, align 8
  %2593 = load i32, ptr %12, align 4
  %2594 = insertvalue { ptr, i32 } poison, ptr %2592, 0
  %2595 = insertvalue { ptr, i32 } %2594, i32 %2593, 1
  resume { ptr, i32 } %2595

2596:                                             ; preds = %2583, %2543, %2476, %2374, %2288, %2216, %2143, %2050, %1946, %1674, %1609, %1562, %1516, %1435, %1352, %1300, %1247, %1186, %1116, %1049, %983, %902, %826
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i1 noundef zeroext) #2 align 2

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #0

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(40)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.158") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #2 align 2

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

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

declare void @_ZN16HMTypeInferrence10ivar_unifyEjj(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, i32 noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare void @_ZN16HMTypeInferrence11set_ivar_toEjN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, ptr noundef) #0

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104)) #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) #2 align 2

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #0

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104)) #6 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR9ArraySizeneERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

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

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

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

declare void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteral) align 8, i64 noundef) #0

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

declare void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 320}
!10 = !{!"_ZTS7Context", !6, i64 0, !11, i64 8, !15, i64 32, !25, i64 88, !48, i64 368, !49, i64 376, !53, i64 400, !57, i64 424, !61, i64 448, !65, i64 472, !71, i64 512, !75, i64 536, !42, i64 584}
!11 = !{!"_ZTSSt6vectorIN7Context7BindingESaIS1_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIN7Context7BindingESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIN7Context7BindingESaIS1_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN7Context7BindingESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTS16HMTypeInferrence", !16, i64 0, !20, i64 24, !24, i64 48}
!16 = !{!"_ZTSSt6vectorIN16HMTypeInferrence4IVarESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIN16HMTypeInferrence9IVarValueESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTS15TraitResolution", !26, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !44, i64 256}
!26 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !27, i64 24, !36, i64 72, !42, i64 104, !42, i64 112, !42, i64 120, !42, i64 128, !42, i64 136, !42, i64 144, !42, i64 152, !42, i64 160, !42, i64 168, !42, i64 176, !42, i64 184, !42, i64 192, !42, i64 200, !42, i64 208}
!27 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !28, i64 0}
!28 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !29, i64 0}
!29 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !30, i64 0, !32, i64 8}
!30 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !31, i64 0}
!31 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!32 = !{!"_ZTSSt15_Rb_tree_header", !33, i64 0, !35, i64 32}
!33 = !{!"_ZTSSt18_Rb_tree_node_base", !34, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!34 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!35 = !{!"long", !7, i64 0}
!36 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !37, i64 0, !41, i64 24}
!37 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!42 = !{!"_ZTSN3HIR10SimplePathE", !43, i64 0}
!43 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!44 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"int", !7, i64 0}
!49 = !{!"_ZTSSt6vectorISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt6vectorIN7Context10AssociatedESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIN7Context10AssociatedESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN7Context10AssociatedESaIS1_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN7Context10AssociatedESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt6vectorIPN3HIR8ExprNodeESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSSt6vectorISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt6vectorIbSaIbEE", !66, i64 0}
!66 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !67, i64 0}
!67 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !69, i64 0, !69, i64 16, !6, i64 32}
!69 = !{!"_ZTSSt13_Bit_iterator", !70, i64 0}
!70 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !48, i64 8}
!71 = !{!"_ZTSSt6vectorIN7Context12IVarPossibleESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = !{!"_ZTSSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE", !76, i64 0}
!76 = !{!"_ZTSSt8_Rb_treeIPN3HIR30TypeData_ErasedType_AliasInnerESt4pairIKS2_N7Context9TaitEntryEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE", !77, i64 0}
!77 = !{!"_ZTSNSt8_Rb_treeIPN3HIR30TypeData_ErasedType_AliasInnerESt4pairIKS2_N7Context9TaitEntryEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !78, i64 0, !32, i64 8}
!78 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPN3HIR30TypeData_ErasedType_AliasInnerEEE", !79, i64 0}
!79 = !{!"_ZTSSt4lessIPN3HIR30TypeData_ErasedType_AliasInnerEE"}
!80 = !{!81, !6, i64 0}
!81 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_0", !6, i64 0, !6, i64 8}
!82 = !{!48, !48, i64 0}
!83 = !{!84, !48, i64 0}
!84 = !{!"_ZTSN3HIR8TypeData10Data_InferE", !48, i64 0, !85, i64 4}
!85 = !{!"_ZTSN3HIR10InferClassE", !7, i64 0}
!86 = !{!87, !6, i64 8}
!87 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_1", !6, i64 0, !6, i64 8}
!88 = !{!89, !6, i64 8}
!89 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E4$_23", !6, i64 0, !6, i64 8, !6, i64 16}
!90 = !{!91, !6, i64 0}
!91 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_2", !6, i64 0, !6, i64 8, !6, i64 16}
!92 = !{!24, !24, i64 0}
!93 = !{i8 0, i8 2}
!94 = !{}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = distinct !{!97, !96}
!98 = distinct !{!98, !96}
!99 = distinct !{!99, !96}
!100 = !{!101, !101, i64 0}
!101 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!102 = distinct !{!102, !96}
!103 = distinct !{!103, !96}
!104 = distinct !{!104, !96}
!105 = distinct !{!105, !96}
!106 = !{!107, !48, i64 8}
!107 = !{!"_ZTSN3HIR10GenericRefE", !108, i64 0, !48, i64 8}
!108 = !{!"_ZTS8RcString", !6, i64 0}
!109 = distinct !{!109, !96}
!110 = distinct !{!110, !96}
!111 = distinct !{!111, !96}
!112 = distinct !{!112, !96}
!113 = distinct !{!113, !96}
!114 = distinct !{!114, !96}
!115 = distinct !{!115, !96}
!116 = distinct !{!116, !96}
!117 = distinct !{!117, !96}
!118 = distinct !{!118, !96}
!119 = distinct !{!119, !96}
!120 = distinct !{!120, !96}
!121 = distinct !{!121, !96}
!122 = distinct !{!122, !96}
!123 = distinct !{!123, !96}
!124 = distinct !{!124, !96}
!125 = !{!35, !35, i64 0}
!126 = distinct !{!126, !96}
!127 = distinct !{!127, !96}
!128 = distinct !{!128, !96}
!129 = distinct !{!129, !96}
!130 = distinct !{!130, !96}
!131 = distinct !{!131, !96}
!132 = distinct !{!132, !96}
!133 = !{!134, !136, i64 4}
!134 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !135, i64 0, !136, i64 4, !137, i64 8}
!135 = !{!"_ZTSN3HIR11LifetimeRefE", !48, i64 0}
!136 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!137 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!138 = distinct !{!138, !96}
!139 = distinct !{!139, !96}
!140 = !{!141, !136, i64 0}
!141 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !136, i64 0, !137, i64 8}
!142 = distinct !{!142, !96}
!143 = distinct !{!143, !96}
!144 = distinct !{!144, !96}
!145 = distinct !{!145, !96}
!146 = !{!147, !24, i64 96}
!147 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !148, i64 0, !24, i64 96, !24, i64 97, !108, i64 104, !137, i64 112, !165, i64 120}
!148 = !{!"_ZTSN3HIR13GenericParamsE", !149, i64 0, !153, i64 24, !157, i64 48, !161, i64 72}
!149 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !150, i64 0}
!150 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !151, i64 0}
!151 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !152, i64 0}
!152 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!153 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !154, i64 0}
!154 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!157 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!161 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !162, i64 0}
!162 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !163, i64 0}
!163 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !164, i64 0}
!164 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!165 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !166, i64 0}
!166 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !167, i64 0}
!167 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !168, i64 0}
!168 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!169 = distinct !{!169, !96}
!170 = distinct !{!170, !96}
!171 = distinct !{!171, !96}
!172 = !{!173, !6, i64 0}
!173 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!174 = distinct !{!174, !96}
!175 = distinct !{!175, !96}
!176 = !{!177, !6, i64 0}
!177 = !{!"_ZTSN3HIR8TypeData14Data_GeneratorE", !6, i64 0}
!178 = distinct !{!178, !96}
!179 = distinct !{!179, !96}
!180 = distinct !{!180, !96}
!181 = distinct !{!181, !96}


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

%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.69, %class.ThinVector.70, %class.ThinVector.71 }
%class.ThinVector.69 = type { ptr }
%class.ThinVector.70 = type { ptr }
%class.ThinVector.71 = type { ptr }
%"struct.std::pair.158" = type { ptr, %"struct.Context::TaitEntry" }
%"struct.Context::TaitEntry" = type { %"struct.HIR::PathParams", %"class.HIR::TypeRef" }
%class.anon.160 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.161 = type { ptr, ptr }
%class.anon.162 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.163 = type { ptr, ptr, ptr }
%class.anon.164 = type { ptr, ptr }
%class.anon.165 = type { ptr, ptr }
%class.anon.166 = type { ptr, ptr }
%class.anon.167 = type { ptr, ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.170 = type { ptr, ptr }
%class.anon.171 = type { ptr, ptr }
%class.anon.172 = type { ptr, ptr }
%class.anon.173 = type { ptr, 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.91" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr.91" = type { %"struct.std::__uniq_ptr_data.92" }
%"struct.std::__uniq_ptr_data.92" = type { %"class.std::__uniq_ptr_impl.93" }
%"class.std::__uniq_ptr_impl.93" = type { %"class.std::tuple.94" }
%"class.std::tuple.94" = type { %"struct.std::_Tuple_impl.95" }
%"struct.std::_Tuple_impl.95" = type { %"struct.std::_Head_base.98" }
%"struct.std::_Head_base.98" = type { ptr }
%class.anon.174 = type { ptr }
%class.anon.175 = type { ptr }
%class.anon.176 = type { ptr, ptr }
%class.anon.177 = type { ptr, ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.125", [8 x i8] }
%"class.std::unique_ptr.125" = type { %"struct.std::__uniq_ptr_data.126" }
%"struct.std::__uniq_ptr_data.126" = type { %"class.std::__uniq_ptr_impl.127" }
%"class.std::__uniq_ptr_impl.127" = type { %"class.std::tuple.128" }
%"class.std::tuple.128" = type { %"struct.std::_Tuple_impl.129" }
%"struct.std::_Tuple_impl.129" = type { %"struct.std::_Head_base.132" }
%"struct.std::_Head_base.132" = type { ptr }
%"class.HIR::EncodedLiteralPtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.178", %"class.std::vector.183" }
%"class.std::vector.178" = type { %"struct.std::_Vector_base.179" }
%"struct.std::_Vector_base.179" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.183" = type { %"struct.std::_Vector_base.184" }
%"struct.std::_Vector_base.184" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.188 = type { ptr, ptr }
%class.anon.189 = type { ptr, ptr }
%class.anon.190 = type { ptr, ptr }
%class.anon.191 = type { ptr, ptr }
%class.anon.192 = type { ptr, ptr }
%class.anon.193 = type { ptr, ptr }
%class.anon.194 = type { ptr, ptr }
%class.anon.195 = type { ptr, ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.16 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [95 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [20 x i8], align 1

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #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 #1

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

; 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 #2 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)) #1

; 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 #2 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)) #1

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

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

declare i32 @__gxx_personality_v0(...)

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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 #0

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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 #4

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.HIR::TypeRef", align 8
  %6 = alloca %"class.HIR::TypeRef", align 8
  %7 = alloca %"struct.HIR::PathParams", align 8
  %8 = alloca %"struct.HIR::PathParams", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"struct.std::pair.158", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"struct.Context::TaitEntry", align 8
  %13 = alloca %"class.HIR::TypeRef", align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"struct.std::pair.158", align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"struct.Context::TaitEntry", align 8
  %19 = alloca %"class.HIR::TypeRef", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %class.anon.160, align 8
  %22 = alloca %"struct.std::_Bit_reference", align 8
  %23 = alloca %"struct.std::_Bit_reference", align 8
  %24 = alloca %class.anon.161, align 8
  %25 = alloca %class.anon.162, align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %struct.Span, align 8
  %28 = alloca %"class.std::function", align 8
  %29 = alloca %class.anon.163, align 8
  %30 = alloca %struct.Span, align 8
  %31 = alloca %"class.std::function", align 8
  %32 = alloca %class.anon.164, align 8
  %33 = alloca %struct.Span, align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.165, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.166, align 8
  %39 = alloca %struct.Span, align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.167, align 8
  %42 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %43 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %44 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %45 = alloca %struct.Span, align 8
  %46 = alloca %"class.std::function", align 8
  %47 = alloca %class.anon.170, align 8
  %48 = alloca %struct.Span, align 8
  %49 = alloca %"class.std::function", align 8
  %50 = alloca %class.anon.171, align 8
  %51 = alloca %struct.Span, align 8
  %52 = alloca %"class.std::function", align 8
  %53 = alloca %class.anon.172, align 8
  %54 = alloca %struct.Span, align 8
  %55 = alloca %"class.std::function", align 8
  %56 = alloca %class.anon.173, align 8
  %57 = alloca %"class.HIR::Path", align 8
  %58 = alloca %"struct.HIR::SimplePath", align 8
  %59 = alloca %struct.Span, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.174, align 8
  %62 = alloca %"class.HIR::Path", align 8
  %63 = alloca %"struct.HIR::SimplePath", align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.175, align 8
  %67 = alloca %struct.Span, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.176, align 8
  %70 = alloca %struct.Span, align 8
  %71 = alloca %"class.std::function", align 8
  %72 = alloca %class.anon.177, align 8
  %73 = alloca %"class.HIR::ConstGeneric", align 8
  %74 = alloca %"class.HIR::EncodedLiteralPtr", align 8
  %75 = alloca %struct.EncodedLiteral, align 8
  %76 = alloca %"class.HIR::ConstGeneric", align 8
  %77 = alloca %"class.HIR::EncodedLiteralPtr", align 8
  %78 = alloca %struct.EncodedLiteral, align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::function", align 8
  %81 = alloca %class.anon.188, align 8
  %82 = alloca %struct.Span, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.189, align 8
  %85 = alloca %struct.Span, align 8
  %86 = alloca %"class.std::function", align 8
  %87 = alloca %class.anon.190, align 8
  %88 = alloca %struct.Span, align 8
  %89 = alloca %"class.std::function", align 8
  %90 = alloca %class.anon.191, align 8
  %91 = alloca %struct.Span, align 8
  %92 = alloca %"class.std::function", align 8
  %93 = alloca %class.anon.192, align 8
  %94 = alloca %struct.Span, align 8
  %95 = alloca %"class.std::function", align 8
  %96 = alloca %class.anon.193, align 8
  %97 = alloca %struct.Span, align 8
  %98 = alloca %"class.std::function", align 8
  %99 = alloca %class.anon.194, align 8
  %100 = alloca %struct.Span, align 8
  %101 = alloca %"class.std::function", align 8
  %102 = alloca %class.anon.195, align 8
  %103 = tail call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3)
  br i1 %103, label %906, label %104

104:                                              ; preds = %4
  %105 = getelementptr inbounds i8, ptr %0, i64 32
  %106 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %105, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %107 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %105, ptr noundef nonnull align 8 dereferenceable(8) %3)
  %108 = tail call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %107)
  br i1 %108, label %906, label %109

109:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %110 unwind label %131

110:                                              ; preds = %109
  %111 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %112 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %111)
  br i1 %112, label %113, label %118

113:                                              ; preds = %110
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %105, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %115 unwind label %133

115:                                              ; preds = %113
  %116 = getelementptr inbounds i8, ptr %0, i64 88
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK15TraitResolution23expand_associated_typesERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %116, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %118 unwind label %133

118:                                              ; preds = %110, %115
  %119 = phi ptr [ %117, %115 ], [ %2, %110 ]
  %120 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %121 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %120)
  br i1 %121, label %122, label %127

122:                                              ; preds = %118
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %105, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %124 unwind label %135

124:                                              ; preds = %122
  %125 = getelementptr inbounds i8, ptr %0, i64 88
  %126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK15TraitResolution23expand_associated_typesERK4SpanRKN3HIR7TypeRefERS4_(ptr noundef nonnull align 8 dereferenceable(280) %125, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %127 unwind label %135

127:                                              ; preds = %118, %124
  %128 = phi ptr [ %126, %124 ], [ %3, %118 ]
  %129 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %130 unwind label %135

130:                                              ; preds = %127
  br i1 %129, label %.critedge705, label %137

131:                                              ; preds = %109
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %909

133:                                              ; preds = %115, %113
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %908

135:                                              ; preds = %127, %124, %122
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %908

137:                                              ; preds = %130
  %138 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %139 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %138)
  %.not = icmp eq ptr %139, null
  br i1 %.not, label %155, label %140

140:                                              ; preds = %137
  %141 = call noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %139)
  %.not554 = icmp eq ptr %141, null
  br i1 %.not554, label %155, label %142

142:                                              ; preds = %140
  %143 = getelementptr inbounds i8, ptr %139, i64 88
  %144 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %143)
  br i1 %144, label %145, label %155

145:                                              ; preds = %142
  %146 = getelementptr inbounds i8, ptr %141, i64 16
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %7, ptr noundef nonnull align 8 dereferenceable(24) %146)
          to label %147 unwind label %151

147:                                              ; preds = %145
  %148 = getelementptr inbounds i8, ptr %141, i64 8
  %149 = getelementptr inbounds i8, ptr %141, i64 40
  %150 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %149)
  invoke void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull %7, ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef %150, i1 noundef zeroext false)
          to label %.critedge697 unwind label %153

.critedge697:                                     ; preds = %147
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  br label %.critedge705

151:                                              ; preds = %145
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %908

153:                                              ; preds = %147
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  br label %908

155:                                              ; preds = %142, %140, %137
  %156 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %157 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %156)
  %.not556 = icmp eq ptr %157, null
  br i1 %.not556, label %173, label %158

158:                                              ; preds = %155
  %159 = call noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  %.not557 = icmp eq ptr %159, null
  br i1 %.not557, label %173, label %160

160:                                              ; preds = %158
  %161 = getelementptr inbounds i8, ptr %157, i64 88
  %162 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br i1 %162, label %163, label %173

163:                                              ; preds = %160
  %164 = getelementptr inbounds i8, ptr %159, i64 16
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %8, ptr noundef nonnull align 8 dereferenceable(24) %164)
          to label %165 unwind label %169

165:                                              ; preds = %163
  %166 = getelementptr inbounds i8, ptr %159, i64 8
  %167 = getelementptr inbounds i8, ptr %159, i64 40
  %168 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
  invoke void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef %168, i1 noundef zeroext false)
          to label %.critedge701 unwind label %171

.critedge701:                                     ; preds = %165
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %.critedge705

169:                                              ; preds = %163
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %908

171:                                              ; preds = %165
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %908

173:                                              ; preds = %160, %158, %155
  %174 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %175 = call noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %174)
  %.not560 = icmp eq ptr %175, null
  br i1 %.not560, label %.critedge706, label %176

176:                                              ; preds = %173
  %177 = getelementptr inbounds i8, ptr %175, i64 56
  %178 = call noundef ptr @_ZNK3HIR25TypeData_ErasedType_Inner9opt_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %177)
  %.not561 = icmp eq ptr %178, null
  br i1 %.not561, label %.critedge706, label %179

179:                                              ; preds = %176
  %180 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %181 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %180)
  br i1 %181, label %.critedge706, label %182

182:                                              ; preds = %179
  %183 = getelementptr inbounds i8, ptr %178, i64 24
  %184 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %183) #8
  %185 = getelementptr inbounds i8, ptr %0, i64 320
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = invoke noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112) %184, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %188 unwind label %202

188:                                              ; preds = %182
  br i1 %187, label %189, label %.critedge706

189:                                              ; preds = %188
  %190 = getelementptr inbounds i8, ptr %0, i64 536
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %191 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  store ptr %191, ptr %9, align 8, !tbaa !79
  %192 = invoke noundef i64 @_ZNKSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(48) %190, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %193 unwind label %204

193:                                              ; preds = %189
  %194 = icmp eq i64 %192, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br i1 %194, label %195, label %217

195:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %196 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  store ptr %196, ptr %11, align 8, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %13, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %197 unwind label %206

197:                                              ; preds = %195
  invoke void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(24) %178, ptr noundef nonnull %13)
          to label %198 unwind label %208

198:                                              ; preds = %197
  invoke void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.158") align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %199 unwind label %210

199:                                              ; preds = %198
  %200 = invoke { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %190, ptr noundef nonnull align 8 dereferenceable(40) %10)
          to label %201 unwind label %212

201:                                              ; preds = %199
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  br label %.critedge705

202:                                              ; preds = %182
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %908

204:                                              ; preds = %189
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br label %908

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

208:                                              ; preds = %197
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %215

210:                                              ; preds = %198
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %199
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  br label %214

214:                                              ; preds = %212, %210
  %.pn562 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %215

215:                                              ; preds = %214, %208
  %.pn562.pn = phi { ptr, i32 } [ %.pn562, %214 ], [ %209, %208 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br label %216

216:                                              ; preds = %215, %206
  %.pn562.pn.pn = phi { ptr, i32 } [ %.pn562.pn, %215 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  br label %908

217:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %218 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  store ptr %218, ptr %14, align 8, !tbaa !79
  %219 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48) %190, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %220 unwind label %223

220:                                              ; preds = %217
  %221 = getelementptr inbounds i8, ptr %219, i64 24
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %221)
          to label %222 unwind label %223

222:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.critedge705

223:                                              ; preds = %220, %217
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %908

.critedge706:                                     ; preds = %173, %176, %188, %179
  %225 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %226 = call noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %225)
  %.not567 = icmp eq ptr %226, null
  br i1 %.not567, label %.critedge709, label %227

227:                                              ; preds = %.critedge706
  %228 = getelementptr inbounds i8, ptr %226, i64 56
  %229 = call noundef ptr @_ZNK3HIR25TypeData_ErasedType_Inner9opt_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %228)
  %.not568 = icmp eq ptr %229, null
  br i1 %.not568, label %.critedge709, label %230

230:                                              ; preds = %227
  %231 = getelementptr inbounds i8, ptr %229, i64 24
  %232 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %231) #8
  %233 = getelementptr inbounds i8, ptr %0, i64 320
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %235 = invoke noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112) %232, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %236 unwind label %250

236:                                              ; preds = %230
  br i1 %235, label %237, label %.critedge709

237:                                              ; preds = %236
  %238 = getelementptr inbounds i8, ptr %0, i64 536
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %239 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #8
  store ptr %239, ptr %15, align 8, !tbaa !79
  %240 = invoke noundef i64 @_ZNKSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(48) %238, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %241 unwind label %252

241:                                              ; preds = %237
  %242 = icmp eq i64 %240, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br i1 %242, label %243, label %265

243:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %244 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #8
  store ptr %244, ptr %17, align 8, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %245 unwind label %254

245:                                              ; preds = %243
  invoke void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(24) %229, ptr noundef nonnull %19)
          to label %246 unwind label %256

246:                                              ; preds = %245
  invoke void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.158") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %247 unwind label %258

247:                                              ; preds = %246
  %248 = invoke { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %238, ptr noundef nonnull align 8 dereferenceable(40) %16)
          to label %249 unwind label %260

249:                                              ; preds = %247
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #8
  br label %.critedge705

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

252:                                              ; preds = %237
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %908

254:                                              ; preds = %243
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %264

256:                                              ; preds = %245
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %263

258:                                              ; preds = %246
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %262

260:                                              ; preds = %247
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  br label %262

262:                                              ; preds = %260, %258
  %.pn569 = phi { ptr, i32 } [ %261, %260 ], [ %259, %258 ]
  call void @_ZN7Context9TaitEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %263

263:                                              ; preds = %262, %256
  %.pn569.pn = phi { ptr, i32 } [ %.pn569, %262 ], [ %257, %256 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %264

264:                                              ; preds = %263, %254
  %.pn569.pn.pn = phi { ptr, i32 } [ %.pn569.pn, %263 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #8
  br label %908

265:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %266 = call noundef ptr @_ZNKSt12__shared_ptrIN3HIR30TypeData_ErasedType_AliasInnerELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #8
  store ptr %266, ptr %20, align 8, !tbaa !79
  %267 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48) %238, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %268 unwind label %271

268:                                              ; preds = %265
  %269 = getelementptr inbounds i8, ptr %267, i64 24
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %270 unwind label %271

270:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %.critedge705

271:                                              ; preds = %268, %265
  %272 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %908

.critedge709:                                     ; preds = %.critedge706, %227, %236
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  store ptr %0, ptr %21, align 8, !tbaa !80
  %273 = getelementptr inbounds i8, ptr %21, i64 8
  store ptr %1, ptr %273, align 8, !tbaa !79
  %274 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %275 unwind label %291

275:                                              ; preds = %.critedge709
  br i1 %274, label %276, label %293

276:                                              ; preds = %275
  %277 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !82
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %277, ptr noundef nonnull @__FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_)
          to label %279 unwind label %291

279:                                              ; preds = %276
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull @.str.17)
          to label %281 unwind label %291

281:                                              ; preds = %279
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %283 unwind label %291

283:                                              ; preds = %281
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull @.str.18)
          to label %285 unwind label %291

285:                                              ; preds = %283
  %286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %287 unwind label %291

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

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

291:                                              ; preds = %289, %287, %285, %283, %281, %279, %276, %.critedge709
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %907

293:                                              ; preds = %289, %275
  %294 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %295 = call noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %294)
  %.not574 = icmp eq ptr %295, null
  %296 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %297 = call noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %296)
  %.not575 = icmp eq ptr %297, null
  br i1 %.not574, label %343, label %298

298:                                              ; preds = %293
  br i1 %.not575, label %342, label %299

299:                                              ; preds = %298
  %300 = load i32, ptr %295, align 4, !tbaa !83
  %301 = zext i32 %300 to i64
  %302 = getelementptr inbounds i8, ptr %0, i64 472
  %303 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %302) #8
  %304 = icmp ugt i64 %303, %301
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  br i1 %304, label %305, label %314

305:                                              ; preds = %299
  %306 = load i32, ptr %295, align 4, !tbaa !83
  %307 = zext i32 %306 to i64
  %308 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %302, i64 noundef %307)
          to label %309 unwind label %334

309:                                              ; preds = %305
  %310 = extractvalue { ptr, i64 } %308, 0
  store ptr %310, ptr %22, align 8
  %311 = getelementptr inbounds i8, ptr %22, i64 8
  %312 = extractvalue { ptr, i64 } %308, 1
  store i64 %312, ptr %311, align 8
  %313 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22) #8
  br i1 %313, label %.critedge, label %314

314:                                              ; preds = %309, %299
  %315 = load i32, ptr %297, align 4, !tbaa !83
  %316 = zext i32 %315 to i64
  %317 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %302) #8
  %318 = icmp ugt i64 %317, %316
  br i1 %318, label %319, label %.critedge11

319:                                              ; preds = %314
  %320 = load i32, ptr %297, align 4, !tbaa !83
  %321 = zext i32 %320 to i64
  %322 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %302, i64 noundef %321)
          to label %323 unwind label %336

323:                                              ; preds = %319
  %324 = extractvalue { ptr, i64 } %322, 0
  store ptr %324, ptr %23, align 8
  %325 = getelementptr inbounds i8, ptr %23, i64 8
  %326 = extractvalue { ptr, i64 } %322, 1
  store i64 %326, ptr %325, align 8
  %327 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  br i1 %327, label %328, label %339

.critedge:                                        ; preds = %309
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  br label %328

328:                                              ; preds = %.critedge, %323
  invoke void @_ZN7Context13require_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %329 unwind label %332

329:                                              ; preds = %328
  invoke void @_ZN7Context13require_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %339 unwind label %332

330:                                              ; preds = %344
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %907

332:                                              ; preds = %342, %339, %329, %328
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %907

334:                                              ; preds = %305
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %338

336:                                              ; preds = %319
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %338

338:                                              ; preds = %336, %334
  %.pn687 = phi { ptr, i32 } [ %337, %336 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  br label %907

.critedge11:                                      ; preds = %314
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  br label %339

339:                                              ; preds = %329, %.critedge11, %323
  %340 = load i32, ptr %297, align 4, !tbaa !83
  %341 = load i32, ptr %295, align 4, !tbaa !83
  invoke void @_ZN16HMTypeInferrence10ivar_unifyEjj(ptr noundef nonnull align 8 dereferenceable(49) %105, i32 noundef %340, i32 noundef %341)
          to label %905 unwind label %332

342:                                              ; preds = %298
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %905 unwind label %332

343:                                              ; preds = %293
  br i1 %.not575, label %345, label %344

344:                                              ; preds = %343
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %905 unwind label %330

345:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  store ptr %1, ptr %24, align 8, !tbaa !79
  %346 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %0, ptr %346, align 8, !tbaa !86
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #8
  store ptr %24, ptr %25, align 8, !tbaa !79
  %347 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %0, ptr %347, align 8, !tbaa !88
  %348 = getelementptr inbounds i8, ptr %25, i64 16
  store ptr %1, ptr %348, align 8, !tbaa !79
  %349 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %350 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %349)
  br i1 %350, label %351, label %356

351:                                              ; preds = %345
  %352 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %353 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %352)
  br i1 %353, label %.critedge711, label %356

354:                                              ; preds = %382
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %904

356:                                              ; preds = %351, %345
  %357 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %358 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %357)
  br i1 %358, label %359, label %370

359:                                              ; preds = %356
  %360 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %361 = call noundef ptr @_ZNK3HIR8TypeData9opt_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %360)
  %.not682 = icmp eq ptr %361, null
  br i1 %.not682, label %.critedge711, label %362

362:                                              ; preds = %359
  %363 = load i32, ptr %361, align 4, !tbaa !83
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %364 unwind label %366

364:                                              ; preds = %362
  invoke void @_ZN16HMTypeInferrence11set_ivar_toEjN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %105, i32 noundef %363, ptr noundef nonnull %26)
          to label %365 unwind label %368

365:                                              ; preds = %364
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %.critedge711

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

368:                                              ; preds = %364
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %904

370:                                              ; preds = %356
  %371 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %372 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %371)
  %373 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %374 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %373)
  %.not576 = icmp eq i32 %372, %374
  br i1 %.not576, label %.lr.ph2758, label %375

375:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %376 unwind label %383

376:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #8
  store ptr %0, ptr %29, align 8, !tbaa !90
  %377 = getelementptr inbounds i8, ptr %29, i64 8
  store ptr %119, ptr %377, align 8, !tbaa !79
  %378 = getelementptr inbounds i8, ptr %29, i64 16
  store ptr %128, ptr %378, align 8, !tbaa !79
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %379 unwind label %385

379:                                              ; preds = %376
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef 0, ptr noundef nonnull %28)
          to label %380 unwind label %387

380:                                              ; preds = %379
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  %381 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %381, ptr noundef nonnull @.str.19)
          to label %382 unwind label %391

382:                                              ; preds = %380
  invoke void @__cxa_throw(ptr nonnull %381, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %354

383:                                              ; preds = %375
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %390

385:                                              ; preds = %376
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %389

387:                                              ; preds = %379
  %388 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %389

389:                                              ; preds = %387, %385
  %.pn679 = phi { ptr, i32 } [ %388, %387 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %390

390:                                              ; preds = %389, %383
  %.pn679.pn = phi { ptr, i32 } [ %.pn679, %389 ], [ %384, %383 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %904

391:                                              ; preds = %380
  %392 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %381) #8
  br label %904

.loopexit825:                                     ; preds = %870, %796, %591, %829, %814, %.preheader809.split, %.preheader723.split, %688, %.preheader797.split, %.preheader801.split, %.preheader821.split, %.preheader823.split, %832, %664, %469, %.preheader795.split, %.lr.ph2758, %.preheader741, %.preheader743, %.preheader727, %.lr.ph2158, %749, %761, %722, %696
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %905

.lr.ph2758:                                       ; preds = %370
  %393 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %119)
  %394 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %128)
  %395 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  switch i32 %395, label %.loopexit825 [
    i32 0, label %448
    i32 1, label %449
    i32 2, label %.preheader795.split
    i32 3, label %.preheader797.split
    i32 4, label %.preheader799.split
    i32 5, label %.preheader801.split
    i32 6, label %.lr.ph2166
    i32 7, label %.lr.ph2160
    i32 8, label %.lr.ph2020
    i32 9, label %.preheader809.split
    i32 10, label %.preheader811.split.split
    i32 11, label %.preheader813.split
    i32 12, label %.preheader815.split
    i32 13, label %.preheader817.split
    i32 14, label %.preheader819.split.split
    i32 15, label %.preheader821.split
    i32 16, label %.preheader823.split
  ]

.preheader823.split:                              ; preds = %.lr.ph2758
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %398 = load ptr, ptr %396, align 8
  %399 = load ptr, ptr %397, align 8
  %.not577 = icmp eq ptr %398, %399
  %.not577.fr = freeze i1 %.not577
  br i1 %.not577.fr, label %.loopexit825, label %.split942, !llvm.loop !92

.preheader821.split:                              ; preds = %.lr.ph2758
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %402 = load ptr, ptr %400, align 8
  %403 = load ptr, ptr %401, align 8
  %.not582 = icmp eq ptr %402, %403
  %.not582.fr = freeze i1 %.not582
  br i1 %.not582.fr, label %.loopexit825, label %.split1061, !llvm.loop !94

.preheader819.split.split:                        ; preds = %.lr.ph2758
  %404 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %405 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %406 = getelementptr inbounds i8, ptr %404, i64 96
  %407 = getelementptr inbounds i8, ptr %405, i64 96
  %408 = getelementptr inbounds i8, ptr %404, i64 120
  %409 = getelementptr inbounds i8, ptr %405, i64 120
  %410 = getelementptr inbounds i8, ptr %404, i64 112
  %411 = getelementptr inbounds i8, ptr %405, i64 112
  %412 = load i8, ptr %406, align 8, !tbaa !95, !range !120, !noundef !121
  %413 = load i8, ptr %407, align 8, !tbaa !95, !range !120, !noundef !121
  %.not587 = icmp eq i8 %412, %413
  br i1 %.not587, label %845, label %.split1181

.preheader817.split:                              ; preds = %.lr.ph2758
  %414 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %415 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %416 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(88) %414, ptr noundef nonnull align 8 dereferenceable(88) %415)
          to label %832 unwind label %.loopexit782.split

.preheader815.split:                              ; preds = %.lr.ph2758
  %417 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %418 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %419 = load i32, ptr %417, align 8, !tbaa !122
  %420 = load i32, ptr %418, align 8, !tbaa !122
  %.not597 = icmp eq i32 %419, %420
  br i1 %.not597, label %829, label %.split1476

.preheader813.split:                              ; preds = %.lr.ph2758
  %421 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %422 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %423 = getelementptr inbounds i8, ptr %421, i64 4
  %424 = getelementptr inbounds i8, ptr %422, i64 4
  %425 = load i32, ptr %423, align 4, !tbaa !125
  %426 = load i32, ptr %424, align 4, !tbaa !125
  %.not602 = icmp eq i32 %425, %426
  br i1 %.not602, label %814, label %.split1604

.preheader811.split.split:                        ; preds = %.lr.ph2758
  %427 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %428 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %429 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %427) #8
  %430 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %428) #8
  %.not607 = icmp eq i64 %429, %430
  br i1 %.not607, label %.preheader741, label %.split1736

.preheader809.split:                              ; preds = %.lr.ph2758
  %431 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull align 8 dereferenceable(8) %432)
          to label %.loopexit825 unwind label %.split1886, !llvm.loop !128

.preheader801.split:                              ; preds = %.lr.ph2758
  %433 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %434 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %435 = getelementptr inbounds i8, ptr %433, i64 8
  %436 = load i32, ptr %435, align 8
  %437 = getelementptr inbounds i8, ptr %434, i64 8
  %438 = load i32, ptr %437, align 8
  %.not664 = icmp eq i32 %436, %438
  %.not664.fr = freeze i1 %.not664
  br i1 %.not664.fr, label %.loopexit825, label %.split2173, !llvm.loop !129

.preheader799.split:                              ; preds = %.lr.ph2758
  %439 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %440 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %441 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(88) %439, ptr noundef nonnull align 8 dereferenceable(88) %440)
          to label %469 unwind label %.loopexit748.split

.preheader797.split:                              ; preds = %.lr.ph2758
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %443 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %444 = load i32, ptr %442, align 4
  %445 = load i32, ptr %443, align 4
  %.not673 = icmp eq i32 %444, %445
  %.not673.fr = freeze i1 %.not673
  br i1 %.not673.fr, label %.loopexit825, label %.split2465, !llvm.loop !130

.preheader795.split:                              ; preds = %.lr.ph2758
  %446 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %447 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  br label %.loopexit825

448:                                              ; preds = %.lr.ph2758
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2212, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

449:                                              ; preds = %.lr.ph2758
  %450 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %451 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %452 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.22, ptr %452, align 16, !tbaa !79
  invoke void @__cxa_throw(ptr nonnull %452, ptr nonnull @_ZTIPKc, ptr null) #9
          to label %910 unwind label %453

453:                                              ; preds = %449
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %904

455:                                              ; preds = %461
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split2465:                                       ; preds = %.preheader797.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %457 unwind label %462

457:                                              ; preds = %.split2465
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #8
  store ptr %119, ptr %32, align 8, !tbaa !79
  %458 = getelementptr inbounds i8, ptr %32, i64 8
  store ptr %128, ptr %458, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 0, ptr noundef nonnull %31)
          to label %459 unwind label %464

459:                                              ; preds = %457
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  %460 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %460, ptr noundef nonnull @.str.19)
          to label %461 unwind label %467

461:                                              ; preds = %459
  invoke void @__cxa_throw(ptr nonnull %460, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %455

462:                                              ; preds = %.split2465
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %466

464:                                              ; preds = %457
  %465 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br label %466

466:                                              ; preds = %464, %462
  %.pn674 = phi { ptr, i32 } [ %465, %464 ], [ %463, %462 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %904

467:                                              ; preds = %459
  %468 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %460) #8
  br label %904

.loopexit748.split:                               ; preds = %.preheader799.split
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp749:                            ; preds = %474
  %lpad.loopexit.split-lp751 = landingpad { ptr, i32 }
          cleanup
  br label %904

469:                                              ; preds = %.preheader799.split
  br i1 %441, label %.loopexit825, label %.split2317, !llvm.loop !131

.split2317:                                       ; preds = %469
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %470 unwind label %475

470:                                              ; preds = %.split2317
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #8
  store ptr %119, ptr %35, align 8, !tbaa !79
  %471 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %128, ptr %471, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(16) %35) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %33, i32 noundef 0, ptr noundef nonnull %34)
          to label %472 unwind label %477

472:                                              ; preds = %470
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  %473 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef nonnull @.str.19)
          to label %474 unwind label %480

474:                                              ; preds = %472
  invoke void @__cxa_throw(ptr nonnull %473, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp749

475:                                              ; preds = %.split2317
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %470
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %479

479:                                              ; preds = %477, %475
  %.pn669 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br label %904

480:                                              ; preds = %472
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %473) #8
  br label %904

482:                                              ; preds = %488
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split2173:                                       ; preds = %.preheader801.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %484 unwind label %489

484:                                              ; preds = %.split2173
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #8
  store ptr %119, ptr %38, align 8, !tbaa !79
  %485 = getelementptr inbounds i8, ptr %38, i64 8
  store ptr %128, ptr %485, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(16) %38) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef 0, ptr noundef nonnull %37)
          to label %486 unwind label %491

486:                                              ; preds = %484
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  %487 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %487, ptr noundef nonnull @.str.19)
          to label %488 unwind label %494

488:                                              ; preds = %486
  invoke void @__cxa_throw(ptr nonnull %487, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %482

489:                                              ; preds = %.split2173
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %493

491:                                              ; preds = %484
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %493

493:                                              ; preds = %491, %489
  %.pn665 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %904

494:                                              ; preds = %486
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %487) #8
  br label %904

.lr.ph2166:                                       ; preds = %.lr.ph2758
  %496 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %497 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %498 = getelementptr inbounds i8, ptr %496, i64 8
  %499 = getelementptr inbounds i8, ptr %497, i64 8
  %500 = getelementptr inbounds i8, ptr %496, i64 16
  %501 = getelementptr inbounds i8, ptr %497, i64 16
  %502 = getelementptr inbounds i8, ptr %496, i64 40
  %503 = getelementptr inbounds i8, ptr %497, i64 40
  %504 = getelementptr inbounds i8, ptr %496, i64 144
  %505 = getelementptr inbounds i8, ptr %497, i64 144
  %506 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %507 unwind label %.loopexit755

.loopexit755:                                     ; preds = %.lr.ph2166, %521
  %lpad.loopexit757 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp756:                            ; preds = %.invoke
  %lpad.loopexit.split-lp758 = landingpad { ptr, i32 }
          cleanup
  br label %904

507:                                              ; preds = %.lr.ph2166
  br i1 %506, label %508, label %521

508:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %509 unwind label %514

509:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #8
  store ptr %119, ptr %41, align 8, !tbaa !79
  %510 = getelementptr inbounds i8, ptr %41, i64 8
  store ptr %128, ptr %510, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef 0, ptr noundef nonnull %40)
          to label %511 unwind label %516

511:                                              ; preds = %509
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  %512 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %512, ptr noundef nonnull @.str.19)
          to label %.invoke unwind label %519

.invoke:                                          ; preds = %561, %511
  %513 = phi ptr [ %512, %511 ], [ %562, %561 ]
  invoke void @__cxa_throw(ptr nonnull %513, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont unwind label %.loopexit.split-lp756

.cont:                                            ; preds = %.invoke
  unreachable

514:                                              ; preds = %508
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %518

516:                                              ; preds = %509
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %518

518:                                              ; preds = %516, %514
  %.pn660 = phi { ptr, i32 } [ %517, %516 ], [ %515, %514 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %904

519:                                              ; preds = %511
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %512) #8
  br label %904

521:                                              ; preds = %507
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(24) %500, ptr noundef nonnull align 8 dereferenceable(24) %501)
          to label %522 unwind label %.loopexit755

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %523 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %502) #8
  store ptr %523, ptr %42, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %524 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %503) #8
  store ptr %524, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %525 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %502) #8
  store ptr %525, ptr %44, align 8
  %526 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  br i1 %526, label %.lr.ph2162, label %._crit_edge

._crit_edge:                                      ; preds = %552, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  %527 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %504) #8
  %528 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %505) #8
  %.not649 = icmp eq i64 %527, %528
  br i1 %.not649, label %.preheader727, label %558

.preheader727:                                    ; preds = %._crit_edge
  %529 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %504) #8
  %.not2762 = icmp eq i64 %529, 0
  br i1 %.not2762, label %.loopexit825, label %.lr.ph2164

.lr.ph2162:                                       ; preds = %522, %552
  %530 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  %531 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %532 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %533 unwind label %.loopexit734

533:                                              ; preds = %.lr.ph2162
  br i1 %532, label %534, label %547

534:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %535 unwind label %540

535:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #8
  store ptr %119, ptr %47, align 8, !tbaa !79
  %536 = getelementptr inbounds i8, ptr %47, i64 8
  store ptr %128, ptr %536, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(16) %47) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef 0, ptr noundef nonnull %46)
          to label %537 unwind label %542

537:                                              ; preds = %535
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  %538 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %538, ptr noundef nonnull @.str.19)
          to label %539 unwind label %545

539:                                              ; preds = %537
  invoke void @__cxa_throw(ptr nonnull %538, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp735

.loopexit734:                                     ; preds = %.lr.ph2162, %547
  %lpad.loopexit736 = landingpad { ptr, i32 }
          cleanup
  br label %557

.loopexit.split-lp735:                            ; preds = %539
  %lpad.loopexit.split-lp737 = landingpad { ptr, i32 }
          cleanup
  br label %557

540:                                              ; preds = %534
  %541 = landingpad { ptr, i32 }
          cleanup
  br label %544

542:                                              ; preds = %535
  %543 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  br label %544

544:                                              ; preds = %542, %540
  %.pn656 = phi { ptr, i32 } [ %543, %542 ], [ %541, %540 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  br label %557

545:                                              ; preds = %537
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %538) #8
  br label %557

547:                                              ; preds = %533
  %548 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  %549 = getelementptr inbounds i8, ptr %548, i64 40
  %550 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %551 = getelementptr inbounds i8, ptr %550, i64 40
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %552 unwind label %.loopexit734

552:                                              ; preds = %547
  %553 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 0) #8
  %554 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %555 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %502) #8
  store ptr %555, ptr %44, align 8
  %556 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  br i1 %556, label %.lr.ph2162, label %._crit_edge, !llvm.loop !132

557:                                              ; preds = %.loopexit734, %.loopexit.split-lp735, %545, %544
  %.pn658 = phi { ptr, i32 } [ %546, %545 ], [ %.pn656, %544 ], [ %lpad.loopexit736, %.loopexit734 ], [ %lpad.loopexit.split-lp737, %.loopexit.split-lp735 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %904

558:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %559 unwind label %563

559:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #8
  store ptr %119, ptr %50, align 8, !tbaa !79
  %560 = getelementptr inbounds i8, ptr %50, i64 8
  store ptr %128, ptr %560, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(16) %50) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 0, ptr noundef nonnull %49)
          to label %561 unwind label %565

561:                                              ; preds = %559
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  %562 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %562, ptr noundef nonnull @.str.19)
          to label %.invoke unwind label %568

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

565:                                              ; preds = %559
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %567

567:                                              ; preds = %565, %563
  %.pn654 = phi { ptr, i32 } [ %566, %565 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  br label %904

568:                                              ; preds = %561
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %562) #8
  br label %904

.lr.ph2164:                                       ; preds = %.preheader727, %591
  %570 = phi i64 [ %593, %591 ], [ 0, %.preheader727 ]
  %.05202163 = phi i32 [ %592, %591 ], [ 0, %.preheader727 ]
  %571 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %504, i64 noundef %570) #8
  %572 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %505, i64 noundef %570) #8
  %573 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %571, ptr noundef nonnull align 8 dereferenceable(8) %572)
          to label %574 unwind label %.loopexit729

574:                                              ; preds = %.lr.ph2164
  br i1 %573, label %575, label %588

575:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %576 unwind label %581

576:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #8
  store ptr %119, ptr %53, align 8, !tbaa !79
  %577 = getelementptr inbounds i8, ptr %53, i64 8
  store ptr %128, ptr %577, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(16) %53) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %51, i32 noundef 0, ptr noundef nonnull %52)
          to label %578 unwind label %583

578:                                              ; preds = %576
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  %579 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %579, ptr noundef nonnull @.str.19)
          to label %580 unwind label %586

580:                                              ; preds = %578
  invoke void @__cxa_throw(ptr nonnull %579, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp730

.loopexit729:                                     ; preds = %.lr.ph2164, %588
  %lpad.loopexit731 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp730:                            ; preds = %580
  %lpad.loopexit.split-lp732 = landingpad { ptr, i32 }
          cleanup
  br label %904

581:                                              ; preds = %575
  %582 = landingpad { ptr, i32 }
          cleanup
  br label %585

583:                                              ; preds = %576
  %584 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %585

585:                                              ; preds = %583, %581
  %.pn650 = phi { ptr, i32 } [ %584, %583 ], [ %582, %581 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %904

586:                                              ; preds = %578
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %579) #8
  br label %904

588:                                              ; preds = %574
  %589 = getelementptr inbounds i8, ptr %571, i64 8
  %590 = getelementptr inbounds i8, ptr %572, i64 8
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(24) %589, ptr noundef nonnull align 8 dereferenceable(24) %590)
          to label %591 unwind label %.loopexit729

591:                                              ; preds = %588
  %592 = add i32 %.05202163, 1
  %593 = zext i32 %592 to i64
  %594 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %504) #8
  %595 = icmp ugt i64 %594, %593
  br i1 %595, label %.lr.ph2164, label %.loopexit825, !llvm.loop !133

.lr.ph2160:                                       ; preds = %.lr.ph2758
  %596 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %597 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %598 = getelementptr inbounds i8, ptr %596, i64 56
  %599 = getelementptr inbounds i8, ptr %597, i64 56
  %600 = call noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %598)
  %601 = call noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %599)
  %.not624 = icmp eq i32 %600, %601
  br i1 %.not624, label %.lr.ph2158, label %604

602:                                              ; preds = %609
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %904

604:                                              ; preds = %.lr.ph2160
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %605 unwind label %610

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  store ptr %119, ptr %56, align 8, !tbaa !79
  %606 = getelementptr inbounds i8, ptr %56, i64 8
  store ptr %128, ptr %606, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef 0, ptr noundef nonnull %55)
          to label %607 unwind label %612

607:                                              ; preds = %605
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  %608 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %608, ptr noundef nonnull @.str.19)
          to label %609 unwind label %615

609:                                              ; preds = %607
  invoke void @__cxa_throw(ptr nonnull %608, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %602

610:                                              ; preds = %604
  %611 = landingpad { ptr, i32 }
          cleanup
  br label %614

612:                                              ; preds = %605
  %613 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %614

614:                                              ; preds = %612, %610
  %.pn645 = phi { ptr, i32 } [ %613, %612 ], [ %611, %610 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %904

615:                                              ; preds = %607
  %616 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %608) #8
  br label %904

.lr.ph2158:                                       ; preds = %.lr.ph2160
  %617 = call noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %598)
  switch i32 %617, label %.loopexit825 [
    i32 0, label %627
    i32 1, label %.preheader.split
    i32 3, label %.preheader721.split
    i32 2, label %.preheader723.split
  ]

.preheader723.split:                              ; preds = %.lr.ph2158
  %618 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(104) %598)
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(104) %599)
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 8 dereferenceable(8) %619)
          to label %.loopexit825 unwind label %.split2024, !llvm.loop !134

.preheader721.split:                              ; preds = %.lr.ph2158
  %620 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %598)
  %621 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104) %599)
  %622 = getelementptr inbounds i8, ptr %620, i64 24
  %623 = getelementptr inbounds i8, ptr %621, i64 24
  %624 = call noundef zeroext i1 @_ZStneIN3HIR30TypeData_ErasedType_AliasInnerES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %622, ptr noundef nonnull align 8 dereferenceable(16) %623) #8
  br i1 %624, label %.split2060, label %688

.preheader.split:                                 ; preds = %.lr.ph2158
  %625 = call noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104) %598)
  %626 = call noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104) %599)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %57) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %628 unwind label %.split2098

627:                                              ; preds = %.lr.ph2158
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2264, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

.loopexit712.split:                               ; preds = %662
  %lpad.loopexit2937 = landingpad { ptr, i32 }
          cleanup
  br label %904

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

628:                                              ; preds = %.preheader.split
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %57, ptr noundef nonnull %58)
          to label %629 unwind label %.split2101

629:                                              ; preds = %628
  %630 = invoke noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %625, ptr noundef nonnull align 8 dereferenceable(88) %57)
          to label %631 unwind label %.split2104

631:                                              ; preds = %629
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %57) #8
  br i1 %630, label %645, label %.split2107

.split2107:                                       ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %632 unwind label %638

632:                                              ; preds = %.split2107
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  store ptr %119, ptr %61, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull %60)
          to label %633 unwind label %640

633:                                              ; preds = %632
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  %634 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %634, ptr noundef nonnull @.str.16)
          to label %.invoke2954 unwind label %643

.invoke2954:                                      ; preds = %667, %651, %633
  %635 = phi ptr [ %634, %633 ], [ %652, %651 ], [ %668, %667 ]
  invoke void @__cxa_throw(ptr nonnull %635, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont2955 unwind label %.loopexit.split-lp

.cont2955:                                        ; preds = %.invoke2954
  unreachable

.split2098:                                       ; preds = %.preheader.split
  %lpad.loopexit2919 = landingpad { ptr, i32 }
          cleanup
  br label %637

.split2101:                                       ; preds = %628
  %lpad.loopexit2922 = landingpad { ptr, i32 }
          cleanup
  br label %636

.split2104:                                       ; preds = %629
  %lpad.loopexit2925 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #8
  br label %636

636:                                              ; preds = %.split2104, %.split2101
  %.pn629 = phi { ptr, i32 } [ %lpad.loopexit2925, %.split2104 ], [ %lpad.loopexit2922, %.split2101 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %637

637:                                              ; preds = %636, %.split2098
  %.pn629.pn = phi { ptr, i32 } [ %.pn629, %636 ], [ %lpad.loopexit2919, %.split2098 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %57) #8
  br label %904

638:                                              ; preds = %.split2107
  %639 = landingpad { ptr, i32 }
          cleanup
  br label %642

640:                                              ; preds = %632
  %641 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %642

642:                                              ; preds = %640, %638
  %.pn639 = phi { ptr, i32 } [ %641, %640 ], [ %639, %638 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  br label %904

643:                                              ; preds = %633
  %644 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %634) #8
  br label %904

645:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %62) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %646 unwind label %.split2109

646:                                              ; preds = %645
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %62, ptr noundef nonnull %63)
          to label %647 unwind label %.split2112

647:                                              ; preds = %646
  %648 = invoke noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %626, ptr noundef nonnull align 8 dereferenceable(88) %62)
          to label %649 unwind label %.split2115

649:                                              ; preds = %647
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %62) #8
  br i1 %648, label %662, label %.split2118

.split2118:                                       ; preds = %649
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %650 unwind label %655

650:                                              ; preds = %.split2118
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #8
  store ptr %128, ptr %66, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %651 unwind label %657

651:                                              ; preds = %650
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  %652 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %652, ptr noundef nonnull @.str.16)
          to label %.invoke2954 unwind label %660

.split2109:                                       ; preds = %645
  %lpad.loopexit2928 = landingpad { ptr, i32 }
          cleanup
  br label %654

.split2112:                                       ; preds = %646
  %lpad.loopexit2931 = landingpad { ptr, i32 }
          cleanup
  br label %653

.split2115:                                       ; preds = %647
  %lpad.loopexit2934 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #8
  br label %653

653:                                              ; preds = %.split2115, %.split2112
  %.pn632 = phi { ptr, i32 } [ %lpad.loopexit2934, %.split2115 ], [ %lpad.loopexit2931, %.split2112 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %654

654:                                              ; preds = %653, %.split2109
  %.pn632.pn = phi { ptr, i32 } [ %.pn632, %653 ], [ %lpad.loopexit2928, %.split2109 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %62) #8
  br label %904

655:                                              ; preds = %.split2118
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %659

657:                                              ; preds = %650
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %659

659:                                              ; preds = %657, %655
  %.pn637 = phi { ptr, i32 } [ %658, %657 ], [ %656, %655 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %904

660:                                              ; preds = %651
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %652) #8
  br label %904

662:                                              ; preds = %649
  %663 = invoke noundef zeroext i1 @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK4$_23clERKNS3_4PathESA_"(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(88) %625, ptr noundef nonnull align 8 dereferenceable(88) %626)
          to label %664 unwind label %.loopexit712.split

664:                                              ; preds = %662
  br i1 %663, label %.loopexit825, label %.split2121, !llvm.loop !135

.split2121:                                       ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %665 unwind label %669

665:                                              ; preds = %.split2121
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #8
  store ptr %119, ptr %69, align 8, !tbaa !79
  %666 = getelementptr inbounds i8, ptr %69, i64 8
  store ptr %128, ptr %666, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(16) %69) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef 0, ptr noundef nonnull %68)
          to label %667 unwind label %671

667:                                              ; preds = %665
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #8
  %668 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %668, ptr noundef nonnull @.str.19)
          to label %.invoke2954 unwind label %674

669:                                              ; preds = %.split2121
  %670 = landingpad { ptr, i32 }
          cleanup
  br label %673

671:                                              ; preds = %665
  %672 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  br label %673

673:                                              ; preds = %671, %669
  %.pn635 = phi { ptr, i32 } [ %672, %671 ], [ %670, %669 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #8
  br label %904

674:                                              ; preds = %667
  %675 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %668) #8
  br label %904

.loopexit714.split:                               ; preds = %688
  %lpad.loopexit716 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp715:                            ; preds = %680
  %lpad.loopexit.split-lp717 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split2060:                                       ; preds = %.preheader721.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %676 unwind label %681

676:                                              ; preds = %.split2060
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #8
  store ptr %119, ptr %72, align 8, !tbaa !79
  %677 = getelementptr inbounds i8, ptr %72, i64 8
  store ptr %128, ptr %677, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef 0, ptr noundef nonnull %71)
          to label %678 unwind label %683

678:                                              ; preds = %676
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  %679 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %679, ptr noundef nonnull @.str.19)
          to label %680 unwind label %686

680:                                              ; preds = %678
  invoke void @__cxa_throw(ptr nonnull %679, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp715

681:                                              ; preds = %.split2060
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %685

683:                                              ; preds = %676
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %685

685:                                              ; preds = %683, %681
  %.pn625 = phi { ptr, i32 } [ %684, %683 ], [ %682, %681 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  br label %904

686:                                              ; preds = %678
  %687 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %679) #8
  br label %904

688:                                              ; preds = %.preheader721.split
  invoke void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(24) %620, ptr noundef nonnull align 8 dereferenceable(24) %621)
          to label %.loopexit825 unwind label %.loopexit714.split, !llvm.loop !136

.split2024:                                       ; preds = %.preheader723.split
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %904

.lr.ph2020:                                       ; preds = %.lr.ph2758
  %690 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %393)
  %691 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %394)
  %692 = getelementptr inbounds i8, ptr %690, i64 8
  %693 = getelementptr inbounds i8, ptr %691, i64 8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %690, ptr noundef nonnull align 8 dereferenceable(8) %691)
          to label %694 unwind label %.loopexit762

.loopexit762:                                     ; preds = %.lr.ph2020, %694, %761
  %lpad.loopexit764 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp763:                            ; preds = %769
  %lpad.loopexit.split-lp765 = landingpad { ptr, i32 }
          cleanup
  br label %904

694:                                              ; preds = %.lr.ph2020
  %695 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySizeneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %692, ptr noundef nonnull align 8 dereferenceable(32) %693)
          to label %696 unwind label %.loopexit762

696:                                              ; preds = %694
  br i1 %695, label %697, label %.loopexit825

697:                                              ; preds = %696
  %698 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  br i1 %698, label %699, label %702

699:                                              ; preds = %697
  %700 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  %701 = call noundef zeroext i1 @_ZNK3HIR12ConstGeneric8is_InferEv(ptr noundef nonnull align 8 dereferenceable(24) %700)
  br i1 %701, label %707, label %702

702:                                              ; preds = %699, %697
  %703 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  br i1 %703, label %704, label %764

704:                                              ; preds = %702
  %705 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  %706 = call noundef zeroext i1 @_ZNK3HIR12ConstGeneric8is_InferEv(ptr noundef nonnull align 8 dereferenceable(24) %705)
  br i1 %706, label %707, label %764

707:                                              ; preds = %704, %699
  %708 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  br i1 %708, label %734, label %709

709:                                              ; preds = %707
  %710 = call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  br i1 %710, label %712, label %711

711:                                              ; preds = %709
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.21, i32 noundef 2289, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

712:                                              ; preds = %709
  %713 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  br i1 %713, label %715, label %714

714:                                              ; preds = %712
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.21, i32 noundef 2290, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

715:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %73) #8
  %716 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  %717 = load i64, ptr %716, align 8, !tbaa !137
  invoke void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteral) align 8 %75, i64 noundef %717)
          to label %718 unwind label %723

718:                                              ; preds = %715
  invoke void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %75)
          to label %719 unwind label %725

719:                                              ; preds = %718
  invoke void @_ZN3HIR12ConstGenericC2ENS_17EncodedLiteralPtrE(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull %74)
          to label %720 unwind label %727

720:                                              ; preds = %719
  %721 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 8 dereferenceable(24) %721)
          to label %722 unwind label %729

722:                                              ; preds = %720
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #8
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #8
  br label %.loopexit825

723:                                              ; preds = %715
  %724 = landingpad { ptr, i32 }
          cleanup
  br label %733

725:                                              ; preds = %718
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %732

727:                                              ; preds = %719
  %728 = landingpad { ptr, i32 }
          cleanup
  br label %731

729:                                              ; preds = %720
  %730 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #8
  br label %731

731:                                              ; preds = %729, %727
  %.pn614 = phi { ptr, i32 } [ %730, %729 ], [ %728, %727 ]
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %732

732:                                              ; preds = %731, %725
  %.pn614.pn = phi { ptr, i32 } [ %.pn614, %731 ], [ %726, %725 ]
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #8
  br label %733

733:                                              ; preds = %732, %723
  %.pn614.pn.pn = phi { ptr, i32 } [ %.pn614.pn, %732 ], [ %724, %723 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #8
  br label %904

734:                                              ; preds = %707
  %735 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  br i1 %735, label %761, label %736

736:                                              ; preds = %734
  %737 = call noundef zeroext i1 @_ZNK3HIR9ArraySize14is_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  br i1 %737, label %739, label %738

738:                                              ; preds = %736
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.21, i32 noundef 2294, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

739:                                              ; preds = %736
  %740 = call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  br i1 %740, label %742, label %741

741:                                              ; preds = %739
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.21, i32 noundef 2295, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_) #10
  unreachable

742:                                              ; preds = %739
  %743 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %76) #8
  %744 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  %745 = load i64, ptr %744, align 8, !tbaa !137
  invoke void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteral) align 8 %78, i64 noundef %745)
          to label %746 unwind label %750

746:                                              ; preds = %742
  invoke void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull %78)
          to label %747 unwind label %752

747:                                              ; preds = %746
  invoke void @_ZN3HIR12ConstGenericC2ENS_17EncodedLiteralPtrE(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull %77)
          to label %748 unwind label %754

748:                                              ; preds = %747
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %743, ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %749 unwind label %756

749:                                              ; preds = %748
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #8
  br label %.loopexit825

750:                                              ; preds = %742
  %751 = landingpad { ptr, i32 }
          cleanup
  br label %760

752:                                              ; preds = %746
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %759

754:                                              ; preds = %747
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %758

756:                                              ; preds = %748
  %757 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  br label %758

758:                                              ; preds = %756, %754
  %.pn618 = phi { ptr, i32 } [ %757, %756 ], [ %755, %754 ]
  call void @_ZN3HIR17EncodedLiteralPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %759

759:                                              ; preds = %758, %752
  %.pn618.pn = phi { ptr, i32 } [ %.pn618, %758 ], [ %753, %752 ]
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #8
  br label %760

760:                                              ; preds = %759, %750
  %.pn618.pn.pn = phi { ptr, i32 } [ %.pn618.pn, %759 ], [ %751, %750 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #8
  br label %904

761:                                              ; preds = %734
  %762 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %692)
  %763 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %693)
  invoke void @_ZN7Context13equate_valuesERK4SpanRKN3HIR12ConstGenericES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %762, ptr noundef nonnull align 8 dereferenceable(24) %763)
          to label %.loopexit825 unwind label %.loopexit762

764:                                              ; preds = %702, %704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %765 unwind label %770

765:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #8
  store ptr %119, ptr %81, align 8, !tbaa !79
  %766 = getelementptr inbounds i8, ptr %81, i64 8
  store ptr %128, ptr %766, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(16) %81) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 0, ptr noundef nonnull %80)
          to label %767 unwind label %772

767:                                              ; preds = %765
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  %768 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %768, ptr noundef nonnull @.str.19)
          to label %769 unwind label %775

769:                                              ; preds = %767
  invoke void @__cxa_throw(ptr nonnull %768, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp763

770:                                              ; preds = %764
  %771 = landingpad { ptr, i32 }
          cleanup
  br label %774

772:                                              ; preds = %765
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %774

774:                                              ; preds = %772, %770
  %.pn612 = phi { ptr, i32 } [ %773, %772 ], [ %771, %770 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  br label %904

775:                                              ; preds = %767
  %776 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %768) #8
  br label %904

.split1886:                                       ; preds = %.preheader809.split
  %777 = landingpad { ptr, i32 }
          cleanup
  br label %904

778:                                              ; preds = %785
  %779 = landingpad { ptr, i32 }
          cleanup
  br label %904

.preheader741:                                    ; preds = %.preheader811.split.split
  %780 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %427) #8
  %.not2761 = icmp eq i64 %780, 0
  br i1 %.not2761, label %.loopexit825, label %.lr.ph1733

.split1736:                                       ; preds = %.preheader811.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %781 unwind label %786

781:                                              ; preds = %.split1736
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #8
  store ptr %119, ptr %84, align 8, !tbaa !79
  %782 = getelementptr inbounds i8, ptr %84, i64 8
  store ptr %128, ptr %782, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(16) %84) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 0, ptr noundef nonnull %83)
          to label %783 unwind label %788

783:                                              ; preds = %781
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  %784 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %784, ptr noundef nonnull @.str.19)
          to label %785 unwind label %791

785:                                              ; preds = %783
  invoke void @__cxa_throw(ptr nonnull %784, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %778

786:                                              ; preds = %.split1736
  %787 = landingpad { ptr, i32 }
          cleanup
  br label %790

788:                                              ; preds = %781
  %789 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %790

790:                                              ; preds = %788, %786
  %.pn608 = phi { ptr, i32 } [ %789, %788 ], [ %787, %786 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  br label %904

791:                                              ; preds = %783
  %792 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %784) #8
  br label %904

.lr.ph1733:                                       ; preds = %.preheader741, %796
  %793 = phi i64 [ %798, %796 ], [ 0, %.preheader741 ]
  %.05251732 = phi i32 [ %797, %796 ], [ 0, %.preheader741 ]
  %794 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %427, i64 noundef %793) #8
  %795 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %428, i64 noundef %793) #8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %794, ptr noundef nonnull align 8 dereferenceable(8) %795)
          to label %796 unwind label %.split1738.split

796:                                              ; preds = %.lr.ph1733
  %797 = add i32 %.05251732, 1
  %798 = zext i32 %797 to i64
  %799 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %427) #8
  %800 = icmp ugt i64 %799, %798
  br i1 %800, label %.lr.ph1733, label %.loopexit825, !llvm.loop !138

.split1738.split:                                 ; preds = %.lr.ph1733
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit770.split:                               ; preds = %814
  %lpad.loopexit772 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp771:                            ; preds = %806
  %lpad.loopexit.split-lp773 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split1604:                                       ; preds = %.preheader813.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %802 unwind label %807

802:                                              ; preds = %.split1604
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #8
  store ptr %119, ptr %87, align 8, !tbaa !79
  %803 = getelementptr inbounds i8, ptr %87, i64 8
  store ptr %128, ptr %803, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef 0, ptr noundef nonnull %86)
          to label %804 unwind label %809

804:                                              ; preds = %802
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #8
  %805 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %805, ptr noundef nonnull @.str.19)
          to label %806 unwind label %812

806:                                              ; preds = %804
  invoke void @__cxa_throw(ptr nonnull %805, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp771

807:                                              ; preds = %.split1604
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %811

809:                                              ; preds = %802
  %810 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %811

811:                                              ; preds = %809, %807
  %.pn603 = phi { ptr, i32 } [ %810, %809 ], [ %808, %807 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #8
  br label %904

812:                                              ; preds = %804
  %813 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %805) #8
  br label %904

814:                                              ; preds = %.preheader813.split
  %815 = getelementptr inbounds i8, ptr %422, i64 8
  %816 = getelementptr inbounds i8, ptr %421, i64 8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %816, ptr noundef nonnull align 8 dereferenceable(8) %815)
          to label %.loopexit825 unwind label %.loopexit770.split, !llvm.loop !139

.loopexit776.split:                               ; preds = %829
  %lpad.loopexit778 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp777:                            ; preds = %821
  %lpad.loopexit.split-lp779 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split1476:                                       ; preds = %.preheader815.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %817 unwind label %822

817:                                              ; preds = %.split1476
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #8
  store ptr %119, ptr %90, align 8, !tbaa !79
  %818 = getelementptr inbounds i8, ptr %90, i64 8
  store ptr %128, ptr %818, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %88, i32 noundef 0, ptr noundef nonnull %89)
          to label %819 unwind label %824

819:                                              ; preds = %817
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  %820 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %820, ptr noundef nonnull @.str.19)
          to label %821 unwind label %827

821:                                              ; preds = %819
  invoke void @__cxa_throw(ptr nonnull %820, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp777

822:                                              ; preds = %.split1476
  %823 = landingpad { ptr, i32 }
          cleanup
  br label %826

824:                                              ; preds = %817
  %825 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %826

826:                                              ; preds = %824, %822
  %.pn598 = phi { ptr, i32 } [ %825, %824 ], [ %823, %822 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  br label %904

827:                                              ; preds = %819
  %828 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %820) #8
  br label %904

829:                                              ; preds = %.preheader815.split
  %830 = getelementptr inbounds i8, ptr %418, i64 8
  %831 = getelementptr inbounds i8, ptr %417, i64 8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %831, ptr noundef nonnull align 8 dereferenceable(8) %830)
          to label %.loopexit825 unwind label %.loopexit776.split, !llvm.loop !140

.loopexit782.split:                               ; preds = %.preheader817.split
  %lpad.loopexit2896 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp783:                            ; preds = %837
  %lpad.loopexit.split-lp785 = landingpad { ptr, i32 }
          cleanup
  br label %904

832:                                              ; preds = %.preheader817.split
  br i1 %416, label %.loopexit825, label %.split1351, !llvm.loop !141

.split1351:                                       ; preds = %832
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %833 unwind label %838

833:                                              ; preds = %.split1351
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #8
  store ptr %119, ptr %93, align 8, !tbaa !79
  %834 = getelementptr inbounds i8, ptr %93, i64 8
  store ptr %128, ptr %834, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(16) %93) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %91, i32 noundef 0, ptr noundef nonnull %92)
          to label %835 unwind label %840

835:                                              ; preds = %833
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  %836 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %836, ptr noundef nonnull @.str.19)
          to label %837 unwind label %843

837:                                              ; preds = %835
  invoke void @__cxa_throw(ptr nonnull %836, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp783

838:                                              ; preds = %.split1351
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %842

840:                                              ; preds = %833
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %842

842:                                              ; preds = %840, %838
  %.pn593 = phi { ptr, i32 } [ %841, %840 ], [ %839, %838 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  br label %904

843:                                              ; preds = %835
  %844 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %836) #8
  br label %904

.loopexit788.split.split:                         ; preds = %845, %865
  %lpad.loopexit790 = landingpad { ptr, i32 }
          cleanup
  br label %904

.loopexit.split-lp789:                            ; preds = %857
  %lpad.loopexit.split-lp791 = landingpad { ptr, i32 }
          cleanup
  br label %904

845:                                              ; preds = %.preheader819.split.split
  %846 = getelementptr inbounds i8, ptr %405, i64 104
  %847 = getelementptr inbounds i8, ptr %404, i64 104
  %848 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %847, ptr noundef nonnull align 8 dereferenceable(8) %846)
          to label %849 unwind label %.loopexit788.split.split

849:                                              ; preds = %845
  br i1 %848, label %.split1181, label %850

850:                                              ; preds = %849
  %851 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #8
  %852 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %409) #8
  %.not588 = icmp eq i64 %851, %852
  br i1 %.not588, label %865, label %.split1181

.split1181:                                       ; preds = %.preheader819.split.split, %849, %850
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %853 unwind label %858

853:                                              ; preds = %.split1181
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #8
  store ptr %119, ptr %96, align 8, !tbaa !79
  %854 = getelementptr inbounds i8, ptr %96, i64 8
  store ptr %128, ptr %854, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 0, ptr noundef nonnull %95)
          to label %855 unwind label %860

855:                                              ; preds = %853
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  %856 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %856, ptr noundef nonnull @.str.19)
          to label %857 unwind label %863

857:                                              ; preds = %855
  invoke void @__cxa_throw(ptr nonnull %856, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %.loopexit.split-lp789

858:                                              ; preds = %.split1181
  %859 = landingpad { ptr, i32 }
          cleanup
  br label %862

860:                                              ; preds = %853
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %862

862:                                              ; preds = %860, %858
  %.pn589 = phi { ptr, i32 } [ %861, %860 ], [ %859, %858 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br label %904

863:                                              ; preds = %855
  %864 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %856) #8
  br label %904

865:                                              ; preds = %850
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %411)
          to label %.preheader743 unwind label %.loopexit788.split.split

.preheader743:                                    ; preds = %865
  %866 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #8
  %.not2760 = icmp eq i64 %866, 0
  br i1 %.not2760, label %.loopexit825, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader743, %870
  %867 = phi i64 [ %872, %870 ], [ 0, %.preheader743 ]
  %.05021178 = phi i32 [ %871, %870 ], [ 0, %.preheader743 ]
  %868 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %408, i64 noundef %867) #8
  %869 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %867) #8
  invoke void @_ZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %868, ptr noundef nonnull align 8 dereferenceable(8) %869)
          to label %870 unwind label %.split1183.split

870:                                              ; preds = %.lr.ph
  %871 = add i32 %.05021178, 1
  %872 = zext i32 %871 to i64
  %873 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #8
  %874 = icmp ugt i64 %873, %872
  br i1 %874, label %.lr.ph, label %.loopexit825, !llvm.loop !142

.split1183.split:                                 ; preds = %.lr.ph
  %875 = landingpad { ptr, i32 }
          cleanup
  br label %904

876:                                              ; preds = %882
  %877 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split1061:                                       ; preds = %.preheader821.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %878 unwind label %883

878:                                              ; preds = %.split1061
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #8
  store ptr %119, ptr %99, align 8, !tbaa !79
  %879 = getelementptr inbounds i8, ptr %99, i64 8
  store ptr %128, ptr %879, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(16) %99) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %97, i32 noundef 0, ptr noundef nonnull %98)
          to label %880 unwind label %885

880:                                              ; preds = %878
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #8
  %881 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %881, ptr noundef nonnull @.str.19)
          to label %882 unwind label %888

882:                                              ; preds = %880
  invoke void @__cxa_throw(ptr nonnull %881, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %876

883:                                              ; preds = %.split1061
  %884 = landingpad { ptr, i32 }
          cleanup
  br label %887

885:                                              ; preds = %878
  %886 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br label %887

887:                                              ; preds = %885, %883
  %.pn583 = phi { ptr, i32 } [ %886, %885 ], [ %884, %883 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #8
  br label %904

888:                                              ; preds = %880
  %889 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %881) #8
  br label %904

890:                                              ; preds = %896
  %891 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split942:                                        ; preds = %.preheader823.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %892 unwind label %897

892:                                              ; preds = %.split942
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #8
  store ptr %119, ptr %102, align 8, !tbaa !79
  %893 = getelementptr inbounds i8, ptr %102, i64 8
  store ptr %128, ptr %893, align 8, !tbaa !79
  call void @"_ZNSt8functionIFvRSoEEC2IZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefESB_E4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(16) %102) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %100, i32 noundef 0, ptr noundef nonnull %101)
          to label %894 unwind label %899

894:                                              ; preds = %892
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #8
  %895 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %895, ptr noundef nonnull @.str.19)
          to label %896 unwind label %902

896:                                              ; preds = %894
  invoke void @__cxa_throw(ptr nonnull %895, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %910 unwind label %890

897:                                              ; preds = %.split942
  %898 = landingpad { ptr, i32 }
          cleanup
  br label %901

899:                                              ; preds = %892
  %900 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #8
  br label %901

901:                                              ; preds = %899, %897
  %.pn578 = phi { ptr, i32 } [ %900, %899 ], [ %898, %897 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #8
  br label %904

902:                                              ; preds = %894
  %903 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %895) #8
  br label %904

904:                                              ; preds = %.loopexit788.split.split, %.loopexit.split-lp789, %.loopexit782.split, %.loopexit.split-lp783, %.loopexit776.split, %.loopexit.split-lp777, %.loopexit770.split, %.loopexit.split-lp771, %.loopexit762, %.loopexit.split-lp763, %.loopexit714.split, %.loopexit.split-lp715, %.loopexit712.split, %.loopexit.split-lp, %.loopexit729, %.loopexit.split-lp730, %.loopexit755, %.loopexit.split-lp756, %.loopexit748.split, %.loopexit.split-lp749, %453, %.split1886, %467, %466, %455, %480, %479, %494, %493, %482, %585, %586, %568, %567, %557, %519, %518, %.split2024, %674, %673, %660, %659, %654, %643, %642, %637, %686, %685, %615, %614, %602, %775, %774, %760, %733, %.split1738.split, %791, %790, %778, %812, %811, %827, %826, %843, %842, %.split1183.split, %863, %862, %888, %887, %876, %902, %901, %890, %366, %368, %391, %390, %354
  %.pn683.pn = phi { ptr, i32 } [ %355, %354 ], [ %392, %391 ], [ %.pn679.pn, %390 ], [ %369, %368 ], [ %367, %366 ], [ %777, %.split1886 ], [ %454, %453 ], [ %456, %455 ], [ %468, %467 ], [ %.pn674, %466 ], [ %481, %480 ], [ %.pn669, %479 ], [ %483, %482 ], [ %495, %494 ], [ %.pn665, %493 ], [ %520, %519 ], [ %.pn660, %518 ], [ %.pn658, %557 ], [ %569, %568 ], [ %.pn654, %567 ], [ %587, %586 ], [ %.pn650, %585 ], [ %603, %602 ], [ %616, %615 ], [ %.pn645, %614 ], [ %689, %.split2024 ], [ %644, %643 ], [ %.pn639, %642 ], [ %661, %660 ], [ %.pn637, %659 ], [ %675, %674 ], [ %.pn635, %673 ], [ %.pn632.pn, %654 ], [ %.pn629.pn, %637 ], [ %687, %686 ], [ %.pn625, %685 ], [ %.pn618.pn.pn, %760 ], [ %.pn614.pn.pn, %733 ], [ %776, %775 ], [ %.pn612, %774 ], [ %779, %778 ], [ %792, %791 ], [ %.pn608, %790 ], [ %801, %.split1738.split ], [ %813, %812 ], [ %.pn603, %811 ], [ %828, %827 ], [ %.pn598, %826 ], [ %844, %843 ], [ %.pn593, %842 ], [ %864, %863 ], [ %.pn589, %862 ], [ %875, %.split1183.split ], [ %877, %876 ], [ %889, %888 ], [ %.pn583, %887 ], [ %891, %890 ], [ %903, %902 ], [ %.pn578, %901 ], [ %lpad.loopexit, %.loopexit748.split ], [ %lpad.loopexit.split-lp751, %.loopexit.split-lp749 ], [ %lpad.loopexit757, %.loopexit755 ], [ %lpad.loopexit.split-lp758, %.loopexit.split-lp756 ], [ %lpad.loopexit731, %.loopexit729 ], [ %lpad.loopexit.split-lp732, %.loopexit.split-lp730 ], [ %lpad.loopexit2937, %.loopexit712.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit716, %.loopexit714.split ], [ %lpad.loopexit.split-lp717, %.loopexit.split-lp715 ], [ %lpad.loopexit764, %.loopexit762 ], [ %lpad.loopexit.split-lp765, %.loopexit.split-lp763 ], [ %lpad.loopexit772, %.loopexit770.split ], [ %lpad.loopexit.split-lp773, %.loopexit.split-lp771 ], [ %lpad.loopexit778, %.loopexit776.split ], [ %lpad.loopexit.split-lp779, %.loopexit.split-lp777 ], [ %lpad.loopexit2896, %.loopexit782.split ], [ %lpad.loopexit.split-lp785, %.loopexit.split-lp783 ], [ %lpad.loopexit790, %.loopexit788.split.split ], [ %lpad.loopexit.split-lp791, %.loopexit.split-lp789 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %907

.critedge711:                                     ; preds = %359, %365, %351
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %905

905:                                              ; preds = %344, %342, %339, %.loopexit825, %.critedge711
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %.critedge705

.critedge705:                                     ; preds = %249, %270, %201, %222, %.critedge701, %.critedge697, %130, %905
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br label %906

906:                                              ; preds = %4, %104, %.critedge705
  ret void

907:                                              ; preds = %330, %904, %338, %332, %291
  %.pn689.pn.pn = phi { ptr, i32 } [ %292, %291 ], [ %331, %330 ], [ %.pn683.pn, %904 ], [ %333, %332 ], [ %.pn687, %338 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %908

908:                                              ; preds = %135, %907, %153, %151, %171, %169, %223, %216, %204, %202, %271, %264, %252, %250, %133
  %.pn689.pn.pn.pn.pn = phi { ptr, i32 } [ %134, %133 ], [ %.pn689.pn.pn, %907 ], [ %136, %135 ], [ %154, %153 ], [ %152, %151 ], [ %172, %171 ], [ %170, %169 ], [ %.pn562.pn.pn, %216 ], [ %224, %223 ], [ %205, %204 ], [ %203, %202 ], [ %.pn569.pn.pn, %264 ], [ %272, %271 ], [ %253, %252 ], [ %251, %250 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br label %909

909:                                              ; preds = %908, %131
  %.pn689.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn689.pn.pn.pn.pn, %908 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn689.pn.pn.pn.pn.pn

910:                                              ; preds = %896, %882, %857, %837, %821, %806, %785, %769, %680, %609, %580, %539, %488, %474, %461, %449, %382
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Context18equate_types_assocERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathENS3_10PathParamsES6_PKcb(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i1 noundef zeroext) local_unnamed_addr #2 align 2

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8)) local_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 #5 align 2

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

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

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

declare noundef zeroext i1 @_ZNK3HIR30TypeData_ErasedType_AliasInner12is_public_toERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE6insertIS7_IS2_S4_EEENSt9enable_ifIXsr16is_constructibleIS9_T_EE5valueES7_ISt17_Rb_tree_iteratorIS9_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.158") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #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 #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Context9TaitEntryC2ERKN3HIR10PathParamsENS1_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 align 2

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

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

declare void @_ZN16HMTypeInferrence10ivar_unifyEjj(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_0clES6_S6_"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare void @_ZN16HMTypeInferrence11set_ivar_toEjN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, ptr noundef) local_unnamed_addr #0

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_ENK3$_1clERKNS3_10PathParamsESA_"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(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 ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR25TypeData_ErasedType_Inner3tagEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(92) ptr @_ZNK3HIR25TypeData_ErasedType_Inner6as_FcnEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2 align 2

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #0

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR25TypeData_ErasedType_Inner8as_AliasEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #6 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR9ArraySizeneERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

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

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

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

declare void @_ZN14EncodedLiteral10make_usizeEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteral) align 8, i64 noundef) local_unnamed_addr #0

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

declare void @_ZN3HIR17EncodedLiteralPtrC1E14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 320}
!6 = !{!"_ZTS7Context", !7, i64 0, !10, i64 8, !14, i64 32, !24, i64 88, !47, i64 368, !48, i64 376, !52, i64 400, !56, i64 424, !60, i64 448, !64, i64 472, !70, i64 512, !74, i64 536, !41, i64 584}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt6vectorIN7Context7BindingESaIS1_EE", !11, i64 0}
!11 = !{!"_ZTSSt12_Vector_baseIN7Context7BindingESaIS1_EE", !12, i64 0}
!12 = !{!"_ZTSNSt12_Vector_baseIN7Context7BindingESaIS1_EE12_Vector_implE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIN7Context7BindingESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!14 = !{!"_ZTS16HMTypeInferrence", !15, i64 0, !19, i64 24, !23, i64 48}
!15 = !{!"_ZTSSt6vectorIN16HMTypeInferrence4IVarESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence4IVarESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"_ZTSSt6vectorIN16HMTypeInferrence9IVarValueESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN16HMTypeInferrence9IVarValueESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!23 = !{!"bool", !8, i64 0}
!24 = !{!"_ZTS15TraitResolution", !25, i64 0, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !43, i64 256}
!25 = !{!"_ZTS18TraitResolveCommon", !7, i64 0, !7, i64 8, !7, i64 16, !26, i64 24, !35, i64 72, !41, i64 104, !41, i64 112, !41, i64 120, !41, i64 128, !41, i64 136, !41, i64 144, !41, i64 152, !41, i64 160, !41, i64 168, !41, i64 176, !41, i64 184, !41, i64 192, !41, i64 200, !41, i64 208}
!26 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !27, i64 0}
!27 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !28, i64 0}
!28 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !29, i64 0, !31, i64 8}
!29 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !30, i64 0}
!30 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!31 = !{!"_ZTSSt15_Rb_tree_header", !32, i64 0, !34, i64 32}
!32 = !{!"_ZTSSt18_Rb_tree_node_base", !33, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!33 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!34 = !{!"long", !8, i64 0}
!35 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !36, i64 0, !40, i64 24}
!36 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!40 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!41 = !{!"_ZTSN3HIR10SimplePathE", !42, i64 0}
!42 = !{!"_ZTS10ThinVectorI8RcStringE", !7, i64 0}
!43 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!47 = !{!"int", !8, i64 0}
!48 = !{!"_ZTSSt6vectorISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context8CoercionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!52 = !{!"_ZTSSt6vectorIN7Context10AssociatedESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN7Context10AssociatedESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN7Context10AssociatedESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN7Context10AssociatedESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!56 = !{!"_ZTSSt6vectorIPN3HIR8ExprNodeESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN3HIR8ExprNodeESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!60 = !{!"_ZTSSt6vectorISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN7Context9RevisitorESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!64 = !{!"_ZTSSt6vectorIbSaIbEE", !65, i64 0}
!65 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !66, i64 0}
!66 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !68, i64 0, !68, i64 16, !7, i64 32}
!68 = !{!"_ZTSSt13_Bit_iterator", !69, i64 0}
!69 = !{!"_ZTSSt18_Bit_iterator_base", !7, i64 0, !47, i64 8}
!70 = !{!"_ZTSSt6vectorIN7Context12IVarPossibleESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN7Context12IVarPossibleESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!74 = !{!"_ZTSSt3mapIPN3HIR30TypeData_ErasedType_AliasInnerEN7Context9TaitEntryESt4lessIS2_ESaISt4pairIKS2_S4_EEE", !75, i64 0}
!75 = !{!"_ZTSSt8_Rb_treeIPN3HIR30TypeData_ErasedType_AliasInnerESt4pairIKS2_N7Context9TaitEntryEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE", !76, i64 0}
!76 = !{!"_ZTSNSt8_Rb_treeIPN3HIR30TypeData_ErasedType_AliasInnerESt4pairIKS2_N7Context9TaitEntryEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !77, i64 0, !31, i64 8}
!77 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPN3HIR30TypeData_ErasedType_AliasInnerEEE", !78, i64 0}
!78 = !{!"_ZTSSt4lessIPN3HIR30TypeData_ErasedType_AliasInnerEE"}
!79 = !{!7, !7, i64 0}
!80 = !{!81, !7, i64 0}
!81 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_0", !7, i64 0, !7, i64 8}
!82 = !{!47, !47, i64 0}
!83 = !{!84, !47, i64 0}
!84 = !{!"_ZTSN3HIR8TypeData10Data_InferE", !47, i64 0, !85, i64 4}
!85 = !{!"_ZTSN3HIR10InferClassE", !8, i64 0}
!86 = !{!87, !7, i64 8}
!87 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_1", !7, i64 0, !7, i64 8}
!88 = !{!89, !7, i64 8}
!89 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E4$_23", !7, i64 0, !7, i64 8, !7, i64 16}
!90 = !{!91, !7, i64 0}
!91 = !{!"_ZTSZN7Context18equate_types_innerERK4SpanRKN3HIR7TypeRefES6_E3$_2", !7, i64 0, !7, i64 8, !7, i64 16}
!92 = distinct !{!92, !93}
!93 = !{!"llvm.loop.mustprogress"}
!94 = distinct !{!94, !93}
!95 = !{!96, !23, i64 96}
!96 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !97, i64 0, !23, i64 96, !23, i64 97, !114, i64 104, !115, i64 112, !116, i64 120}
!97 = !{!"_ZTSN3HIR13GenericParamsE", !98, i64 0, !102, i64 24, !106, i64 48, !110, i64 72}
!98 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!102 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!106 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!110 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!114 = !{!"_ZTS8RcString", !7, i64 0}
!115 = !{!"_ZTSN3HIR7TypeRefE", !7, i64 0}
!116 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !117, i64 0}
!117 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !118, i64 0}
!118 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !119, i64 0}
!119 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!120 = !{i8 0, i8 2}
!121 = !{}
!122 = !{!123, !124, i64 0}
!123 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !124, i64 0, !115, i64 8}
!124 = !{!"_ZTSN3HIR10BorrowTypeE", !8, i64 0}
!125 = !{!126, !124, i64 4}
!126 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !127, i64 0, !124, i64 4, !115, i64 8}
!127 = !{!"_ZTSN3HIR11LifetimeRefE", !47, i64 0}
!128 = distinct !{!128, !93}
!129 = distinct !{!129, !93}
!130 = distinct !{!130, !93}
!131 = distinct !{!131, !93}
!132 = distinct !{!132, !93}
!133 = distinct !{!133, !93}
!134 = distinct !{!134, !93}
!135 = distinct !{!135, !93}
!136 = distinct !{!136, !93}
!137 = !{!34, !34, i64 0}
!138 = distinct !{!138, !93}
!139 = distinct !{!139, !93}
!140 = distinct !{!140, !93}
!141 = distinct !{!141, !93}
!142 = distinct !{!142, !93}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass