; LLVM IR from thepowersgang/mrustc :: src/hir/from_ast.ll (Z13LowerHIR_TypeRK7TypeRef)

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

%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.(anonymous namespace)::ImplTraitSource" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { 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.285 = type { i8 }
%class.anon.287 = type { i8 }
%class.anon.289 = type { ptr }
%class.anon.290 = type { i8 }
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = 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 }
%"class.__gnu_cxx::__normal_iterator.292" = type { ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%class.U128 = type { i64, i64 }
%class.anon.293 = type { ptr, ptr }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%class.RcString = type { ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.145", [8 x i8] }
%"class.std::unique_ptr.145" = type { %"struct.std::__uniq_ptr_data.146" }
%"struct.std::__uniq_ptr_data.146" = type { %"class.std::__uniq_ptr_impl.147" }
%"class.std::__uniq_ptr_impl.147" = type { %"class.std::tuple.148" }
%"class.std::tuple.148" = type { %"struct.std::_Tuple_impl.149" }
%"struct.std::_Tuple_impl.149" = type { %"struct.std::_Head_base.152" }
%"struct.std::_Head_base.152" = type { ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.93", %"class.std::vector.93", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::ConstGeneric::InferData" = type { i32 }
%class.anon.294 = type { ptr }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.83", %"class.std::vector.83", %"class.std::vector.88" }
%"class.std::vector.83" = type { %"struct.std::_Vector_base.84" }
%"struct.std::_Vector_base.84" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, 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.106" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.114, %class.ThinVector.115, %class.ThinVector.116 }
%class.ThinVector.114 = type { ptr }
%class.ThinVector.115 = type { ptr }
%class.ThinVector.116 = type { ptr }
%"class.std::unique_ptr.106" = type { %"struct.std::__uniq_ptr_data.107" }
%"struct.std::__uniq_ptr_data.107" = type { %"class.std::__uniq_ptr_impl.108" }
%"class.std::__uniq_ptr_impl.108" = type { %"class.std::tuple.109" }
%"class.std::tuple.109" = type { %"struct.std::_Tuple_impl.110" }
%"struct.std::_Tuple_impl.110" = type { %"struct.std::_Head_base.113" }
%"struct.std::_Head_base.113" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.132", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.106", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.120", ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.120" = type { %"class.std::_Rb_tree.121" }
%"class.std::_Rb_tree.121" = 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.132" = type { %"struct.std::_Vector_base.133" }
%"struct.std::_Vector_base.133" = 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 }
%class.anon.295 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.296" = type { ptr }
%"class.std::span" = type { ptr, i64 }
%class.anon.358 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.359" = type { ptr }
%"class.HIR::TypeData" = type { i32, %"union.HIR::TypeData::DataUnion" }
%"union.HIR::TypeData::DataUnion" = type { %"struct.HIR::TypeData_ErasedType", [16 x i8] }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.126", %"class.std::vector.137", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = 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.137" = type { %"struct.std::_Vector_base.138" }
%"struct.std::_Vector_base.138" = 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.142" }
%"class.std::shared_ptr.142" = type { %"class.std::__shared_ptr.143" }
%"class.std::__shared_ptr.143" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.anon.360 = type { i8 }
%class.anon.362 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.363" = type { ptr }
%class.anon.364 = type { ptr }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn" = type <{ %"class.HIR::Path", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = 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.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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.__gnu_cxx::__normal_iterator.259" = type { ptr }
%"struct.HIR::LifetimeDef" = type { %class.RcString }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.93" }
%"struct.TypeData::Data_Primitive" = type { i32 }
%"struct.TypeData::Data_Tuple" = type { %"class.std::vector.67" }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<TypeRef, std::allocator<TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<TypeRef, std::allocator<TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<TypeRef, std::allocator<TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TypeRef, std::allocator<TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.TypeData::Data_Borrow" = type { %"class.AST::LifetimeRef", i8, %"class.std::unique_ptr.59" }
%"class.AST::LifetimeRef" = type <{ %struct.Ident, i16, [6 x i8] }>
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::unique_ptr.59" = type { %"struct.std::__uniq_ptr_data.60" }
%"struct.std::__uniq_ptr_data.60" = type { %"class.std::__uniq_ptr_impl.61" }
%"class.std::__uniq_ptr_impl.61" = type { %"class.std::tuple.62" }
%"class.std::tuple.62" = type { %"struct.std::_Tuple_impl.63" }
%"struct.std::_Tuple_impl.63" = type { %"struct.std::_Head_base.66" }
%"struct.std::_Head_base.66" = type { ptr }
%"struct.TypeData::Data_Pointer" = type { i8, %"class.std::unique_ptr.59" }
%"struct.TypeData::Data_Array" = type { %"class.std::unique_ptr.59", %"class.std::shared_ptr.72" }
%"class.std::shared_ptr.72" = type { %"class.std::__shared_ptr.73" }
%"class.std::__shared_ptr.73" = type { ptr, %"class.std::__shared_count" }
%"struct.AST::ExprNode_Integer" = type { %"class.AST::ExprNode", i32, %class.U128 }
%"class.AST::ExprNode" = type { ptr, %"class.AST::AttributeList", %struct.Span }
%"class.AST::AttributeList" = type { %"class.std::vector.38" }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::ExprNode_NamedValue" = type { %"class.AST::ExprNode", %"class.AST::Path" }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.59", %"class.std::unique_ptr.75", %"class.std::vector.99" }
%"class.std::unique_ptr.75" = type { %"struct.std::__uniq_ptr_data.76" }
%"struct.std::__uniq_ptr_data.76" = type { %"class.std::__uniq_ptr_impl.77" }
%"class.std::__uniq_ptr_impl.77" = type { %"class.std::tuple.78" }
%"class.std::tuple.78" = type { %"struct.std::_Tuple_impl.79" }
%"struct.std::_Tuple_impl.79" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.104", %"struct.AST::PathBinding.105" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.104" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.105" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"struct.AST::PathBinding_Value::Data_Generic" = type { i32 }
%"struct.TypeData::Data_Slice" = type { %"class.std::unique_ptr.59" }
%"struct.AST::PathBinding_Type::Data_TypeParameter" = type { i32 }
%"struct.AST::Path::Class::Data_Local" = type { %class.RcString }
%"struct.TypeData::Data_TraitObject" = type { %"class.std::vector.83", %"class.std::vector.88" }
%struct.Type_TraitPath = type { %"class.AST::HigherRankedBounds", %"class.std::unique_ptr.75" }
%"class.AST::HigherRankedBounds" = type { %"class.std::vector.51" }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::PathBinding_Type::Data_Trait" = type { ptr, ptr }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.126", i8, %"class.std::unordered_map", %"class.std::unordered_map.317", %"class.std::unordered_multimap", %"class.std::unordered_map.344", i32, %"class.std::vector.126", %"struct.HIR::SimplePath" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.317" = type { %"class.std::_Hashtable.318" }
%"class.std::_Hashtable.318" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.331" }
%"class.std::_Hashtable.331" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.344" = type { %"class.std::_Hashtable.345" }
%"class.std::_Hashtable.345" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.TypeData::Data_Function" = type { %struct.Type_Function }
%struct.Type_Function = type <{ %"class.AST::HigherRankedBounds", i8, [7 x i8], %"class.std::__cxx11::basic_string", %"class.std::unique_ptr.59", %"class.std::vector.67", i8, [7 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.TypeData::Data_Generic" = type <{ %class.RcString, i32, [4 x i8] }>

@path_Sized = external dso_local global %"struct.HIR::SimplePath", align 8
@.str.5 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZTIN3AST8ExprNodeE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN3AST19ExprNode_NamedValueE = external constant ptr
@g_debug_indent_level = external global i32, align 4
@_ZN12_GLOBAL__N_119g_impl_trait_sourceE = external hidden global %"struct.(anonymous namespace)::ImplTraitSource", align 8
@__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef = external hidden unnamed_addr constant [48 x i8], align 1
@__func__._Z13LowerHIR_TypeRK7TypeRef = external hidden unnamed_addr constant [14 x i8], align 1
@_ZTIN3AST16ExprNode_IntegerE = external constant ptr
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca ptr, align 8
  %10 = alloca %struct.Span, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.285, align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i8, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca ptr, align 8
  %23 = alloca %struct.Span, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.287, align 1
  %26 = alloca i8, align 1
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %struct.Span, align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.289, align 8
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function", align 8
  %34 = alloca %class.anon.290, align 1
  %35 = alloca i8, align 1
  %36 = alloca ptr, align 8
  %37 = alloca %"class.std::vector.93", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %"class.std::vector.93", align 8
  %44 = alloca i8, align 1
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"struct.HIR::LifetimeRef", align 4
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca ptr, align 8
  %57 = alloca %class.U128, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.293, align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"struct.HIR::GenericRef", align 8
  %64 = alloca %class.RcString, align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = alloca %"class.HIR::ConstGeneric", align 8
  %67 = alloca %"struct.HIR::GenericRef", align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %"class.HIR::ConstGeneric", align 8
  %70 = alloca %"class.std::unique_ptr.145", align 8
  %71 = alloca %"class.HIR::ExprPtr", align 8
  %72 = alloca %"class.HIR::TypeRef", align 8
  %73 = alloca %"class.HIR::ConstGeneric", align 8
  %74 = alloca %"struct.HIR::ConstGeneric::InferData", align 4
  %75 = alloca i8, align 1
  %76 = alloca ptr, align 8
  %77 = alloca %"class.HIR::TypeRef", align 8
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca i8, align 1
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca ptr, align 8
  %84 = alloca %struct.Span, align 8
  %85 = alloca %"class.std::function", align 8
  %86 = alloca %class.anon.294, align 8
  %87 = alloca %class.RcString, align 8
  %88 = alloca %class.TypeRef, align 8
  %89 = alloca %struct.Span, align 8
  %90 = alloca %"class.HIR::Path", align 8
  %91 = alloca %"class.HIR::TypePathBinding", align 8
  %92 = alloca i8, align 1
  %93 = alloca ptr, align 8
  %94 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %95 = alloca %"struct.HIR::LifetimeRef", align 4
  %96 = alloca %struct.Span, align 8
  %97 = alloca %"class.std::function", align 8
  %98 = alloca %class.anon.295, align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.HIR::GenericPath", align 8
  %105 = alloca %"class.std::span", align 8
  %106 = alloca %struct.Span, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.358, align 8
  %109 = alloca %"class.HIR::TraitPath", align 8
  %110 = alloca %"class.__gnu_cxx::__normal_iterator.359", align 8
  %111 = alloca %"class.__gnu_cxx::__normal_iterator.359", align 8
  %112 = alloca %"class.HIR::TypeData", align 8
  %113 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %114 = alloca i8, align 1
  %115 = alloca ptr, align 8
  %116 = alloca %struct.Span, align 8
  %117 = alloca %"class.std::function", align 8
  %118 = alloca %class.anon.360, align 1
  %119 = alloca %"class.std::vector.126", align 8
  %120 = alloca ptr, align 8
  %121 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %122 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %123 = alloca ptr, align 8
  %124 = alloca %"class.HIR::TraitPath", align 8
  %125 = alloca i8, align 1
  %126 = alloca ptr, align 8
  %127 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %128 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %129 = alloca ptr, align 8
  %130 = alloca %"class.HIR::TraitPath", align 8
  %131 = alloca ptr, align 8
  %132 = alloca %struct.Span, align 8
  %133 = alloca %"class.std::function", align 8
  %134 = alloca %class.anon.362, align 8
  %135 = alloca %"class.std::vector.137", align 8
  %136 = alloca ptr, align 8
  %137 = alloca %"class.__gnu_cxx::__normal_iterator.363", align 8
  %138 = alloca %"class.__gnu_cxx::__normal_iterator.363", align 8
  %139 = alloca ptr, align 8
  %140 = alloca %"struct.HIR::LifetimeRef", align 4
  %141 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %142 = alloca ptr, align 8
  %143 = alloca %struct.Span, align 8
  %144 = alloca %"class.std::function", align 8
  %145 = alloca %class.anon.364, align 8
  %146 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %147 = alloca %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", align 8
  %148 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %149 = alloca %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", align 8
  %150 = alloca %"struct.HIR::SimplePath", align 8
  %151 = alloca %"class.HIR::TypeData", align 8
  %152 = alloca %"struct.HIR::TypeData_ErasedType", align 8
  %153 = alloca i8, align 1
  %154 = alloca ptr, align 8
  %155 = alloca %"class.HIR::GenericParams", align 8
  %156 = alloca ptr, align 8
  %157 = alloca %"class.__gnu_cxx::__normal_iterator.259", align 8
  %158 = alloca %"class.__gnu_cxx::__normal_iterator.259", align 8
  %159 = alloca ptr, align 8
  %160 = alloca %"struct.HIR::LifetimeDef", align 8
  %161 = alloca %"class.std::vector.93", align 8
  %162 = alloca ptr, align 8
  %163 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %164 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %165 = alloca ptr, align 8
  %166 = alloca %"class.HIR::TypeRef", align 8
  %167 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %168 = alloca %class.RcString, align 8
  %169 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %170 = alloca i8, align 1
  %171 = alloca ptr, align 8
  %172 = alloca %class.RcString, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #10
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %173

173:                                              ; preds = %1766, %2
  %174 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %175 = trunc i8 %174 to i1
  br i1 %175, label %177, label %176

176:                                              ; preds = %173
  store i32 2, ptr %6, align 4
  br label %1767

177:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %class.TypeRef, ptr %178, i32 0, i32 1
  store ptr %179, ptr %7, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %1761, %177
  %181 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %182 = trunc i8 %181 to i1
  br i1 %182, label %184, label %183

183:                                              ; preds = %180
  store i32 5, ptr %6, align 4
  br label %1762

184:                                              ; preds = %180
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = call noundef i32 @_ZNK8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %185)
  switch i32 %186, label %1760 [
    i32 0, label %187
    i32 1, label %188
    i32 3, label %223
    i32 2, label %245
    i32 4, label %267
    i32 5, label %289
    i32 6, label %324
    i32 8, label %404
    i32 9, label %460
    i32 10, label %504
    i32 11, label %541
    i32 12, label %771
    i32 14, label %807
    i32 15, label %929
    i32 16, label %1227
    i32 7, label %1566
    i32 13, label %1720
  ]

187:                                              ; preds = %184
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 854, ptr noundef @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #10
  store i8 1, ptr %8, align 1, !tbaa !9
  br label %189

189:                                              ; preds = %221, %188
  %190 = load i8, ptr %8, align 1, !tbaa !9, !range !11, !noundef !12
  %191 = trunc i8 %190 to i1
  br i1 %191, label %193, label %192

192:                                              ; preds = %189
  store i32 9, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #10
  br label %222

193:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(112) %194)
  store ptr %195, ptr %9, align 8, !tbaa !5
  br label %196

196:                                              ; preds = %218, %193
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = load i8, ptr %8, align 1, !tbaa !9, !range !11, !noundef !12
  %199 = trunc i8 %198 to i1
  br i1 %199, label %201, label %200

200:                                              ; preds = %196
  store i32 12, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %220

201:                                              ; preds = %196
  br label %202

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %203)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %204)
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %11)
          to label %205 unwind label %208

205:                                              ; preds = %202
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  %206 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %206, ptr noundef @.str.9)
          to label %207 unwind label %212

207:                                              ; preds = %205
  call void @__cxa_throw(ptr %206, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

208:                                              ; preds = %202
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %13, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %219

212:                                              ; preds = %205
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %13, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %14, align 4
  call void @__cxa_free_exception(ptr %206) #10
  br label %219

216:                                              ; No predecessors!
  br label %217

217:                                              ; preds = %216
  br label %218

218:                                              ; preds = %217
  store i8 0, ptr %8, align 1, !tbaa !9
  br label %196, !llvm.loop !13

219:                                              ; preds = %212, %208
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #10
  br label %1764

220:                                              ; preds = %200
  br label %221

221:                                              ; preds = %220
  store i8 0, ptr %8, align 1, !tbaa !9
  br label %189, !llvm.loop !15

222:                                              ; preds = %192
  br label %1760

223:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #10
  store i8 1, ptr %15, align 1, !tbaa !9
  br label %224

224:                                              ; preds = %241, %223
  %225 = load i8, ptr %15, align 1, !tbaa !9, !range !11, !noundef !12
  %226 = trunc i8 %225 to i1
  br i1 %226, label %228, label %227

227:                                              ; preds = %224
  store i32 17, ptr %6, align 4
  br label %242

228:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %229 = load ptr, ptr %7, align 8, !tbaa !5
  %230 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_BangEv(ptr noundef nonnull align 8 dereferenceable(112) %229)
  store ptr %230, ptr %16, align 8, !tbaa !5
  br label %231

231:                                              ; preds = %237, %228
  %232 = load ptr, ptr %16, align 8, !tbaa !5
  %233 = load i8, ptr %15, align 1, !tbaa !9, !range !11, !noundef !12
  %234 = trunc i8 %233 to i1
  br i1 %234, label %236, label %235

235:                                              ; preds = %231
  store i32 20, ptr %6, align 4
  br label %238

236:                                              ; preds = %231
  call void @_ZN3HIR7TypeRef11new_divergeEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0)
  store i32 1, ptr %6, align 4
  br label %238

237:                                              ; No predecessors!
  store i8 0, ptr %15, align 1, !tbaa !9
  br label %231, !llvm.loop !16

238:                                              ; preds = %236, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  %239 = load i32, ptr %6, align 4
  switch i32 %239, label %242 [
    i32 20, label %240
  ]

240:                                              ; preds = %238
  br label %241

241:                                              ; preds = %240
  store i8 0, ptr %15, align 1, !tbaa !9
  br label %224, !llvm.loop !17

242:                                              ; preds = %238, %227
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #10
  %243 = load i32, ptr %6, align 4
  switch i32 %243, label %1762 [
    i32 17, label %244
  ]

244:                                              ; preds = %242
  br label %1760

245:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #10
  store i8 1, ptr %17, align 1, !tbaa !9
  br label %246

246:                                              ; preds = %263, %245
  %247 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %248 = trunc i8 %247 to i1
  br i1 %248, label %250, label %249

249:                                              ; preds = %246
  store i32 23, ptr %6, align 4
  br label %264

250:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %251 = load ptr, ptr %7, align 8, !tbaa !5
  %252 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(112) %251)
  store ptr %252, ptr %18, align 8, !tbaa !5
  br label %253

253:                                              ; preds = %259, %250
  %254 = load ptr, ptr %18, align 8, !tbaa !5
  %255 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %256 = trunc i8 %255 to i1
  br i1 %256, label %258, label %257

257:                                              ; preds = %253
  store i32 26, ptr %6, align 4
  br label %260

258:                                              ; preds = %253
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
  store i32 1, ptr %6, align 4
  br label %260

259:                                              ; No predecessors!
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %253, !llvm.loop !18

260:                                              ; preds = %258, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  %261 = load i32, ptr %6, align 4
  switch i32 %261, label %264 [
    i32 26, label %262
  ]

262:                                              ; preds = %260
  br label %263

263:                                              ; preds = %262
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %246, !llvm.loop !19

264:                                              ; preds = %260, %249
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #10
  %265 = load i32, ptr %6, align 4
  switch i32 %265, label %1762 [
    i32 23, label %266
  ]

266:                                              ; preds = %264
  br label %1760

267:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  store i8 1, ptr %19, align 1, !tbaa !9
  br label %268

268:                                              ; preds = %285, %267
  %269 = load i8, ptr %19, align 1, !tbaa !9, !range !11, !noundef !12
  %270 = trunc i8 %269 to i1
  br i1 %270, label %272, label %271

271:                                              ; preds = %268
  store i32 29, ptr %6, align 4
  br label %286

272:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(112) %273)
  store ptr %274, ptr %20, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %281, %272
  %276 = load ptr, ptr %20, align 8, !tbaa !5
  %277 = load i8, ptr %19, align 1, !tbaa !9, !range !11, !noundef !12
  %278 = trunc i8 %277 to i1
  br i1 %278, label %280, label %279

279:                                              ; preds = %275
  store i32 32, ptr %6, align 4
  br label %282

280:                                              ; preds = %275
  call void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0)
  store i32 1, ptr %6, align 4
  br label %282

281:                                              ; No predecessors!
  store i8 0, ptr %19, align 1, !tbaa !9
  br label %275, !llvm.loop !20

282:                                              ; preds = %280, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  %283 = load i32, ptr %6, align 4
  switch i32 %283, label %286 [
    i32 32, label %284
  ]

284:                                              ; preds = %282
  br label %285

285:                                              ; preds = %284
  store i8 0, ptr %19, align 1, !tbaa !9
  br label %268, !llvm.loop !21

286:                                              ; preds = %282, %271
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  %287 = load i32, ptr %6, align 4
  switch i32 %287, label %1762 [
    i32 29, label %288
  ]

288:                                              ; preds = %286
  br label %1760

289:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #10
  store i8 1, ptr %21, align 1, !tbaa !9
  br label %290

290:                                              ; preds = %322, %289
  %291 = load i8, ptr %21, align 1, !tbaa !9, !range !11, !noundef !12
  %292 = trunc i8 %291 to i1
  br i1 %292, label %294, label %293

293:                                              ; preds = %290
  store i32 35, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  br label %323

294:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %295 = load ptr, ptr %7, align 8, !tbaa !5
  %296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData8as_MacroEv(ptr noundef nonnull align 8 dereferenceable(112) %295)
  store ptr %296, ptr %22, align 8, !tbaa !5
  br label %297

297:                                              ; preds = %319, %294
  %298 = load ptr, ptr %22, align 8, !tbaa !5
  %299 = load i8, ptr %21, align 1, !tbaa !9, !range !11, !noundef !12
  %300 = trunc i8 %299 to i1
  br i1 %300, label %302, label %301

301:                                              ; preds = %297
  store i32 38, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %321

302:                                              ; preds = %297
  br label %303

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %304)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %305)
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %24)
          to label %306 unwind label %309

306:                                              ; preds = %303
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  %307 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %307, ptr noundef @.str.9)
          to label %308 unwind label %313

308:                                              ; preds = %306
  call void @__cxa_throw(ptr %307, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

309:                                              ; preds = %303
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %13, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %320

313:                                              ; preds = %306
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %13, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %14, align 4
  call void @__cxa_free_exception(ptr %307) #10
  br label %320

317:                                              ; No predecessors!
  br label %318

318:                                              ; preds = %317
  br label %319

319:                                              ; preds = %318
  store i8 0, ptr %21, align 1, !tbaa !9
  br label %297, !llvm.loop !22

320:                                              ; preds = %313, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  br label %1764

321:                                              ; preds = %301
  br label %322

322:                                              ; preds = %321
  store i8 0, ptr %21, align 1, !tbaa !9
  br label %290, !llvm.loop !23

323:                                              ; preds = %293
  br label %1760

324:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #10
  store i8 1, ptr %26, align 1, !tbaa !9
  br label %325

325:                                              ; preds = %400, %324
  %326 = load i8, ptr %26, align 1, !tbaa !9, !range !11, !noundef !12
  %327 = trunc i8 %326 to i1
  br i1 %327, label %329, label %328

328:                                              ; preds = %325
  store i32 43, ptr %6, align 4
  br label %401

329:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %330 = load ptr, ptr %7, align 8, !tbaa !5
  %331 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(112) %330)
  store ptr %331, ptr %27, align 8, !tbaa !5
  br label %332

332:                                              ; preds = %395, %329
  %333 = load ptr, ptr %27, align 8, !tbaa !5
  %334 = load i8, ptr %26, align 1, !tbaa !9, !range !11, !noundef !12
  %335 = trunc i8 %334 to i1
  br i1 %335, label %337, label %336

336:                                              ; preds = %332
  store i32 46, ptr %6, align 4
  br label %396

337:                                              ; preds = %332
  %338 = load ptr, ptr %27, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.TypeData::Data_Primitive", ptr %338, i32 0, i32 0
  %340 = load i32, ptr %339, align 4, !tbaa !24
  switch i32 %340, label %394 [
    i32 2, label %341
    i32 3, label %342
    i32 4, label %343
    i32 17, label %344
    i32 18, label %345
    i32 8, label %346
    i32 7, label %347
    i32 10, label %348
    i32 9, label %349
    i32 12, label %350
    i32 11, label %351
    i32 14, label %352
    i32 13, label %353
    i32 16, label %354
    i32 15, label %355
    i32 6, label %356
    i32 5, label %357
    i32 1, label %358
    i32 0, label %377
  ]

341:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 14)
  store i32 1, ptr %6, align 4
  br label %396

342:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 15)
  store i32 1, ptr %6, align 4
  br label %396

343:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 16)
  store i32 1, ptr %6, align 4
  br label %396

344:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 12)
  store i32 1, ptr %6, align 4
  br label %396

345:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 13)
  store i32 1, ptr %6, align 4
  br label %396

346:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 3)
  store i32 1, ptr %6, align 4
  br label %396

347:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 2)
  store i32 1, ptr %6, align 4
  br label %396

348:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5)
  store i32 1, ptr %6, align 4
  br label %396

349:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 4)
  store i32 1, ptr %6, align 4
  br label %396

350:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 7)
  store i32 1, ptr %6, align 4
  br label %396

351:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 6)
  store i32 1, ptr %6, align 4
  br label %396

352:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 9)
  store i32 1, ptr %6, align 4
  br label %396

353:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 8)
  store i32 1, ptr %6, align 4
  br label %396

354:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 11)
  store i32 1, ptr %6, align 4
  br label %396

355:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 10)
  store i32 1, ptr %6, align 4
  br label %396

356:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 1)
  store i32 1, ptr %6, align 4
  br label %396

357:                                              ; preds = %337
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 0)
  store i32 1, ptr %6, align 4
  br label %396

358:                                              ; preds = %337
  br label %359

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %360)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %361)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %362 = getelementptr inbounds %class.anon.289, ptr %31, i32 0, i32 0
  store ptr %28, ptr %362, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef %30)
          to label %363 unwind label %366

363:                                              ; preds = %359
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  %364 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %364, ptr noundef @.str.8)
          to label %365 unwind label %370

365:                                              ; preds = %363
  call void @__cxa_throw(ptr %364, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

366:                                              ; preds = %359
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %13, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %374

370:                                              ; preds = %363
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %13, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %14, align 4
  call void @__cxa_free_exception(ptr %364) #10
  br label %374

374:                                              ; preds = %370, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %398

375:                                              ; No predecessors!
  br label %376

376:                                              ; preds = %375
  br label %377

377:                                              ; preds = %376, %337
  br label %378

378:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %379)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %380)
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef %33)
          to label %381 unwind label %384

381:                                              ; preds = %378
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  %382 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef @.str.9)
          to label %383 unwind label %388

383:                                              ; preds = %381
  call void @__cxa_throw(ptr %382, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

384:                                              ; preds = %378
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %13, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %398

388:                                              ; preds = %381
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %13, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %14, align 4
  call void @__cxa_free_exception(ptr %382) #10
  br label %398

392:                                              ; No predecessors!
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393, %337
  br label %395

395:                                              ; preds = %394
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %332, !llvm.loop !27

396:                                              ; preds = %357, %356, %355, %354, %353, %352, %351, %350, %349, %348, %347, %346, %345, %344, %343, %342, %341, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  %397 = load i32, ptr %6, align 4
  switch i32 %397, label %401 [
    i32 46, label %399
  ]

398:                                              ; preds = %388, %384, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  br label %1764

399:                                              ; preds = %396
  br label %400

400:                                              ; preds = %399
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %325, !llvm.loop !28

401:                                              ; preds = %396, %328
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  %402 = load i32, ptr %6, align 4
  switch i32 %402, label %1762 [
    i32 43, label %403
  ]

403:                                              ; preds = %401
  br label %1760

404:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #10
  store i8 1, ptr %35, align 1, !tbaa !9
  br label %405

405:                                              ; preds = %456, %404
  %406 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %407 = trunc i8 %406 to i1
  br i1 %407, label %409, label %408

408:                                              ; preds = %405
  store i32 54, ptr %6, align 4
  br label %457

409:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %410 = load ptr, ptr %7, align 8, !tbaa !5
  %411 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %410)
  store ptr %411, ptr %36, align 8, !tbaa !5
  br label %412

412:                                              ; preds = %452, %409
  %413 = load ptr, ptr %36, align 8, !tbaa !5
  %414 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %415 = trunc i8 %414 to i1
  br i1 %415, label %417, label %416

416:                                              ; preds = %412
  store i32 57, ptr %6, align 4
  br label %453

417:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %418 = load ptr, ptr %36, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.TypeData::Data_Tuple", ptr %418, i32 0, i32 0
  store ptr %419, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %420 = load ptr, ptr %38, align 8, !tbaa !5
  %421 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #10
  %422 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.292", ptr %39, i32 0, i32 0
  store ptr %421, ptr %422, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %423 = load ptr, ptr %38, align 8, !tbaa !5
  %424 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %423) #10
  %425 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.292", ptr %40, i32 0, i32 0
  store ptr %424, ptr %425, align 8
  br label %426

426:                                              ; preds = %434, %417
  %427 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  br i1 %427, label %429, label %428

428:                                              ; preds = %426
  store i32 60, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %445

429:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %430 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  store ptr %430, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %431 = load ptr, ptr %41, align 8, !tbaa !5
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(120) %431)
          to label %432 unwind label %436

432:                                              ; preds = %429
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %433 unwind label %440

433:                                              ; preds = %432
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %434

434:                                              ; preds = %433
  %435 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  br label %426

436:                                              ; preds = %429
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %13, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %14, align 4
  br label %444

440:                                              ; preds = %432
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %13, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %14, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br label %444

444:                                              ; preds = %440, %436
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %451

445:                                              ; preds = %428
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %43)
          to label %446 unwind label %447

446:                                              ; preds = %445
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  store i32 1, ptr %6, align 4
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  br label %453

447:                                              ; preds = %445
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %13, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %14, align 4
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  br label %451

451:                                              ; preds = %447, %444
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #10
  br label %1764

452:                                              ; No predecessors!
  store i8 0, ptr %35, align 1, !tbaa !9
  br label %412, !llvm.loop !29

453:                                              ; preds = %446, %416
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  %454 = load i32, ptr %6, align 4
  switch i32 %454, label %457 [
    i32 57, label %455
  ]

455:                                              ; preds = %453
  br label %456

456:                                              ; preds = %455
  store i8 0, ptr %35, align 1, !tbaa !9
  br label %405, !llvm.loop !30

457:                                              ; preds = %453, %408
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #10
  %458 = load i32, ptr %6, align 4
  switch i32 %458, label %1762 [
    i32 54, label %459
  ]

459:                                              ; preds = %457
  br label %1760

460:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #10
  store i8 1, ptr %44, align 1, !tbaa !9
  br label %461

461:                                              ; preds = %500, %460
  %462 = load i8, ptr %44, align 1, !tbaa !9, !range !11, !noundef !12
  %463 = trunc i8 %462 to i1
  br i1 %463, label %465, label %464

464:                                              ; preds = %461
  store i32 62, ptr %6, align 4
  br label %501

465:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %466)
  store ptr %467, ptr %45, align 8, !tbaa !5
  br label %468

468:                                              ; preds = %496, %465
  %469 = load ptr, ptr %45, align 8, !tbaa !5
  %470 = load i8, ptr %44, align 1, !tbaa !9, !range !11, !noundef !12
  %471 = trunc i8 %470 to i1
  br i1 %471, label %473, label %472

472:                                              ; preds = %468
  store i32 65, ptr %6, align 4
  br label %497

473:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %474 = load ptr, ptr %45, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.TypeData::Data_Borrow", ptr %474, i32 0, i32 1
  %476 = load i8, ptr %475, align 8, !tbaa !31, !range !11, !noundef !12
  %477 = trunc i8 %476 to i1
  %478 = zext i1 %477 to i64
  %479 = select i1 %477, i32 1, i32 0
  store i32 %479, ptr %46, align 4, !tbaa !50
  %480 = load i32, ptr %46, align 4, !tbaa !50
  %481 = load ptr, ptr %45, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.TypeData::Data_Borrow", ptr %481, i32 0, i32 2
  %483 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %482) #10
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %47, ptr noundef nonnull align 8 dereferenceable(120) %483)
  %484 = load ptr, ptr %45, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.TypeData::Data_Borrow", ptr %484, i32 0, i32 0
  %486 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %485)
          to label %487 unwind label %492

487:                                              ; preds = %473
  %488 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %48, i32 0, i32 0
  store i32 %486, ptr %488, align 4
  %489 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %48, i32 0, i32 0
  %490 = load i32, ptr %489, align 4
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_NS_11LifetimeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, i32 noundef %480, ptr noundef %47, i32 %490)
          to label %491 unwind label %492

491:                                              ; preds = %487
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  store i32 1, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %497

492:                                              ; preds = %487, %473
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %13, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %14, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #10
  br label %1764

496:                                              ; No predecessors!
  store i8 0, ptr %44, align 1, !tbaa !9
  br label %468, !llvm.loop !52

497:                                              ; preds = %491, %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  %498 = load i32, ptr %6, align 4
  switch i32 %498, label %501 [
    i32 65, label %499
  ]

499:                                              ; preds = %497
  br label %500

500:                                              ; preds = %499
  store i8 0, ptr %44, align 1, !tbaa !9
  br label %461, !llvm.loop !53

501:                                              ; preds = %497, %464
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #10
  %502 = load i32, ptr %6, align 4
  switch i32 %502, label %1762 [
    i32 62, label %503
  ]

503:                                              ; preds = %501
  br label %1760

504:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #10
  store i8 1, ptr %49, align 1, !tbaa !9
  br label %505

505:                                              ; preds = %537, %504
  %506 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %507 = trunc i8 %506 to i1
  br i1 %507, label %509, label %508

508:                                              ; preds = %505
  store i32 68, ptr %6, align 4
  br label %538

509:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %510 = load ptr, ptr %7, align 8, !tbaa !5
  %511 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(112) %510)
  store ptr %511, ptr %50, align 8, !tbaa !5
  br label %512

512:                                              ; preds = %533, %509
  %513 = load ptr, ptr %50, align 8, !tbaa !5
  %514 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %515 = trunc i8 %514 to i1
  br i1 %515, label %517, label %516

516:                                              ; preds = %512
  store i32 71, ptr %6, align 4
  br label %534

517:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %518 = load ptr, ptr %50, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.TypeData::Data_Pointer", ptr %518, i32 0, i32 0
  %520 = load i8, ptr %519, align 8, !tbaa !54, !range !11, !noundef !12
  %521 = trunc i8 %520 to i1
  %522 = zext i1 %521 to i64
  %523 = select i1 %521, i32 1, i32 0
  store i32 %523, ptr %51, align 4, !tbaa !50
  %524 = load i32, ptr %51, align 4, !tbaa !50
  %525 = load ptr, ptr %50, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.TypeData::Data_Pointer", ptr %525, i32 0, i32 1
  %527 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %526) #10
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %52, ptr noundef nonnull align 8 dereferenceable(120) %527)
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, i32 noundef %524, ptr noundef %52)
          to label %528 unwind label %529

528:                                              ; preds = %517
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  store i32 1, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %534

529:                                              ; preds = %517
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %13, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %14, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  br label %1764

533:                                              ; No predecessors!
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %512, !llvm.loop !56

534:                                              ; preds = %528, %516
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  %535 = load i32, ptr %6, align 4
  switch i32 %535, label %538 [
    i32 71, label %536
  ]

536:                                              ; preds = %534
  br label %537

537:                                              ; preds = %536
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %505, !llvm.loop !57

538:                                              ; preds = %534, %508
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  %539 = load i32, ptr %6, align 4
  switch i32 %539, label %1762 [
    i32 68, label %540
  ]

540:                                              ; preds = %538
  br label %1760

541:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #10
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %542

542:                                              ; preds = %767, %541
  %543 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %544 = trunc i8 %543 to i1
  br i1 %544, label %546, label %545

545:                                              ; preds = %542
  store i32 74, ptr %6, align 4
  br label %768

546:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %547 = load ptr, ptr %7, align 8, !tbaa !5
  %548 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %547)
  store ptr %548, ptr %54, align 8, !tbaa !5
  br label %549

549:                                              ; preds = %763, %546
  %550 = load ptr, ptr %54, align 8, !tbaa !5
  %551 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %552 = trunc i8 %551 to i1
  br i1 %552, label %554, label %553

553:                                              ; preds = %549
  store i32 77, ptr %6, align 4
  br label %764

554:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %555 = load ptr, ptr %54, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.TypeData::Data_Array", ptr %555, i32 0, i32 0
  %557 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %556) #10
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %55, ptr noundef nonnull align 8 dereferenceable(120) %557)
  %558 = load ptr, ptr %54, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.TypeData::Data_Array", ptr %558, i32 0, i32 1
  %560 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %559) #10
  br i1 %560, label %561, label %745

561:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %562 = load ptr, ptr %54, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.TypeData::Data_Array", ptr %562, i32 0, i32 1
  %564 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %563) #10
  %565 = icmp eq ptr %564, null
  br i1 %565, label %568, label %566

566:                                              ; preds = %561
  %567 = call ptr @__dynamic_cast(ptr %564, ptr @_ZTIN3AST8ExprNodeE, ptr @_ZTIN3AST16ExprNode_IntegerE, i64 0) #10
  br label %569

568:                                              ; preds = %561
  br label %569

569:                                              ; preds = %568, %566
  %570 = phi ptr [ %567, %566 ], [ null, %568 ]
  store ptr %570, ptr %56, align 8, !tbaa !5
  %571 = load ptr, ptr %56, align 8, !tbaa !5
  %572 = icmp ne ptr %571, null
  br i1 %572, label %573, label %636

573:                                              ; preds = %569
  %574 = load ptr, ptr %56, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.AST::ExprNode_Integer", ptr %574, i32 0, i32 1
  %576 = load i32, ptr %575, align 8, !tbaa !58
  %577 = icmp eq i32 %576, 5
  br i1 %577, label %583, label %578

578:                                              ; preds = %573
  %579 = load ptr, ptr %56, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.AST::ExprNode_Integer", ptr %579, i32 0, i32 1
  %581 = load i32, ptr %580, align 8, !tbaa !58
  %582 = icmp eq i32 %581, 1
  br i1 %582, label %583, label %635

583:                                              ; preds = %578, %573
  %584 = load ptr, ptr %56, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.AST::ExprNode_Integer", ptr %584, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #10
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %57, i64 noundef -1, i64 noundef 0)
          to label %586 unwind label %601

586:                                              ; preds = %583
  %587 = invoke noundef zeroext i1 @_ZNK4U128geERKS_(ptr noundef nonnull align 8 dereferenceable(16) %585, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %588 unwind label %601

588:                                              ; preds = %586
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #10
  br i1 %587, label %589, label %624

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %591 = load ptr, ptr %4, align 8, !tbaa !5
  %592 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %591)
          to label %593 unwind label %605

593:                                              ; preds = %590
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %594 unwind label %605

594:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #10
  %595 = getelementptr inbounds %class.anon.293, ptr %60, i32 0, i32 0
  store ptr %56, ptr %595, align 8, !tbaa !5
  %596 = getelementptr inbounds %class.anon.293, ptr %60, i32 0, i32 1
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %597, ptr %596, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(16) %60) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 0, ptr noundef %59)
          to label %598 unwind label %609

598:                                              ; preds = %594
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  %599 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %599, ptr noundef @.str.12)
          to label %600 unwind label %614

600:                                              ; preds = %598
  invoke void @__cxa_throw(ptr %599, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %1777 unwind label %618

601:                                              ; preds = %586, %583
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %13, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #10
  br label %646

605:                                              ; preds = %593, %590
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %13, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %14, align 4
  br label %613

609:                                              ; preds = %594
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %13, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  br label %613

613:                                              ; preds = %609, %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %646

614:                                              ; preds = %598
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %13, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %14, align 4
  call void @__cxa_free_exception(ptr %599) #10
  br label %646

618:                                              ; preds = %624, %600
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %13, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %14, align 4
  br label %646

622:                                              ; No predecessors!
  br label %623

623:                                              ; preds = %622
  br label %624

624:                                              ; preds = %623, %588
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %625 unwind label %618

625:                                              ; preds = %624
  %626 = load ptr, ptr %56, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.AST::ExprNode_Integer", ptr %626, i32 0, i32 2
  %628 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %627)
          to label %629 unwind label %631

629:                                              ; preds = %625
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_m(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %61, i64 noundef %628)
          to label %630 unwind label %631

630:                                              ; preds = %629
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  store i32 1, ptr %6, align 4
  br label %637

631:                                              ; preds = %629, %625
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %13, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %14, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  br label %646

635:                                              ; preds = %578
  br label %636

636:                                              ; preds = %635, %569
  store i32 0, ptr %6, align 4
  br label %637

637:                                              ; preds = %636, %630
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  %638 = load i32, ptr %6, align 4
  switch i32 %638, label %761 [
    i32 0, label %639
  ]

639:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %640 = load ptr, ptr %54, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.TypeData::Data_Array", ptr %640, i32 0, i32 1
  %642 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %641) #10
  %643 = icmp eq ptr %642, null
  br i1 %643, label %647, label %644

644:                                              ; preds = %639
  %645 = call ptr @__dynamic_cast(ptr %642, ptr @_ZTIN3AST8ExprNodeE, ptr @_ZTIN3AST19ExprNode_NamedValueE, i64 0) #10
  br label %648

646:                                              ; preds = %631, %618, %614, %613, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %762

647:                                              ; preds = %639
  br label %648

648:                                              ; preds = %647, %644
  %649 = phi ptr [ %645, %644 ], [ null, %647 ]
  store ptr %649, ptr %62, align 8, !tbaa !5
  %650 = load ptr, ptr %62, align 8, !tbaa !5
  %651 = icmp ne ptr %650, null
  br i1 %651, label %652, label %710

652:                                              ; preds = %648
  %653 = load ptr, ptr %62, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.AST::ExprNode_NamedValue", ptr %653, i32 0, i32 1
  %655 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %654)
          to label %656 unwind label %677

656:                                              ; preds = %652
  br i1 %655, label %657, label %709

657:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #10
  %658 = load ptr, ptr %62, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.AST::ExprNode_NamedValue", ptr %658, i32 0, i32 1
  %660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %659)
          to label %661 unwind label %681

661:                                              ; preds = %657
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %660)
          to label %662 unwind label %681

662:                                              ; preds = %661
  %663 = load ptr, ptr %62, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.AST::ExprNode_NamedValue", ptr %663, i32 0, i32 1
  %665 = getelementptr inbounds %"class.AST::Path", ptr %664, i32 0, i32 2
  %666 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %665, i32 0, i32 0
  %667 = getelementptr inbounds %"struct.AST::PathBinding", ptr %666, i32 0, i32 1
  %668 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST17PathBinding_Value10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(32) %667)
          to label %669 unwind label %685

669:                                              ; preds = %662
  %670 = getelementptr inbounds %"struct.AST::PathBinding_Value::Data_Generic", ptr %668, i32 0, i32 0
  %671 = load i32, ptr %670, align 4, !tbaa !69
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %63, ptr noundef %64, i32 noundef %671)
          to label %672 unwind label %685

672:                                              ; preds = %669
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %673 unwind label %689

673:                                              ; preds = %672
  invoke void @_ZN3HIR10GenericRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(12) %67, ptr noundef nonnull align 8 dereferenceable(12) %63)
          to label %674 unwind label %693

674:                                              ; preds = %673
  invoke void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef %67)
          to label %675 unwind label %697

675:                                              ; preds = %674
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %65, ptr noundef %66)
          to label %676 unwind label %701

676:                                              ; preds = %675
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %67) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  store i32 1, ptr %6, align 4
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %63) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #10
  br label %711

677:                                              ; preds = %652
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %13, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %14, align 4
  br label %721

681:                                              ; preds = %661, %657
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %13, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %14, align 4
  br label %708

685:                                              ; preds = %669, %662
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %13, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %14, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br label %708

689:                                              ; preds = %672
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %13, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %14, align 4
  br label %707

693:                                              ; preds = %673
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %13, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %14, align 4
  br label %706

697:                                              ; preds = %674
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %13, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %14, align 4
  br label %705

701:                                              ; preds = %675
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %13, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %14, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  br label %705

705:                                              ; preds = %701, %697
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %67) #10
  br label %706

706:                                              ; preds = %705, %693
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %707

707:                                              ; preds = %706, %689
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %63) #10
  br label %708

708:                                              ; preds = %707, %685, %681
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #10
  br label %721

709:                                              ; preds = %656
  br label %710

710:                                              ; preds = %709, %648
  store i32 0, ptr %6, align 4
  br label %711

711:                                              ; preds = %710, %676
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  %712 = load i32, ptr %6, align 4
  switch i32 %712, label %761 [
    i32 0, label %713
  ]

713:                                              ; preds = %711
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %714 unwind label %722

714:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 72, ptr %71) #10
  %715 = load ptr, ptr %54, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.TypeData::Data_Array", ptr %715, i32 0, i32 1
  invoke void @_Z13LowerHIR_ExprRKSt10shared_ptrIN3AST8ExprNodeEE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %71, ptr noundef nonnull align 8 dereferenceable(16) %716)
          to label %717 unwind label %726

717:                                              ; preds = %714
  invoke void @_ZSt11make_uniqueIN3HIR24ConstGeneric_UnevaluatedEJNS0_7ExprPtrEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.145") align 8 %70, ptr noundef nonnull align 8 dereferenceable(72) %71)
          to label %718 unwind label %730

718:                                              ; preds = %717
  invoke void @_ZN3HIR12ConstGeneric16make_UnevaluatedESt10unique_ptrINS_24ConstGeneric_UnevaluatedESt14default_deleteIS2_EE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8 %69, ptr noundef %70)
          to label %719 unwind label %734

719:                                              ; preds = %718
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %68, ptr noundef %69)
          to label %720 unwind label %738

720:                                              ; preds = %719
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #10
  call void @_ZNSt10unique_ptrIN3HIR24ConstGeneric_UnevaluatedESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %71) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr %71) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  store i32 1, ptr %6, align 4
  br label %761

721:                                              ; preds = %708, %677
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %762

722:                                              ; preds = %745, %713
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %13, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %14, align 4
  br label %762

726:                                              ; preds = %714
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %13, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %14, align 4
  br label %744

730:                                              ; preds = %717
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %13, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %14, align 4
  br label %743

734:                                              ; preds = %718
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %13, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %14, align 4
  br label %742

738:                                              ; preds = %719
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %13, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %14, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #10
  br label %742

742:                                              ; preds = %738, %734
  call void @_ZNSt10unique_ptrIN3HIR24ConstGeneric_UnevaluatedESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  br label %743

743:                                              ; preds = %742, %730
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %71) #10
  br label %744

744:                                              ; preds = %743, %726
  call void @llvm.lifetime.end.p0(i64 72, ptr %71) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  br label %762

745:                                              ; preds = %554
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %746 unwind label %722

746:                                              ; preds = %745
  invoke void @_ZN3HIR12ConstGeneric9InferDataC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %74, i32 noundef -1)
          to label %747 unwind label %752

747:                                              ; preds = %746
  %748 = getelementptr inbounds %"struct.HIR::ConstGeneric::InferData", ptr %74, i32 0, i32 0
  %749 = load i32, ptr %748, align 4
  invoke void @_ZN3HIR12ConstGeneric10make_InferENS0_9InferDataE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8 %73, i32 %749)
          to label %750 unwind label %752

750:                                              ; preds = %747
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %72, ptr noundef %73)
          to label %751 unwind label %756

751:                                              ; preds = %750
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  store i32 1, ptr %6, align 4
  br label %761

752:                                              ; preds = %747, %746
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %13, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %14, align 4
  br label %760

756:                                              ; preds = %750
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %13, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %14, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #10
  br label %760

760:                                              ; preds = %756, %752
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br label %762

761:                                              ; preds = %751, %720, %711, %637
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %764

762:                                              ; preds = %760, %744, %722, %721, %646
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #10
  br label %1764

763:                                              ; No predecessors!
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %549, !llvm.loop !72

764:                                              ; preds = %761, %553
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  %765 = load i32, ptr %6, align 4
  switch i32 %765, label %768 [
    i32 77, label %766
  ]

766:                                              ; preds = %764
  br label %767

767:                                              ; preds = %766
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %542, !llvm.loop !73

768:                                              ; preds = %764, %545
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #10
  %769 = load i32, ptr %6, align 4
  switch i32 %769, label %1762 [
    i32 74, label %770
  ]

770:                                              ; preds = %768
  br label %1760

771:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #10
  store i8 1, ptr %75, align 1, !tbaa !9
  br label %772

772:                                              ; preds = %803, %771
  %773 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %774 = trunc i8 %773 to i1
  br i1 %774, label %776, label %775

775:                                              ; preds = %772
  store i32 82, ptr %6, align 4
  br label %804

776:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %777 = load ptr, ptr %7, align 8, !tbaa !5
  %778 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(112) %777)
  store ptr %778, ptr %76, align 8, !tbaa !5
  br label %779

779:                                              ; preds = %799, %776
  %780 = load ptr, ptr %76, align 8, !tbaa !5
  %781 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %782 = trunc i8 %781 to i1
  br i1 %782, label %784, label %783

783:                                              ; preds = %779
  store i32 85, ptr %6, align 4
  br label %800

784:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  %785 = load ptr, ptr %76, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.TypeData::Data_Slice", ptr %785, i32 0, i32 0
  %787 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %786) #10
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %77, ptr noundef nonnull align 8 dereferenceable(120) %787)
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %788 unwind label %790

788:                                              ; preds = %784
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %78)
          to label %789 unwind label %794

789:                                              ; preds = %788
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  store i32 1, ptr %6, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %800

790:                                              ; preds = %784
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %13, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %14, align 4
  br label %798

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

798:                                              ; preds = %794, %790
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #10
  br label %1764

799:                                              ; No predecessors!
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %779, !llvm.loop !74

800:                                              ; preds = %789, %783
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  %801 = load i32, ptr %6, align 4
  switch i32 %801, label %804 [
    i32 85, label %802
  ]

802:                                              ; preds = %800
  br label %803

803:                                              ; preds = %802
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %772, !llvm.loop !75

804:                                              ; preds = %800, %775
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #10
  %805 = load i32, ptr %6, align 4
  switch i32 %805, label %1762 [
    i32 82, label %806
  ]

806:                                              ; preds = %804
  br label %1760

807:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  store i8 1, ptr %79, align 1, !tbaa !9
  br label %808

808:                                              ; preds = %925, %807
  %809 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %810 = trunc i8 %809 to i1
  br i1 %810, label %812, label %811

811:                                              ; preds = %808
  store i32 88, ptr %6, align 4
  br label %926

812:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %813 = load ptr, ptr %7, align 8, !tbaa !5
  %814 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(112) %813)
  store ptr %814, ptr %80, align 8, !tbaa !5
  br label %815

815:                                              ; preds = %921, %812
  %816 = load ptr, ptr %80, align 8, !tbaa !5
  %817 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %818 = trunc i8 %817 to i1
  br i1 %818, label %820, label %819

819:                                              ; preds = %815
  store i32 91, ptr %6, align 4
  br label %922

820:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %821 = load ptr, ptr %80, align 8, !tbaa !5
  %822 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %821) #10
  %823 = getelementptr inbounds %"class.AST::Path", ptr %822, i32 0, i32 1
  %824 = call noundef ptr @_ZN3AST4Path5Class9opt_LocalEv(ptr noundef nonnull align 8 dereferenceable(48) %823)
  store ptr %824, ptr %81, align 8, !tbaa !5
  %825 = load ptr, ptr %81, align 8, !tbaa !5
  %826 = icmp ne ptr %825, null
  br i1 %826, label %827, label %870

827:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  %828 = load ptr, ptr %80, align 8, !tbaa !5
  %829 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %828) #10
  %830 = getelementptr inbounds %"class.AST::Path", ptr %829, i32 0, i32 2
  %831 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %830, i32 0, i32 1
  %832 = getelementptr inbounds %"struct.AST::PathBinding.104", ptr %831, i32 0, i32 1
  %833 = call noundef ptr @_ZN3AST16PathBinding_Type17opt_TypeParameterEv(ptr noundef nonnull align 8 dereferenceable(32) %832)
  store ptr %833, ptr %83, align 8, !tbaa !5
  %834 = load ptr, ptr %83, align 8, !tbaa !5
  %835 = icmp ne ptr %834, null
  br i1 %835, label %836, label %840

836:                                              ; preds = %827
  %837 = load ptr, ptr %83, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_TypeParameter", ptr %837, i32 0, i32 0
  %839 = load i32, ptr %838, align 4, !tbaa !76
  store i32 %839, ptr %82, align 4, !tbaa !78
  br label %859

840:                                              ; preds = %827
  br label %841

841:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %842)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %843)
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  %844 = getelementptr inbounds %class.anon.294, ptr %86, i32 0, i32 0
  %845 = load ptr, ptr %80, align 8, !tbaa !5
  store ptr %845, ptr %844, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85)
          to label %846 unwind label %849

846:                                              ; preds = %841
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  %847 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %847, ptr noundef @.str.9)
          to label %848 unwind label %853

848:                                              ; preds = %846
  call void @__cxa_throw(ptr %847, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

849:                                              ; preds = %841
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %13, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br label %864

853:                                              ; preds = %846
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %13, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %14, align 4
  call void @__cxa_free_exception(ptr %847) #10
  br label %864

857:                                              ; No predecessors!
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858, %836
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  %860 = load ptr, ptr %81, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.AST::Path::Class::Data_Local", ptr %860, i32 0, i32 0
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %861)
  %862 = load i32, ptr %82, align 4, !tbaa !78
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %87, i32 noundef %862)
          to label %863 unwind label %865

863:                                              ; preds = %859
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #10
  store i32 1, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %919

864:                                              ; preds = %853, %849
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  br label %869

865:                                              ; preds = %859
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %13, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %14, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #10
  br label %869

869:                                              ; preds = %865, %864
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %920

870:                                              ; preds = %820
  %871 = load ptr, ptr %80, align 8, !tbaa !5
  %872 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %871) #10
  %873 = getelementptr inbounds %"class.AST::Path", ptr %872, i32 0, i32 2
  %874 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %873, i32 0, i32 1
  %875 = getelementptr inbounds %"struct.AST::PathBinding.104", ptr %874, i32 0, i32 0
  %876 = getelementptr inbounds %"struct.AST::AbsolutePath", ptr %875, i32 0, i32 0
  %877 = call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %876, ptr noundef @.str.25)
  br i1 %877, label %878, label %903

878:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 120, ptr %88) #10
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %879)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %880)
  %881 = load ptr, ptr %80, align 8, !tbaa !5
  %882 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %881) #10
  %883 = getelementptr inbounds %"class.AST::Path", ptr %882, i32 0, i32 2
  %884 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %883, i32 0, i32 1
  %885 = getelementptr inbounds %"struct.AST::PathBinding.104", ptr %884, i32 0, i32 0
  %886 = getelementptr inbounds %"struct.AST::AbsolutePath", ptr %885, i32 0, i32 1
  %887 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI8RcStringSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %886) #10
  %888 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %887)
          to label %889 unwind label %894

889:                                              ; preds = %878
  %890 = invoke noundef i32 @_Z19coretype_fromstringPKc(ptr noundef %888)
          to label %891 unwind label %894

891:                                              ; preds = %889
  invoke void @_ZN7TypeRefC2E4Span9eCoreType(ptr noundef nonnull align 8 dereferenceable(120) %88, ptr noundef %89, i32 noundef %890)
          to label %892 unwind label %894

892:                                              ; preds = %891
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %88)
          to label %893 unwind label %898

893:                                              ; preds = %892
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %88) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %88) #10
  store i32 1, ptr %6, align 4
  br label %919

894:                                              ; preds = %891, %889, %878
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %13, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %14, align 4
  br label %902

898:                                              ; preds = %892
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %13, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %14, align 4
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %88) #10
  br label %902

902:                                              ; preds = %898, %894
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %88) #10
  br label %920

903:                                              ; preds = %870
  %904 = load ptr, ptr %4, align 8, !tbaa !5
  %905 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %904)
  %906 = load ptr, ptr %80, align 8, !tbaa !5
  %907 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %906) #10
  call void @_Z13LowerHIR_PathRK4SpanRKN3AST4PathE17FromAST_PathClass(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %90, ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef nonnull align 8 dereferenceable(240) %907, i32 noundef 0)
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %908 unwind label %910

908:                                              ; preds = %903
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef %90, ptr noundef %91)
          to label %909 unwind label %914

909:                                              ; preds = %908
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %90) #10
  store i32 1, ptr %6, align 4
  br label %919

910:                                              ; preds = %903
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %13, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %14, align 4
  br label %918

914:                                              ; preds = %908
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %13, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %14, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #10
  br label %918

918:                                              ; preds = %914, %910
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %90) #10
  br label %920

919:                                              ; preds = %909, %893, %863
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  br label %922

920:                                              ; preds = %918, %902, %869
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  br label %1764

921:                                              ; No predecessors!
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %815, !llvm.loop !79

922:                                              ; preds = %919, %819
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  %923 = load i32, ptr %6, align 4
  switch i32 %923, label %926 [
    i32 91, label %924
  ]

924:                                              ; preds = %922
  br label %925

925:                                              ; preds = %924
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %808, !llvm.loop !80

926:                                              ; preds = %922, %811
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  %927 = load i32, ptr %6, align 4
  switch i32 %927, label %1762 [
    i32 88, label %928
  ]

928:                                              ; preds = %926
  br label %1760

929:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #10
  store i8 1, ptr %92, align 1, !tbaa !9
  br label %930

930:                                              ; preds = %1223, %929
  %931 = load i8, ptr %92, align 1, !tbaa !9, !range !11, !noundef !12
  %932 = trunc i8 %931 to i1
  br i1 %932, label %934, label %933

933:                                              ; preds = %930
  store i32 96, ptr %6, align 4
  br label %1224

934:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %935 = load ptr, ptr %7, align 8, !tbaa !5
  %936 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(112) %935)
  store ptr %936, ptr %93, align 8, !tbaa !5
  br label %937

937:                                              ; preds = %1219, %934
  %938 = load ptr, ptr %93, align 8, !tbaa !5
  %939 = load i8, ptr %92, align 1, !tbaa !9, !range !11, !noundef !12
  %940 = trunc i8 %939 to i1
  br i1 %940, label %942, label %941

941:                                              ; preds = %937
  store i32 99, ptr %6, align 4
  br label %1220

942:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 176, ptr %94) #10
  call void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %94)
  %943 = load ptr, ptr %93, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.TypeData::Data_TraitObject", ptr %943, i32 0, i32 1
  %945 = call noundef zeroext i1 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %944) #10
  br i1 %945, label %946, label %947

946:                                              ; preds = %942
  br label %995

947:                                              ; preds = %942
  %948 = load ptr, ptr %93, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.TypeData::Data_TraitObject", ptr %948, i32 0, i32 1
  %950 = call noundef i64 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %949) #10
  %951 = icmp eq i64 %950, 1
  br i1 %951, label %952, label %964

952:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #10
  %953 = load ptr, ptr %93, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.TypeData::Data_TraitObject", ptr %953, i32 0, i32 1
  %955 = call noundef nonnull align 8 dereferenceable(18) ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %954, i64 noundef 0) #10
  %956 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %955)
          to label %957 unwind label %960

957:                                              ; preds = %952
  %958 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %95, i32 0, i32 0
  store i32 %956, ptr %958, align 4
  %959 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %959, ptr align 4 %95, i64 4, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  br label %994

960:                                              ; preds = %952
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %13, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  br label %1218

964:                                              ; preds = %947
  br label %965

965:                                              ; preds = %964
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %966 = load ptr, ptr %4, align 8, !tbaa !5
  %967 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %966)
          to label %968 unwind label %975

968:                                              ; preds = %965
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %967)
          to label %969 unwind label %975

969:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  %970 = getelementptr inbounds %class.anon.295, ptr %98, i32 0, i32 0
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %971, ptr %970, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef %97)
          to label %972 unwind label %979

972:                                              ; preds = %969
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  %973 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %973, ptr noundef @.str.9)
          to label %974 unwind label %984

974:                                              ; preds = %972
  invoke void @__cxa_throw(ptr %973, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %1777 unwind label %988

975:                                              ; preds = %968, %965
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %13, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %14, align 4
  br label %983

979:                                              ; preds = %969
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %13, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #10
  br label %983

983:                                              ; preds = %979, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1218

984:                                              ; preds = %972
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %13, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %14, align 4
  call void @__cxa_free_exception(ptr %973) #10
  br label %1218

988:                                              ; preds = %1205, %1194, %974
  %989 = landingpad { ptr, i32 }
          cleanup
  %990 = extractvalue { ptr, i32 } %989, 0
  store ptr %990, ptr %13, align 8
  %991 = extractvalue { ptr, i32 } %989, 1
  store i32 %991, ptr %14, align 4
  br label %1218

992:                                              ; No predecessors!
  br label %993

993:                                              ; preds = %992
  br label %994

994:                                              ; preds = %993, %957
  br label %995

995:                                              ; preds = %994, %946
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %996 = load ptr, ptr %93, align 8, !tbaa !5
  %997 = getelementptr inbounds %"struct.TypeData::Data_TraitObject", ptr %996, i32 0, i32 0
  store ptr %997, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  %998 = load ptr, ptr %99, align 8, !tbaa !5
  %999 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %998) #10
  %1000 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %100, i32 0, i32 0
  store ptr %999, ptr %1000, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %1001 = load ptr, ptr %99, align 8, !tbaa !5
  %1002 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1001) #10
  %1003 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %101, i32 0, i32 0
  store ptr %1002, ptr %1003, align 8
  br label %1004

1004:                                             ; preds = %1190, %995
  %1005 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  br i1 %1005, label %1007, label %1006

1006:                                             ; preds = %1004
  store i32 104, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1194

1007:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %1008 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  store ptr %1008, ptr %102, align 8, !tbaa !5
  br label %1009

1009:                                             ; preds = %1007
  %1010 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1011 unwind label %1027

1011:                                             ; preds = %1009
  br i1 %1010, label %1012, label %1031

1012:                                             ; preds = %1011
  %1013 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !78
  %1014 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1013, ptr noundef @__func__._Z13LowerHIR_TypeRK7TypeRef)
          to label %1015 unwind label %1027

1015:                                             ; preds = %1012
  %1016 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1014, ptr noundef @.str.26)
          to label %1017 unwind label %1027

1017:                                             ; preds = %1015
  %1018 = load ptr, ptr %102, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.Type_TraitPath, ptr %1018, i32 0, i32 1
  %1020 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1019) #10
  %1021 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1016, ptr noundef nonnull align 8 dereferenceable(240) %1020)
          to label %1022 unwind label %1027

1022:                                             ; preds = %1017
  %1023 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1021, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1024 unwind label %1027

1024:                                             ; preds = %1022
  %1025 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1023, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1026 unwind label %1027

1026:                                             ; preds = %1024
  br label %1031

1027:                                             ; preds = %1024, %1022, %1017, %1015, %1012, %1009
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %13, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %14, align 4
  br label %1193

1031:                                             ; preds = %1026, %1011
  br label %1032

1032:                                             ; preds = %1031
  br label %1033

1033:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #10
  %1034 = load ptr, ptr %102, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.Type_TraitPath, ptr %1034, i32 0, i32 1
  %1036 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1035) #10
  %1037 = getelementptr inbounds %"class.AST::Path", ptr %1036, i32 0, i32 2
  %1038 = getelementptr inbounds %"struct.AST::Path::Bindings", ptr %1037, i32 0, i32 1
  %1039 = getelementptr inbounds %"struct.AST::PathBinding.104", ptr %1038, i32 0, i32 1
  %1040 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %1039)
          to label %1041 unwind label %1055

1041:                                             ; preds = %1033
  store ptr %1040, ptr %103, align 8, !tbaa !5
  %1042 = load ptr, ptr %103, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1042, i32 0, i32 0
  %1044 = load ptr, ptr %1043, align 8, !tbaa !82
  %1045 = icmp ne ptr %1044, null
  br i1 %1045, label %1051, label %1046

1046:                                             ; preds = %1041
  %1047 = load ptr, ptr %103, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1047, i32 0, i32 1
  %1049 = load ptr, ptr %1048, align 8, !tbaa !84
  %1050 = icmp ne ptr %1049, null
  br label %1051

1051:                                             ; preds = %1046, %1041
  %1052 = phi i1 [ true, %1041 ], [ %1050, %1046 ]
  br i1 %1052, label %1053, label %1054

1053:                                             ; preds = %1051
  br label %1060

1054:                                             ; preds = %1051
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 983, ptr noundef @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

1055:                                             ; preds = %1147, %1099, %1097, %1090, %1087, %1084, %1065, %1033
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %13, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %14, align 4
  br label %1192

1059:                                             ; No predecessors!
  br label %1060

1060:                                             ; preds = %1059, %1053
  %1061 = load ptr, ptr %103, align 8, !tbaa !5
  %1062 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1061, i32 0, i32 0
  %1063 = load ptr, ptr %1062, align 8, !tbaa !82
  %1064 = icmp ne ptr %1063, null
  br i1 %1064, label %1065, label %1071

1065:                                             ; preds = %1060
  %1066 = load ptr, ptr %103, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1066, i32 0, i32 0
  %1068 = load ptr, ptr %1067, align 8, !tbaa !82
  %1069 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %1068)
          to label %1070 unwind label %1055

1070:                                             ; preds = %1065
  br i1 %1069, label %1078, label %1124

1071:                                             ; preds = %1060
  %1072 = load ptr, ptr %103, align 8, !tbaa !5
  %1073 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1072, i32 0, i32 1
  %1074 = load ptr, ptr %1073, align 8, !tbaa !84
  %1075 = getelementptr inbounds %"class.HIR::Trait", ptr %1074, i32 0, i32 3
  %1076 = load i8, ptr %1075, align 8, !tbaa !85, !range !11, !noundef !12
  %1077 = trunc i8 %1076 to i1
  br i1 %1077, label %1078, label %1124

1078:                                             ; preds = %1071, %1070
  %1079 = load ptr, ptr %103, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1079, i32 0, i32 1
  %1081 = load ptr, ptr %1080, align 8, !tbaa !84
  %1082 = icmp ne ptr %1081, null
  br i1 %1082, label %1083, label %1105

1083:                                             ; preds = %1078
  br label %1084

1084:                                             ; preds = %1083
  %1085 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1086 unwind label %1055

1086:                                             ; preds = %1084
  br i1 %1085, label %1087, label %1102

1087:                                             ; preds = %1086
  %1088 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !78
  %1089 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1088, ptr noundef @__func__._Z13LowerHIR_TypeRK7TypeRef)
          to label %1090 unwind label %1055

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %103, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.AST::PathBinding_Type::Data_Trait", ptr %1091, i32 0, i32 1
  %1093 = load ptr, ptr %1092, align 8, !tbaa !84
  %1094 = getelementptr inbounds %"class.HIR::Trait", ptr %1093, i32 0, i32 5
  %1095 = call noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %1094) #10
  %1096 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1089, i64 noundef %1095)
          to label %1097 unwind label %1055

1097:                                             ; preds = %1090
  %1098 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1096, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1099 unwind label %1055

1099:                                             ; preds = %1097
  %1100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1098, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1101 unwind label %1055

1101:                                             ; preds = %1099
  br label %1102

1102:                                             ; preds = %1101, %1086
  br label %1103

1103:                                             ; preds = %1102
  br label %1104

1104:                                             ; preds = %1103
  br label %1105

1105:                                             ; preds = %1104, %1078
  %1106 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #10
  %1107 = load ptr, ptr %4, align 8, !tbaa !5
  %1108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1107)
          to label %1109 unwind label %1115

1109:                                             ; preds = %1105
  %1110 = load ptr, ptr %102, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.Type_TraitPath, ptr %1110, i32 0, i32 1
  %1112 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1111) #10
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %104, ptr noundef nonnull align 8 dereferenceable(8) %1108, ptr noundef nonnull align 8 dereferenceable(240) %1112, i32 noundef 0, i1 noundef zeroext false)
          to label %1113 unwind label %1115

1113:                                             ; preds = %1109
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1106, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %1114 unwind label %1119

1114:                                             ; preds = %1113
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #10
  br label %1189

1115:                                             ; preds = %1109, %1105
  %1116 = landingpad { ptr, i32 }
          cleanup
  %1117 = extractvalue { ptr, i32 } %1116, 0
  store ptr %1117, ptr %13, align 8
  %1118 = extractvalue { ptr, i32 } %1116, 1
  store i32 %1118, ptr %14, align 4
  br label %1123

1119:                                             ; preds = %1113
  %1120 = landingpad { ptr, i32 }
          cleanup
  %1121 = extractvalue { ptr, i32 } %1120, 0
  store ptr %1121, ptr %13, align 8
  %1122 = extractvalue { ptr, i32 } %1120, 1
  store i32 %1122, ptr %14, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #10
  br label %1123

1123:                                             ; preds = %1119, %1115
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #10
  br label %1192

1124:                                             ; preds = %1071, %1070
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #10
  %1125 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 0
  %1126 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1125, i32 0, i32 1
  %1127 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1126, i32 0, i32 0
  %1128 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %1127)
          to label %1129 unwind label %1148

1129:                                             ; preds = %1124
  %1130 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 0
  %1131 = extractvalue { ptr, i64 } %1128, 0
  store ptr %1131, ptr %1130, align 8
  %1132 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 1
  %1133 = extractvalue { ptr, i64 } %1128, 1
  store i64 %1133, ptr %1132, align 8
  %1134 = invoke noundef zeroext i1 @_ZNKSt4spanIK8RcStringE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
          to label %1135 unwind label %1148

1135:                                             ; preds = %1129
  %1136 = xor i1 %1134, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #10
  br i1 %1136, label %1137, label %1167

1137:                                             ; preds = %1135
  br label %1138

1138:                                             ; preds = %1137
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #10
  %1139 = load ptr, ptr %4, align 8, !tbaa !5
  %1140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1139)
          to label %1141 unwind label %1152

1141:                                             ; preds = %1138
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1142 unwind label %1152

1142:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #10
  %1143 = getelementptr inbounds %class.anon.358, ptr %108, i32 0, i32 0
  %1144 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %1144, ptr %1143, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(8) %108) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef 0, ptr noundef %107)
          to label %1145 unwind label %1156

1145:                                             ; preds = %1142
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  %1146 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1146, ptr noundef @.str.12)
          to label %1147 unwind label %1161

1147:                                             ; preds = %1145
  invoke void @__cxa_throw(ptr %1146, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %1777 unwind label %1055

1148:                                             ; preds = %1129, %1124
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %13, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #10
  br label %1192

1152:                                             ; preds = %1141, %1138
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %13, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %14, align 4
  br label %1160

1156:                                             ; preds = %1142
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %13, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  br label %1160

1160:                                             ; preds = %1156, %1152
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  br label %1192

1161:                                             ; preds = %1145
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %13, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1146) #10
  br label %1192

1165:                                             ; No predecessors!
  br label %1166

1166:                                             ; preds = %1165
  br label %1167

1167:                                             ; preds = %1166, %1135
  call void @llvm.lifetime.start.p0(i64 144, ptr %109) #10
  %1168 = load ptr, ptr %4, align 8, !tbaa !5
  %1169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1168)
          to label %1170 unwind label %1180

1170:                                             ; preds = %1167
  %1171 = load ptr, ptr %102, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.Type_TraitPath, ptr %1171, i32 0, i32 1
  %1173 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1172) #10
  %1174 = load ptr, ptr %102, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.Type_TraitPath, ptr %1174, i32 0, i32 0
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %109, ptr noundef nonnull align 8 dereferenceable(8) %1169, ptr noundef nonnull align 8 dereferenceable(240) %1173, ptr noundef nonnull align 8 dereferenceable(24) %1175, i1 noundef zeroext false)
          to label %1176 unwind label %1180

1176:                                             ; preds = %1170
  %1177 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 0
  %1178 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR9TraitPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(144) %1177, ptr noundef nonnull align 8 dereferenceable(144) %109)
          to label %1179 unwind label %1184

1179:                                             ; preds = %1176
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %109) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %109) #10
  br label %1189

1180:                                             ; preds = %1170, %1167
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %13, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %14, align 4
  br label %1188

1184:                                             ; preds = %1176
  %1185 = landingpad { ptr, i32 }
          cleanup
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %13, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %14, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %109) #10
  br label %1188

1188:                                             ; preds = %1184, %1180
  call void @llvm.lifetime.end.p0(i64 144, ptr %109) #10
  br label %1192

1189:                                             ; preds = %1179, %1114
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  br label %1190

1190:                                             ; preds = %1189
  %1191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  br label %1004

1192:                                             ; preds = %1188, %1161, %1160, %1148, %1123, %1055
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  br label %1193

1193:                                             ; preds = %1192, %1027
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1218

1194:                                             ; preds = %1006
  %1195 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 1
  %1196 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1195) #10
  %1197 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %110, i32 0, i32 0
  store ptr %1196, ptr %1197, align 8
  %1198 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %94, i32 0, i32 1
  %1199 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1198) #10
  %1200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %111, i32 0, i32 0
  store ptr %1199, ptr %1200, align 8
  %1201 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %110, i32 0, i32 0
  %1202 = load ptr, ptr %1201, align 8
  %1203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %111, i32 0, i32 0
  %1204 = load ptr, ptr %1203, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %1202, ptr %1204)
          to label %1205 unwind label %988

1205:                                             ; preds = %1194
  invoke void @_ZN3HIR20TypeData_TraitObjectC2EOS0_(ptr noundef nonnull align 8 dereferenceable(172) %113, ptr noundef nonnull align 8 dereferenceable(172) %94)
          to label %1206 unwind label %988

1206:                                             ; preds = %1205
  invoke void @_ZN3HIR8TypeData16make_TraitObjectENS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeData") align 8 %112, ptr noundef %113)
          to label %1207 unwind label %1209

1207:                                             ; preds = %1206
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %112)
          to label %1208 unwind label %1213

1208:                                             ; preds = %1207
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %112) #10
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %113) #10
  store i32 1, ptr %6, align 4
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %94) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr %94) #10
  br label %1220

1209:                                             ; preds = %1206
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %13, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %14, align 4
  br label %1217

1213:                                             ; preds = %1207
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %13, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %14, align 4
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %112) #10
  br label %1217

1217:                                             ; preds = %1213, %1209
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %113) #10
  br label %1218

1218:                                             ; preds = %1217, %1193, %988, %984, %983, %960
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %94) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #10
  br label %1764

1219:                                             ; No predecessors!
  store i8 0, ptr %92, align 1, !tbaa !9
  br label %937, !llvm.loop !122

1220:                                             ; preds = %1208, %941
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  %1221 = load i32, ptr %6, align 4
  switch i32 %1221, label %1224 [
    i32 99, label %1222
  ]

1222:                                             ; preds = %1220
  br label %1223

1223:                                             ; preds = %1222
  store i8 0, ptr %92, align 1, !tbaa !9
  br label %930, !llvm.loop !123

1224:                                             ; preds = %1220, %933
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #10
  %1225 = load i32, ptr %6, align 4
  switch i32 %1225, label %1762 [
    i32 96, label %1226
  ]

1226:                                             ; preds = %1224
  br label %1760

1227:                                             ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #10
  store i8 1, ptr %114, align 1, !tbaa !9
  br label %1228

1228:                                             ; preds = %1562, %1227
  %1229 = load i8, ptr %114, align 1, !tbaa !9, !range !11, !noundef !12
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1232, label %1231

1231:                                             ; preds = %1228
  store i32 112, ptr %6, align 4
  br label %1563

1232:                                             ; preds = %1228
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  %1233 = load ptr, ptr %7, align 8, !tbaa !5
  %1234 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(112) %1233)
  store ptr %1234, ptr %115, align 8, !tbaa !5
  br label %1235

1235:                                             ; preds = %1557, %1232
  %1236 = load ptr, ptr %115, align 8, !tbaa !5
  %1237 = load i8, ptr %114, align 1, !tbaa !9, !range !11, !noundef !12
  %1238 = trunc i8 %1237 to i1
  br i1 %1238, label %1240, label %1239

1239:                                             ; preds = %1235
  store i32 115, ptr %6, align 4
  br label %1558

1240:                                             ; preds = %1235
  br label %1241

1241:                                             ; preds = %1240
  %1242 = load ptr, ptr %115, align 8, !tbaa !5
  %1243 = getelementptr inbounds %"struct.TypeData::Data_ErasedType", ptr %1242, i32 0, i32 0
  %1244 = call noundef i64 @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1243) #10
  %1245 = icmp ugt i64 %1244, 0
  br i1 %1245, label %1260, label %1246

1246:                                             ; preds = %1241
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1247)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(8) %1248)
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 1 dereferenceable(1) %118) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef %117)
          to label %1249 unwind label %1252

1249:                                             ; preds = %1246
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  %1250 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1250, ptr noundef @.str.9)
          to label %1251 unwind label %1256

1251:                                             ; preds = %1249
  call void @__cxa_throw(ptr %1250, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

1252:                                             ; preds = %1246
  %1253 = landingpad { ptr, i32 }
          cleanup
  %1254 = extractvalue { ptr, i32 } %1253, 0
  store ptr %1254, ptr %13, align 8
  %1255 = extractvalue { ptr, i32 } %1253, 1
  store i32 %1255, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  br label %1560

1256:                                             ; preds = %1249
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %13, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1250) #10
  br label %1560

1260:                                             ; preds = %1241
  br label %1261

1261:                                             ; preds = %1260
  br label %1262

1262:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 24, ptr %119) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  %1263 = load ptr, ptr %115, align 8, !tbaa !5
  %1264 = getelementptr inbounds %"struct.TypeData::Data_ErasedType", ptr %1263, i32 0, i32 0
  store ptr %1264, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #10
  %1265 = load ptr, ptr %120, align 8, !tbaa !5
  %1266 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1265) #10
  %1267 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %121, i32 0, i32 0
  store ptr %1266, ptr %1267, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #10
  %1268 = load ptr, ptr %120, align 8, !tbaa !5
  %1269 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1268) #10
  %1270 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %122, i32 0, i32 0
  store ptr %1269, ptr %1270, align 8
  br label %1271

1271:                                             ; preds = %1311, %1262
  %1272 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %122) #10
  br i1 %1272, label %1274, label %1273

1273:                                             ; preds = %1271
  store i32 120, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1323

1274:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  %1275 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #10
  store ptr %1275, ptr %123, align 8, !tbaa !5
  br label %1276

1276:                                             ; preds = %1274
  %1277 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1278 unwind label %1294

1278:                                             ; preds = %1276
  br i1 %1277, label %1279, label %1298

1279:                                             ; preds = %1278
  %1280 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !78
  %1281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1280, ptr noundef @__func__._Z13LowerHIR_TypeRK7TypeRef)
          to label %1282 unwind label %1294

1282:                                             ; preds = %1279
  %1283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1281, ptr noundef @.str.26)
          to label %1284 unwind label %1294

1284:                                             ; preds = %1282
  %1285 = load ptr, ptr %123, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.Type_TraitPath, ptr %1285, i32 0, i32 1
  %1287 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1286) #10
  %1288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1283, ptr noundef nonnull align 8 dereferenceable(240) %1287)
          to label %1289 unwind label %1294

1289:                                             ; preds = %1284
  %1290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1288, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1291 unwind label %1294

1291:                                             ; preds = %1289
  %1292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1290, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1293 unwind label %1294

1293:                                             ; preds = %1291
  br label %1298

1294:                                             ; preds = %1291, %1289, %1284, %1282, %1279, %1276
  %1295 = landingpad { ptr, i32 }
          cleanup
  %1296 = extractvalue { ptr, i32 } %1295, 0
  store ptr %1296, ptr %13, align 8
  %1297 = extractvalue { ptr, i32 } %1295, 1
  store i32 %1297, ptr %14, align 4
  br label %1322

1298:                                             ; preds = %1293, %1278
  br label %1299

1299:                                             ; preds = %1298
  br label %1300

1300:                                             ; preds = %1299
  call void @llvm.lifetime.start.p0(i64 144, ptr %124) #10
  %1301 = load ptr, ptr %4, align 8, !tbaa !5
  %1302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1301)
          to label %1303 unwind label %1313

1303:                                             ; preds = %1300
  %1304 = load ptr, ptr %123, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.Type_TraitPath, ptr %1304, i32 0, i32 1
  %1306 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1305) #10
  %1307 = load ptr, ptr %123, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.Type_TraitPath, ptr %1307, i32 0, i32 0
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %124, ptr noundef nonnull align 8 dereferenceable(8) %1302, ptr noundef nonnull align 8 dereferenceable(240) %1306, ptr noundef nonnull align 8 dereferenceable(24) %1308, i1 noundef zeroext true)
          to label %1309 unwind label %1313

1309:                                             ; preds = %1303
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %119, ptr noundef nonnull align 8 dereferenceable(144) %124)
          to label %1310 unwind label %1317

1310:                                             ; preds = %1309
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %124) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1311

1311:                                             ; preds = %1310
  %1312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #10
  br label %1271

1313:                                             ; preds = %1303, %1300
  %1314 = landingpad { ptr, i32 }
          cleanup
  %1315 = extractvalue { ptr, i32 } %1314, 0
  store ptr %1315, ptr %13, align 8
  %1316 = extractvalue { ptr, i32 } %1314, 1
  store i32 %1316, ptr %14, align 4
  br label %1321

1317:                                             ; preds = %1309
  %1318 = landingpad { ptr, i32 }
          cleanup
  %1319 = extractvalue { ptr, i32 } %1318, 0
  store ptr %1319, ptr %13, align 8
  %1320 = extractvalue { ptr, i32 } %1318, 1
  store i32 %1320, ptr %14, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %124) #10
  br label %1321

1321:                                             ; preds = %1317, %1313
  call void @llvm.lifetime.end.p0(i64 144, ptr %124) #10
  br label %1322

1322:                                             ; preds = %1321, %1294
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1556

1323:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #10
  store i8 1, ptr %125, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #10
  %1324 = load ptr, ptr %115, align 8, !tbaa !5
  %1325 = getelementptr inbounds %"struct.TypeData::Data_ErasedType", ptr %1324, i32 0, i32 1
  store ptr %1325, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  %1326 = load ptr, ptr %126, align 8, !tbaa !5
  %1327 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1326) #10
  %1328 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %127, i32 0, i32 0
  store ptr %1327, ptr %1328, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #10
  %1329 = load ptr, ptr %126, align 8, !tbaa !5
  %1330 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1329) #10
  %1331 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %128, i32 0, i32 0
  store ptr %1330, ptr %1331, align 8
  br label %1332

1332:                                             ; preds = %1392, %1323
  %1333 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  br i1 %1333, label %1335, label %1334

1334:                                             ; preds = %1332
  store i32 124, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  br label %1396

1335:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #10
  %1336 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %127) #10
  store ptr %1336, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr %130) #10
  %1337 = load ptr, ptr %4, align 8, !tbaa !5
  %1338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1337)
          to label %1339 unwind label %1351

1339:                                             ; preds = %1335
  %1340 = load ptr, ptr %129, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.Type_TraitPath, ptr %1340, i32 0, i32 1
  %1342 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1341) #10
  %1343 = load ptr, ptr %129, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.Type_TraitPath, ptr %1343, i32 0, i32 0
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %130, ptr noundef nonnull align 8 dereferenceable(8) %1338, ptr noundef nonnull align 8 dereferenceable(240) %1342, ptr noundef nonnull align 8 dereferenceable(24) %1344, i1 noundef zeroext true)
          to label %1345 unwind label %1351

1345:                                             ; preds = %1339
  %1346 = getelementptr inbounds %"class.HIR::TraitPath", ptr %130, i32 0, i32 1
  %1347 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1346, i32 0, i32 0
  %1348 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1347, ptr noundef nonnull align 8 dereferenceable(8) @path_Sized)
          to label %1349 unwind label %1355

1349:                                             ; preds = %1345
  br i1 %1348, label %1350, label %1359

1350:                                             ; preds = %1349
  store i8 0, ptr %125, align 1, !tbaa !9
  br label %1391

1351:                                             ; preds = %1339, %1335
  %1352 = landingpad { ptr, i32 }
          cleanup
  %1353 = extractvalue { ptr, i32 } %1352, 0
  store ptr %1353, ptr %13, align 8
  %1354 = extractvalue { ptr, i32 } %1352, 1
  store i32 %1354, ptr %14, align 4
  br label %1395

1355:                                             ; preds = %1345
  %1356 = landingpad { ptr, i32 }
          cleanup
  %1357 = extractvalue { ptr, i32 } %1356, 0
  store ptr %1357, ptr %13, align 8
  %1358 = extractvalue { ptr, i32 } %1356, 1
  store i32 %1358, ptr %14, align 4
  br label %1394

1359:                                             ; preds = %1349
  br label %1360

1360:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #10
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  %1361 = load ptr, ptr %4, align 8, !tbaa !5
  %1362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1361)
          to label %1363 unwind label %1371

1363:                                             ; preds = %1360
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %1362)
          to label %1364 unwind label %1371

1364:                                             ; preds = %1363
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #10
  %1365 = getelementptr inbounds %class.anon.362, ptr %134, i32 0, i32 0
  store ptr %131, ptr %1365, align 8, !tbaa !5
  %1366 = getelementptr inbounds %class.anon.362, ptr %134, i32 0, i32 1
  %1367 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %1367, ptr %1366, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 8 dereferenceable(16) %134) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef %133)
          to label %1368 unwind label %1375

1368:                                             ; preds = %1364
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  %1369 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1369, ptr noundef @.str.8)
          to label %1370 unwind label %1380

1370:                                             ; preds = %1368
  invoke void @__cxa_throw(ptr %1369, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %1777 unwind label %1384

1371:                                             ; preds = %1363, %1360
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %13, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %14, align 4
  br label %1379

1375:                                             ; preds = %1364
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %13, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  br label %1379

1379:                                             ; preds = %1375, %1371
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  br label %1388

1380:                                             ; preds = %1368
  %1381 = landingpad { ptr, i32 }
          cleanup
  %1382 = extractvalue { ptr, i32 } %1381, 0
  store ptr %1382, ptr %13, align 8
  %1383 = extractvalue { ptr, i32 } %1381, 1
  store i32 %1383, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1369) #10
  br label %1388

1384:                                             ; preds = %1370
  %1385 = landingpad { ptr, i32 }
          cleanup
  %1386 = extractvalue { ptr, i32 } %1385, 0
  store ptr %1386, ptr %13, align 8
  %1387 = extractvalue { ptr, i32 } %1385, 1
  store i32 %1387, ptr %14, align 4
  br label %1388

1388:                                             ; preds = %1384, %1380, %1379
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  br label %1394

1389:                                             ; No predecessors!
  br label %1390

1390:                                             ; preds = %1389
  br label %1391

1391:                                             ; preds = %1390, %1350
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %130) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  br label %1392

1392:                                             ; preds = %1391
  %1393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %127) #10
  br label %1332

1394:                                             ; preds = %1388, %1355
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %130) #10
  br label %1395

1395:                                             ; preds = %1394, %1351
  call void @llvm.lifetime.end.p0(i64 144, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  br label %1555

1396:                                             ; preds = %1334
  call void @llvm.lifetime.start.p0(i64 24, ptr %135) #10
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #10
  %1397 = load ptr, ptr %115, align 8, !tbaa !5
  %1398 = getelementptr inbounds %"struct.TypeData::Data_ErasedType", ptr %1397, i32 0, i32 2
  %1399 = call noundef i64 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1398) #10
  %1400 = icmp eq i64 %1399, 0
  br i1 %1400, label %1401, label %1402

1401:                                             ; preds = %1396
  br label %1428

1402:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #10
  %1403 = load ptr, ptr %115, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"struct.TypeData::Data_ErasedType", ptr %1403, i32 0, i32 2
  store ptr %1404, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #10
  %1405 = load ptr, ptr %136, align 8, !tbaa !5
  %1406 = call ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1405) #10
  %1407 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.363", ptr %137, i32 0, i32 0
  store ptr %1406, ptr %1407, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #10
  %1408 = load ptr, ptr %136, align 8, !tbaa !5
  %1409 = call ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1408) #10
  %1410 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.363", ptr %138, i32 0, i32 0
  store ptr %1409, ptr %1410, align 8
  br label %1411

1411:                                             ; preds = %1421, %1402
  %1412 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %138) #10
  br i1 %1412, label %1414, label %1413

1413:                                             ; preds = %1411
  store i32 128, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  br label %1427

1414:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #10
  %1415 = call noundef nonnull align 8 dereferenceable(18) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  store ptr %1415, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #10
  %1416 = load ptr, ptr %139, align 8, !tbaa !5
  %1417 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %1416)
          to label %1418 unwind label %1423

1418:                                             ; preds = %1414
  %1419 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %140, i32 0, i32 0
  store i32 %1417, ptr %1419, align 4
  invoke void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 4 dereferenceable(4) %140)
          to label %1420 unwind label %1423

1420:                                             ; preds = %1418
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  br label %1421

1421:                                             ; preds = %1420
  %1422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br label %1411

1423:                                             ; preds = %1418, %1414
  %1424 = landingpad { ptr, i32 }
          cleanup
  %1425 = extractvalue { ptr, i32 } %1424, 0
  store ptr %1425, ptr %13, align 8
  %1426 = extractvalue { ptr, i32 } %1424, 1
  store i32 %1426, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  br label %1554

1427:                                             ; preds = %1413
  br label %1428

1428:                                             ; preds = %1427, %1401
  call void @llvm.lifetime.start.p0(i64 104, ptr %141) #10
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2Ev(ptr noundef nonnull align 8 dereferenceable(104) %141)
          to label %1429 unwind label %1449

1429:                                             ; preds = %1428
  %1430 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !124
  %1431 = icmp ne ptr %1430, null
  br i1 %1431, label %1432, label %1506

1432:                                             ; preds = %1429
  %1433 = load ptr, ptr getelementptr inbounds (%"struct.(anonymous namespace)::ImplTraitSource", ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i32 0, i32 2), align 8, !tbaa !126
  %1434 = icmp ne ptr %1433, null
  br i1 %1434, label %1435, label %1477

1435:                                             ; preds = %1432
  %1436 = load ptr, ptr getelementptr inbounds (%"struct.(anonymous namespace)::ImplTraitSource", ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i32 0, i32 2), align 8, !tbaa !126
  %1437 = invoke noundef zeroext i1 @_ZNK3HIR13GenericParams10is_genericEv(ptr noundef nonnull align 8 dereferenceable(96) %1436)
          to label %1438 unwind label %1453

1438:                                             ; preds = %1435
  br i1 %1437, label %1439, label %1477

1439:                                             ; preds = %1438
  br label %1440

1440:                                             ; preds = %1439
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  %1441 = load ptr, ptr %4, align 8, !tbaa !5
  %1442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1441)
          to label %1443 unwind label %1457

1443:                                             ; preds = %1440
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %1442)
          to label %1444 unwind label %1457

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  %1445 = getelementptr inbounds %class.anon.364, ptr %145, i32 0, i32 0
  store ptr %142, ptr %1445, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef %144)
          to label %1446 unwind label %1461

1446:                                             ; preds = %1444
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  %1447 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1447, ptr noundef @.str.8)
          to label %1448 unwind label %1466

1448:                                             ; preds = %1446
  invoke void @__cxa_throw(ptr %1447, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %1777 unwind label %1470

1449:                                             ; preds = %1428
  %1450 = landingpad { ptr, i32 }
          cleanup
  %1451 = extractvalue { ptr, i32 } %1450, 0
  store ptr %1451, ptr %13, align 8
  %1452 = extractvalue { ptr, i32 } %1450, 1
  store i32 %1452, ptr %14, align 4
  br label %1553

1453:                                             ; preds = %1435
  %1454 = landingpad { ptr, i32 }
          cleanup
  %1455 = extractvalue { ptr, i32 } %1454, 0
  store ptr %1455, ptr %13, align 8
  %1456 = extractvalue { ptr, i32 } %1454, 1
  store i32 %1456, ptr %14, align 4
  br label %1552

1457:                                             ; preds = %1443, %1440
  %1458 = landingpad { ptr, i32 }
          cleanup
  %1459 = extractvalue { ptr, i32 } %1458, 0
  store ptr %1459, ptr %13, align 8
  %1460 = extractvalue { ptr, i32 } %1458, 1
  store i32 %1460, ptr %14, align 4
  br label %1465

1461:                                             ; preds = %1444
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %13, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  br label %1465

1465:                                             ; preds = %1461, %1457
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  br label %1474

1466:                                             ; preds = %1446
  %1467 = landingpad { ptr, i32 }
          cleanup
  %1468 = extractvalue { ptr, i32 } %1467, 0
  store ptr %1468, ptr %13, align 8
  %1469 = extractvalue { ptr, i32 } %1467, 1
  store i32 %1469, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1447) #10
  br label %1474

1470:                                             ; preds = %1448
  %1471 = landingpad { ptr, i32 }
          cleanup
  %1472 = extractvalue { ptr, i32 } %1471, 0
  store ptr %1472, ptr %13, align 8
  %1473 = extractvalue { ptr, i32 } %1471, 1
  store i32 %1473, ptr %14, align 4
  br label %1474

1474:                                             ; preds = %1470, %1466, %1465
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  br label %1552

1475:                                             ; No predecessors!
  br label %1476

1476:                                             ; preds = %1475
  br label %1477

1477:                                             ; preds = %1476, %1438, %1432
  call void @llvm.lifetime.start.p0(i64 104, ptr %146) #10
  %1478 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %147, i32 0, i32 0
  %1479 = load ptr, ptr getelementptr inbounds (%"struct.(anonymous namespace)::ImplTraitSource", ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i32 0, i32 1), align 8, !tbaa !127
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %1478, ptr noundef nonnull align 8 dereferenceable(96) %1479, i32 noundef 0, i1 noundef zeroext false)
          to label %1480 unwind label %1488

1480:                                             ; preds = %1477
  %1481 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", ptr %147, i32 0, i32 1
  %1482 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !124
  %1483 = load ptr, ptr getelementptr inbounds (%"struct.(anonymous namespace)::ImplTraitSource", ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i32 0, i32 1), align 8, !tbaa !127
  invoke void @_ZSt11make_sharedIN3HIR30TypeData_ErasedType_AliasInnerEJRKNS0_8ItemPathERKNS0_13GenericParamsEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.142") align 8 %1481, ptr noundef nonnull align 8 dereferenceable(56) %1482, ptr noundef nonnull align 8 dereferenceable(96) %1483)
          to label %1484 unwind label %1492

1484:                                             ; preds = %1480
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_10Data_AliasE(ptr noundef nonnull align 8 dereferenceable(104) %146, ptr noundef %147)
          to label %1485 unwind label %1496

1485:                                             ; preds = %1484
  %1486 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3HIR25TypeData_ErasedType_InneraSEOS0_(ptr noundef nonnull align 8 dereferenceable(104) %141, ptr noundef nonnull align 8 dereferenceable(104) %146)
          to label %1487 unwind label %1500

1487:                                             ; preds = %1485
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %146) #10
  call void @_ZN3HIR25TypeData_ErasedType_Inner10Data_AliasD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %147) #10
  call void @llvm.lifetime.end.p0(i64 104, ptr %146) #10
  br label %1533

1488:                                             ; preds = %1477
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %13, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %14, align 4
  br label %1505

1492:                                             ; preds = %1480
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %13, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %14, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1478) #10
  br label %1505

1496:                                             ; preds = %1484
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %13, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %14, align 4
  br label %1504

1500:                                             ; preds = %1485
  %1501 = landingpad { ptr, i32 }
          cleanup
  %1502 = extractvalue { ptr, i32 } %1501, 0
  store ptr %1502, ptr %13, align 8
  %1503 = extractvalue { ptr, i32 } %1501, 1
  store i32 %1503, ptr %14, align 4
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %146) #10
  br label %1504

1504:                                             ; preds = %1500, %1496
  call void @_ZN3HIR25TypeData_ErasedType_Inner10Data_AliasD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %147) #10
  br label %1505

1505:                                             ; preds = %1504, %1492, %1488
  call void @llvm.lifetime.end.p0(i64 104, ptr %146) #10
  br label %1552

1506:                                             ; preds = %1429
  call void @llvm.lifetime.start.p0(i64 104, ptr %148) #10
  %1507 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %149, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1508 unwind label %1514

1508:                                             ; preds = %1506
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %1507, ptr noundef %150)
          to label %1509 unwind label %1518

1509:                                             ; preds = %1508
  %1510 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", ptr %149, i32 0, i32 1
  store i32 0, ptr %1510, align 8, !tbaa !128
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_8Data_FcnE(ptr noundef nonnull align 8 dereferenceable(104) %148, ptr noundef %149)
          to label %1511 unwind label %1522

1511:                                             ; preds = %1509
  %1512 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3HIR25TypeData_ErasedType_InneraSEOS0_(ptr noundef nonnull align 8 dereferenceable(104) %141, ptr noundef nonnull align 8 dereferenceable(104) %148)
          to label %1513 unwind label %1526

1513:                                             ; preds = %1511
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %148) #10
  call void @_ZN3HIR25TypeData_ErasedType_Inner8Data_FcnD2Ev(ptr noundef nonnull align 8 dereferenceable(92) %149) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #10
  call void @llvm.lifetime.end.p0(i64 104, ptr %148) #10
  br label %1533

1514:                                             ; preds = %1506
  %1515 = landingpad { ptr, i32 }
          cleanup
  %1516 = extractvalue { ptr, i32 } %1515, 0
  store ptr %1516, ptr %13, align 8
  %1517 = extractvalue { ptr, i32 } %1515, 1
  store i32 %1517, ptr %14, align 4
  br label %1532

1518:                                             ; preds = %1508
  %1519 = landingpad { ptr, i32 }
          cleanup
  %1520 = extractvalue { ptr, i32 } %1519, 0
  store ptr %1520, ptr %13, align 8
  %1521 = extractvalue { ptr, i32 } %1519, 1
  store i32 %1521, ptr %14, align 4
  br label %1531

1522:                                             ; preds = %1509
  %1523 = landingpad { ptr, i32 }
          cleanup
  %1524 = extractvalue { ptr, i32 } %1523, 0
  store ptr %1524, ptr %13, align 8
  %1525 = extractvalue { ptr, i32 } %1523, 1
  store i32 %1525, ptr %14, align 4
  br label %1530

1526:                                             ; preds = %1511
  %1527 = landingpad { ptr, i32 }
          cleanup
  %1528 = extractvalue { ptr, i32 } %1527, 0
  store ptr %1528, ptr %13, align 8
  %1529 = extractvalue { ptr, i32 } %1527, 1
  store i32 %1529, ptr %14, align 4
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %148) #10
  br label %1530

1530:                                             ; preds = %1526, %1522
  call void @_ZN3HIR25TypeData_ErasedType_Inner8Data_FcnD2Ev(ptr noundef nonnull align 8 dereferenceable(92) %149) #10
  br label %1531

1531:                                             ; preds = %1530, %1518
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #10
  br label %1532

1532:                                             ; preds = %1531, %1514
  call void @llvm.lifetime.end.p0(i64 104, ptr %148) #10
  br label %1552

1533:                                             ; preds = %1513, %1487
  %1534 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %152, i32 0, i32 0
  %1535 = load i8, ptr %125, align 1, !tbaa !9, !range !11, !noundef !12
  %1536 = trunc i8 %1535 to i1
  %1537 = zext i1 %1536 to i8
  store i8 %1537, ptr %1534, align 8, !tbaa !133
  %1538 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %152, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1538, ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  %1539 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %152, i32 0, i32 2
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1539, ptr noundef nonnull align 8 dereferenceable(24) %135) #10
  %1540 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %152, i32 0, i32 3
  call void @_ZN3HIR25TypeData_ErasedType_InnerC2EOS0_(ptr noundef nonnull align 8 dereferenceable(104) %1540, ptr noundef nonnull align 8 dereferenceable(104) %141) #10
  invoke void @_ZN3HIR8TypeDataC2ENS_19TypeData_ErasedTypeE(ptr noundef nonnull align 8 dereferenceable(184) %151, ptr noundef %152)
          to label %1541 unwind label %1543

1541:                                             ; preds = %1533
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %151)
          to label %1542 unwind label %1547

1542:                                             ; preds = %1541
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %151) #10
  call void @_ZN3HIR19TypeData_ErasedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %152) #10
  store i32 1, ptr %6, align 4
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %141) #10
  call void @llvm.lifetime.end.p0(i64 104, ptr %141) #10
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #10
  br label %1558

1543:                                             ; preds = %1533
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %13, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %14, align 4
  br label %1551

1547:                                             ; preds = %1541
  %1548 = landingpad { ptr, i32 }
          cleanup
  %1549 = extractvalue { ptr, i32 } %1548, 0
  store ptr %1549, ptr %13, align 8
  %1550 = extractvalue { ptr, i32 } %1548, 1
  store i32 %1550, ptr %14, align 4
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %151) #10
  br label %1551

1551:                                             ; preds = %1547, %1543
  call void @_ZN3HIR19TypeData_ErasedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %152) #10
  br label %1552

1552:                                             ; preds = %1551, %1532, %1505, %1474, %1453
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %141) #10
  br label %1553

1553:                                             ; preds = %1552, %1449
  call void @llvm.lifetime.end.p0(i64 104, ptr %141) #10
  br label %1554

1554:                                             ; preds = %1553, %1423
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #10
  br label %1555

1555:                                             ; preds = %1554, %1395
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #10
  br label %1556

1556:                                             ; preds = %1555, %1322
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #10
  br label %1560

1557:                                             ; No predecessors!
  store i8 0, ptr %114, align 1, !tbaa !9
  br label %1235, !llvm.loop !141

1558:                                             ; preds = %1542, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  %1559 = load i32, ptr %6, align 4
  switch i32 %1559, label %1563 [
    i32 115, label %1561
  ]

1560:                                             ; preds = %1556, %1256, %1252
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  br label %1764

1561:                                             ; preds = %1558
  br label %1562

1562:                                             ; preds = %1561
  store i8 0, ptr %114, align 1, !tbaa !9
  br label %1228, !llvm.loop !142

1563:                                             ; preds = %1558, %1231
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  %1564 = load i32, ptr %6, align 4
  switch i32 %1564, label %1762 [
    i32 112, label %1565
  ]

1565:                                             ; preds = %1563
  br label %1760

1566:                                             ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #10
  store i8 1, ptr %153, align 1, !tbaa !9
  br label %1567

1567:                                             ; preds = %1716, %1566
  %1568 = load i8, ptr %153, align 1, !tbaa !9, !range !11, !noundef !12
  %1569 = trunc i8 %1568 to i1
  br i1 %1569, label %1571, label %1570

1570:                                             ; preds = %1567
  store i32 132, ptr %6, align 4
  br label %1717

1571:                                             ; preds = %1567
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #10
  %1572 = load ptr, ptr %7, align 8, !tbaa !5
  %1573 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(112) %1572)
  store ptr %1573, ptr %154, align 8, !tbaa !5
  br label %1574

1574:                                             ; preds = %1712, %1571
  %1575 = load ptr, ptr %154, align 8, !tbaa !5
  %1576 = load i8, ptr %153, align 1, !tbaa !9, !range !11, !noundef !12
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1579, label %1578

1578:                                             ; preds = %1574
  store i32 135, ptr %6, align 4
  br label %1713

1579:                                             ; preds = %1574
  call void @llvm.lifetime.start.p0(i64 96, ptr %155) #10
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %155) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #10
  %1580 = load ptr, ptr %154, align 8, !tbaa !5
  %1581 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1580, i32 0, i32 0
  %1582 = getelementptr inbounds %struct.Type_Function, ptr %1581, i32 0, i32 0
  %1583 = getelementptr inbounds %"class.AST::HigherRankedBounds", ptr %1582, i32 0, i32 0
  store ptr %1583, ptr %156, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #10
  %1584 = load ptr, ptr %156, align 8, !tbaa !5
  %1585 = call ptr @_ZNKSt6vectorIN3AST13LifetimeParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1584) #10
  %1586 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.259", ptr %157, i32 0, i32 0
  store ptr %1585, ptr %1586, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #10
  %1587 = load ptr, ptr %156, align 8, !tbaa !5
  %1588 = call ptr @_ZNKSt6vectorIN3AST13LifetimeParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1587) #10
  %1589 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.259", ptr %158, i32 0, i32 0
  store ptr %1588, ptr %1589, align 8
  br label %1590

1590:                                             ; preds = %1603, %1579
  %1591 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #10
  br i1 %1591, label %1593, label %1592

1592:                                             ; preds = %1590
  store i32 138, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  br label %1614

1593:                                             ; preds = %1590
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #10
  %1594 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  store ptr %1594, ptr %159, align 8, !tbaa !5
  %1595 = getelementptr inbounds %"class.HIR::GenericParams", ptr %155, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #10
  %1596 = getelementptr inbounds %"struct.HIR::LifetimeDef", ptr %160, i32 0, i32 0
  %1597 = load ptr, ptr %159, align 8, !tbaa !5
  %1598 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST13LifetimeParam4nameEv(ptr noundef nonnull align 8 dereferenceable(48) %1597)
          to label %1599 unwind label %1605

1599:                                             ; preds = %1593
  %1600 = getelementptr inbounds %struct.Ident, ptr %1598, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %1596, ptr noundef nonnull align 8 dereferenceable(8) %1600)
          to label %1601 unwind label %1605

1601:                                             ; preds = %1599
  invoke void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1595, ptr noundef nonnull align 8 dereferenceable(8) %160)
          to label %1602 unwind label %1609

1602:                                             ; preds = %1601
  call void @_ZN3HIR11LifetimeDefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  br label %1603

1603:                                             ; preds = %1602
  %1604 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  br label %1590

1605:                                             ; preds = %1599, %1593
  %1606 = landingpad { ptr, i32 }
          cleanup
  %1607 = extractvalue { ptr, i32 } %1606, 0
  store ptr %1607, ptr %13, align 8
  %1608 = extractvalue { ptr, i32 } %1606, 1
  store i32 %1608, ptr %14, align 4
  br label %1613

1609:                                             ; preds = %1601
  %1610 = landingpad { ptr, i32 }
          cleanup
  %1611 = extractvalue { ptr, i32 } %1610, 0
  store ptr %1611, ptr %13, align 8
  %1612 = extractvalue { ptr, i32 } %1610, 1
  store i32 %1612, ptr %14, align 4
  call void @_ZN3HIR11LifetimeDefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  br label %1613

1613:                                             ; preds = %1609, %1605
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  br label %1711

1614:                                             ; preds = %1592
  call void @llvm.lifetime.start.p0(i64 24, ptr %161) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %1615 = load ptr, ptr %154, align 8, !tbaa !5
  %1616 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1615, i32 0, i32 0
  %1617 = getelementptr inbounds %struct.Type_Function, ptr %1616, i32 0, i32 5
  store ptr %1617, ptr %162, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #10
  %1618 = load ptr, ptr %162, align 8, !tbaa !5
  %1619 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1618) #10
  %1620 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.292", ptr %163, i32 0, i32 0
  store ptr %1619, ptr %1620, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #10
  %1621 = load ptr, ptr %162, align 8, !tbaa !5
  %1622 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1621) #10
  %1623 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.292", ptr %164, i32 0, i32 0
  store ptr %1622, ptr %1623, align 8
  br label %1624

1624:                                             ; preds = %1632, %1614
  %1625 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(8) %164) #10
  br i1 %1625, label %1627, label %1626

1626:                                             ; preds = %1624
  store i32 140, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  br label %1643

1627:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #10
  %1628 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %163) #10
  store ptr %1628, ptr %165, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #10
  %1629 = load ptr, ptr %165, align 8, !tbaa !5
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %166, ptr noundef nonnull align 8 dereferenceable(120) %1629)
          to label %1630 unwind label %1634

1630:                                             ; preds = %1627
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %161, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %1631 unwind label %1638

1631:                                             ; preds = %1630
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  br label %1632

1632:                                             ; preds = %1631
  %1633 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %163) #10
  br label %1624

1634:                                             ; preds = %1627
  %1635 = landingpad { ptr, i32 }
          cleanup
  %1636 = extractvalue { ptr, i32 } %1635, 0
  store ptr %1636, ptr %13, align 8
  %1637 = extractvalue { ptr, i32 } %1635, 1
  store i32 %1637, ptr %14, align 4
  br label %1642

1638:                                             ; preds = %1630
  %1639 = landingpad { ptr, i32 }
          cleanup
  %1640 = extractvalue { ptr, i32 } %1639, 0
  store ptr %1640, ptr %13, align 8
  %1641 = extractvalue { ptr, i32 } %1639, 1
  store i32 %1641, ptr %14, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  br label %1642

1642:                                             ; preds = %1638, %1634
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  br label %1710

1643:                                             ; preds = %1626
  call void @llvm.lifetime.start.p0(i64 144, ptr %167) #10
  %1644 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1644, ptr noundef nonnull align 8 dereferenceable(96) %155) #10
  %1645 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 1
  %1646 = load ptr, ptr %154, align 8, !tbaa !5
  %1647 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1646, i32 0, i32 0
  %1648 = getelementptr inbounds %struct.Type_Function, ptr %1647, i32 0, i32 1
  %1649 = load i8, ptr %1648, align 8, !tbaa !143, !range !11, !noundef !12
  %1650 = trunc i8 %1649 to i1
  %1651 = zext i1 %1650 to i8
  store i8 %1651, ptr %1645, align 8, !tbaa !157
  %1652 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 2
  %1653 = load ptr, ptr %154, align 8, !tbaa !5
  %1654 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1653, i32 0, i32 0
  %1655 = getelementptr inbounds %struct.Type_Function, ptr %1654, i32 0, i32 6
  %1656 = load i8, ptr %1655, align 8, !tbaa !164, !range !11, !noundef !12
  %1657 = trunc i8 %1656 to i1
  %1658 = zext i1 %1657 to i8
  store i8 %1658, ptr %1652, align 1, !tbaa !165
  %1659 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 3
  %1660 = load ptr, ptr %154, align 8, !tbaa !5
  %1661 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1660, i32 0, i32 0
  %1662 = getelementptr inbounds %struct.Type_Function, ptr %1661, i32 0, i32 3
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %1659, ptr noundef nonnull align 8 dereferenceable(32) %1662)
          to label %1663 unwind label %1679

1663:                                             ; preds = %1643
  %1664 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 4
  %1665 = load ptr, ptr %154, align 8, !tbaa !5
  %1666 = getelementptr inbounds %"struct.TypeData::Data_Function", ptr %1665, i32 0, i32 0
  %1667 = getelementptr inbounds %struct.Type_Function, ptr %1666, i32 0, i32 4
  %1668 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1667) #10
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1664, ptr noundef nonnull align 8 dereferenceable(120) %1668)
          to label %1669 unwind label %1683

1669:                                             ; preds = %1663
  %1670 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 5
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1670, ptr noundef nonnull align 8 dereferenceable(24) %161) #10
  %1671 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 3
  %1672 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1671, ptr noundef @.str.6)
          to label %1673 unwind label %1688

1673:                                             ; preds = %1669
  br i1 %1672, label %1674, label %1701

1674:                                             ; preds = %1673
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #10
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %168, ptr noundef @.str.28)
          to label %1675 unwind label %1692

1675:                                             ; preds = %1674
  %1676 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %167, i32 0, i32 3
  %1677 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %1676, ptr noundef nonnull align 8 dereferenceable(8) %168)
          to label %1678 unwind label %1696

1678:                                             ; preds = %1675
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  br label %1701

1679:                                             ; preds = %1643
  %1680 = landingpad { ptr, i32 }
          cleanup
  %1681 = extractvalue { ptr, i32 } %1680, 0
  store ptr %1681, ptr %13, align 8
  %1682 = extractvalue { ptr, i32 } %1680, 1
  store i32 %1682, ptr %14, align 4
  br label %1687

1683:                                             ; preds = %1663
  %1684 = landingpad { ptr, i32 }
          cleanup
  %1685 = extractvalue { ptr, i32 } %1684, 0
  store ptr %1685, ptr %13, align 8
  %1686 = extractvalue { ptr, i32 } %1684, 1
  store i32 %1686, ptr %14, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %1659) #10
  br label %1687

1687:                                             ; preds = %1683, %1679
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1644) #10
  br label %1709

1688:                                             ; preds = %1701, %1669
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %13, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %14, align 4
  br label %1708

1692:                                             ; preds = %1674
  %1693 = landingpad { ptr, i32 }
          cleanup
  %1694 = extractvalue { ptr, i32 } %1693, 0
  store ptr %1694, ptr %13, align 8
  %1695 = extractvalue { ptr, i32 } %1693, 1
  store i32 %1695, ptr %14, align 4
  br label %1700

1696:                                             ; preds = %1675
  %1697 = landingpad { ptr, i32 }
          cleanup
  %1698 = extractvalue { ptr, i32 } %1697, 0
  store ptr %1698, ptr %13, align 8
  %1699 = extractvalue { ptr, i32 } %1697, 1
  store i32 %1699, ptr %14, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  br label %1700

1700:                                             ; preds = %1696, %1692
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  br label %1708

1701:                                             ; preds = %1678, %1673
  invoke void @_ZN3HIR24TypeData_FunctionPointerC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %169, ptr noundef nonnull align 8 dereferenceable(144) %167)
          to label %1702 unwind label %1688

1702:                                             ; preds = %1701
  invoke void @_ZN3HIR7TypeRefC2ENS_24TypeData_FunctionPointerE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %169)
          to label %1703 unwind label %1704

1703:                                             ; preds = %1702
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %169) #10
  store i32 1, ptr %6, align 4
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %167) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %167) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %161) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %155) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %155) #10
  br label %1713

1704:                                             ; preds = %1702
  %1705 = landingpad { ptr, i32 }
          cleanup
  %1706 = extractvalue { ptr, i32 } %1705, 0
  store ptr %1706, ptr %13, align 8
  %1707 = extractvalue { ptr, i32 } %1705, 1
  store i32 %1707, ptr %14, align 4
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %169) #10
  br label %1708

1708:                                             ; preds = %1704, %1700, %1688
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %167) #10
  br label %1709

1709:                                             ; preds = %1708, %1687
  call void @llvm.lifetime.end.p0(i64 144, ptr %167) #10
  br label %1710

1710:                                             ; preds = %1709, %1642
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %161) #10
  br label %1711

1711:                                             ; preds = %1710, %1613
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %155) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %155) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #10
  br label %1764

1712:                                             ; No predecessors!
  store i8 0, ptr %153, align 1, !tbaa !9
  br label %1574, !llvm.loop !166

1713:                                             ; preds = %1703, %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #10
  %1714 = load i32, ptr %6, align 4
  switch i32 %1714, label %1717 [
    i32 135, label %1715
  ]

1715:                                             ; preds = %1713
  br label %1716

1716:                                             ; preds = %1715
  store i8 0, ptr %153, align 1, !tbaa !9
  br label %1567, !llvm.loop !167

1717:                                             ; preds = %1713, %1570
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #10
  %1718 = load i32, ptr %6, align 4
  switch i32 %1718, label %1762 [
    i32 132, label %1719
  ]

1719:                                             ; preds = %1717
  br label %1760

1720:                                             ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #10
  store i8 1, ptr %170, align 1, !tbaa !9
  br label %1721

1721:                                             ; preds = %1756, %1720
  %1722 = load i8, ptr %170, align 1, !tbaa !9, !range !11, !noundef !12
  %1723 = trunc i8 %1722 to i1
  br i1 %1723, label %1725, label %1724

1724:                                             ; preds = %1721
  store i32 142, ptr %6, align 4
  br label %1757

1725:                                             ; preds = %1721
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #10
  %1726 = load ptr, ptr %7, align 8, !tbaa !5
  %1727 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(112) %1726)
  store ptr %1727, ptr %171, align 8, !tbaa !5
  br label %1728

1728:                                             ; preds = %1752, %1725
  %1729 = load ptr, ptr %171, align 8, !tbaa !5
  %1730 = load i8, ptr %170, align 1, !tbaa !9, !range !11, !noundef !12
  %1731 = trunc i8 %1730 to i1
  br i1 %1731, label %1733, label %1732

1732:                                             ; preds = %1728
  store i32 145, ptr %6, align 4
  br label %1753

1733:                                             ; preds = %1728
  %1734 = load ptr, ptr %171, align 8, !tbaa !5
  %1735 = getelementptr inbounds %"struct.TypeData::Data_Generic", ptr %1734, i32 0, i32 1
  %1736 = load i32, ptr %1735, align 8, !tbaa !168
  %1737 = icmp ult i32 %1736, 65536
  br i1 %1737, label %1738, label %1739

1738:                                             ; preds = %1733
  br label %1741

1739:                                             ; preds = %1733
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 1078, ptr noundef @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

1740:                                             ; No predecessors!
  br label %1741

1741:                                             ; preds = %1740, %1738
  %1742 = load ptr, ptr %171, align 8, !tbaa !5
  %1743 = getelementptr inbounds %"struct.TypeData::Data_Generic", ptr %1742, i32 0, i32 0
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %1743)
  %1744 = load ptr, ptr %171, align 8, !tbaa !5
  %1745 = getelementptr inbounds %"struct.TypeData::Data_Generic", ptr %1744, i32 0, i32 1
  %1746 = load i32, ptr %1745, align 8, !tbaa !168
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %172, i32 noundef %1746)
          to label %1747 unwind label %1748

1747:                                             ; preds = %1741
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  store i32 1, ptr %6, align 4
  br label %1753

1748:                                             ; preds = %1741
  %1749 = landingpad { ptr, i32 }
          cleanup
  %1750 = extractvalue { ptr, i32 } %1749, 0
  store ptr %1750, ptr %13, align 8
  %1751 = extractvalue { ptr, i32 } %1749, 1
  store i32 %1751, ptr %14, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #10
  br label %1764

1752:                                             ; No predecessors!
  store i8 0, ptr %170, align 1, !tbaa !9
  br label %1728, !llvm.loop !170

1753:                                             ; preds = %1747, %1732
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  %1754 = load i32, ptr %6, align 4
  switch i32 %1754, label %1757 [
    i32 145, label %1755
  ]

1755:                                             ; preds = %1753
  br label %1756

1756:                                             ; preds = %1755
  store i8 0, ptr %170, align 1, !tbaa !9
  br label %1721, !llvm.loop !171

1757:                                             ; preds = %1753, %1724
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #10
  %1758 = load i32, ptr %6, align 4
  switch i32 %1758, label %1762 [
    i32 142, label %1759
  ]

1759:                                             ; preds = %1757
  br label %1760

1760:                                             ; preds = %1759, %1719, %1565, %1226, %928, %806, %770, %540, %503, %459, %403, %323, %288, %266, %244, %222, %184
  br label %1761

1761:                                             ; preds = %1760
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %180, !llvm.loop !172

1762:                                             ; preds = %1757, %1717, %1563, %1224, %926, %804, %768, %538, %501, %457, %401, %286, %264, %242, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  %1763 = load i32, ptr %6, align 4
  switch i32 %1763, label %1767 [
    i32 5, label %1765
  ]

1764:                                             ; preds = %1748, %1711, %1560, %1218, %920, %798, %762, %529, %492, %451, %398, %320, %219
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #10
  br label %1772

1765:                                             ; preds = %1762
  br label %1766

1766:                                             ; preds = %1765
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %173, !llvm.loop !173

1767:                                             ; preds = %1762, %176
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #10
  %1768 = load i32, ptr %6, align 4
  switch i32 %1768, label %1777 [
    i32 2, label %1769
    i32 1, label %1771
  ]

1769:                                             ; preds = %1767
  %1770 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.30, ptr %1770, align 16, !tbaa !5
  call void @__cxa_throw(ptr %1770, ptr @_ZTIPKc, ptr null) #12
  unreachable

1771:                                             ; preds = %1767
  ret void

1772:                                             ; preds = %1764
  %1773 = load ptr, ptr %13, align 8
  %1774 = load i32, ptr %14, align 4
  %1775 = insertvalue { ptr, i32 } poison, ptr %1773, 0
  %1776 = insertvalue { ptr, i32 } %1775, i32 %1774, 1
  resume { ptr, i32 } %1776

1777:                                             ; preds = %1767, %1448, %1370, %1147, %974, %600
  unreachable
}

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #0

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i1 noundef zeroext) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_PathRK4SpanRKN3AST4PathE17FromAST_PathClass(ptr dead_on_unwind noalias writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef) #0

declare noundef zeroext i1 @_Z13debug_enabledv() #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_ExprRKSt10shared_ptrIN3AST8ExprNodeEE(ptr dead_on_unwind noalias writable sret(%"class.HIR::ExprPtr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #0

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN3HIR24ConstGeneric_UnevaluatedEJNS0_7ExprPtrEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.145") align 8, ptr noundef nonnull align 8 dereferenceable(72)) #7

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240)) #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128geERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_Z19coretype_fromstringPKc(ptr noundef) #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2E4Span9eCoreType(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: nounwind
declare void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(18) ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

declare noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128)) #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZNK8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

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

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

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

declare void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i1 noundef zeroext) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3HIR30TypeData_ErasedType_AliasInnerEJRKNS0_8ItemPathERKNS0_13GenericParamsEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.142") align 8, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96)) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_10Data_AliasE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #0 align 2

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

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

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_8Data_FcnE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR8TypeDataC2ENS_19TypeData_ErasedTypeE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef) unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZNK8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { 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 #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 = { "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 = { 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 #8 = { nounwind willreturn memory(read) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }
attributes #12 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = !{!25, !26, i64 0}
!25 = !{!"_ZTSN8TypeData14Data_PrimitiveE", !26, i64 0}
!26 = !{!"_ZTS9eCoreType", !7, i64 0}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = !{!32, !10, i64 24}
!32 = !{!"_ZTSN8TypeData11Data_BorrowE", !33, i64 0, !10, i64 24, !44, i64 32}
!33 = !{!"_ZTSN3AST11LifetimeRefE", !34, i64 0, !43, i64 16}
!34 = !{!"_ZTS5Ident", !35, i64 0, !42, i64 8}
!35 = !{!"_ZTSN5Ident7HygieneE", !36, i64 0}
!36 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !6, i64 0}
!42 = !{!"_ZTS8RcString", !6, i64 0}
!43 = !{!"short", !7, i64 0}
!44 = !{!"_ZTSSt10unique_ptrI7TypeRefSt14default_deleteIS0_EE", !45, i64 0}
!45 = !{!"_ZTSSt15__uniq_ptr_dataI7TypeRefSt14default_deleteIS0_ELb1ELb1EE", !46, i64 0}
!46 = !{!"_ZTSSt15__uniq_ptr_implI7TypeRefSt14default_deleteIS0_EE", !47, i64 0}
!47 = !{!"_ZTSSt5tupleIJP7TypeRefSt14default_deleteIS0_EEE", !48, i64 0}
!48 = !{!"_ZTSSt11_Tuple_implILm0EJP7TypeRefSt14default_deleteIS0_EEE", !49, i64 0}
!49 = !{!"_ZTSSt10_Head_baseILm0EP7TypeRefLb0EE", !6, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = !{!55, !10, i64 0}
!55 = !{!"_ZTSN8TypeData12Data_PointerE", !10, i64 0, !44, i64 8}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = !{!59, !26, i64 40}
!59 = !{!"_ZTSN3AST16ExprNode_IntegerE", !60, i64 0, !26, i64 40, !67, i64 48}
!60 = !{!"_ZTSN3AST8ExprNodeE", !61, i64 8, !66, i64 32}
!61 = !{!"_ZTSN3AST13AttributeListE", !62, i64 0}
!62 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = !{!"_ZTS4Span", !6, i64 0}
!67 = !{!"_ZTS4U128", !68, i64 0, !68, i64 8}
!68 = !{!"long", !7, i64 0}
!69 = !{!70, !71, i64 0}
!70 = !{!"_ZTSN3AST17PathBinding_Value12Data_GenericE", !71, i64 0}
!71 = !{!"int", !7, i64 0}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = !{!77, !71, i64 0}
!77 = !{!"_ZTSN3AST16PathBinding_Type18Data_TypeParameterE", !71, i64 0}
!78 = !{!71, !71, i64 0}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = !{i64 0, i64 4, !78}
!82 = !{!83, !6, i64 0}
!83 = !{!"_ZTSN3AST16PathBinding_Type10Data_TraitE", !6, i64 0, !6, i64 8}
!84 = !{!83, !6, i64 8}
!85 = !{!86, !10, i64 128}
!86 = !{!"_ZTSN3HIR5TraitE", !87, i64 0, !104, i64 96, !105, i64 104, !10, i64 128, !109, i64 136, !114, i64 192, !116, i64 248, !118, i64 304, !71, i64 360, !105, i64 368, !120, i64 392}
!87 = !{!"_ZTSN3HIR13GenericParamsE", !88, i64 0, !92, i64 24, !96, i64 48, !100, i64 72}
!88 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!92 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!96 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!100 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!104 = !{!"_ZTSN3HIR11LifetimeRefE", !71, i64 0}
!105 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!109 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !110, i64 0}
!110 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !68, i64 8, !111, i64 16, !68, i64 24, !112, i64 32, !6, i64 48}
!111 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!112 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !113, i64 0, !68, i64 8}
!113 = !{!"float", !7, i64 0}
!114 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !115, i64 0}
!115 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !68, i64 8, !111, i64 16, !68, i64 24, !112, i64 32, !6, i64 48}
!116 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !117, i64 0}
!117 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !68, i64 8, !111, i64 16, !68, i64 24, !112, i64 32, !6, i64 48}
!118 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !119, i64 0}
!119 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !68, i64 8, !111, i64 16, !68, i64 24, !112, i64 32, !6, i64 48}
!120 = !{!"_ZTSN3HIR10SimplePathE", !121, i64 0}
!121 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!122 = distinct !{!122, !14}
!123 = distinct !{!123, !14}
!124 = !{!125, !6, i64 0}
!125 = !{!"_ZTSN12_GLOBAL__N_115ImplTraitSourceE", !6, i64 0, !6, i64 8, !6, i64 16}
!126 = !{!125, !6, i64 16}
!127 = !{!125, !6, i64 8}
!128 = !{!129, !71, i64 88}
!129 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner8Data_FcnE", !130, i64 0, !71, i64 88}
!130 = !{!"_ZTSN3HIR4PathE", !131, i64 0}
!131 = !{!"_ZTSN3HIR4Path4DataE", !132, i64 0, !7, i64 8}
!132 = !{!"_ZTSN3HIR4Path4Data3TagE", !7, i64 0}
!133 = !{!134, !10, i64 0}
!134 = !{!"_ZTSN3HIR19TypeData_ErasedTypeE", !10, i64 0, !105, i64 8, !135, i64 32, !139, i64 56}
!135 = !{!"_ZTSSt6vectorIN3HIR11LifetimeRefESaIS1_EE", !136, i64 0}
!136 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE", !137, i64 0}
!137 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE12_Vector_implE", !138, i64 0}
!138 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!139 = !{!"_ZTSN3HIR25TypeData_ErasedType_InnerE", !140, i64 0, !7, i64 8}
!140 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner3TagE", !7, i64 0}
!141 = distinct !{!141, !14}
!142 = distinct !{!142, !14}
!143 = !{!144, !10, i64 24}
!144 = !{!"_ZTSN8TypeData13Data_FunctionE", !145, i64 0}
!145 = !{!"_ZTS13Type_Function", !146, i64 0, !10, i64 24, !151, i64 32, !44, i64 64, !153, i64 72, !10, i64 96}
!146 = !{!"_ZTSN3AST18HigherRankedBoundsE", !147, i64 0}
!147 = !{!"_ZTSSt6vectorIN3AST13LifetimeParamESaIS1_EE", !148, i64 0}
!148 = !{!"_ZTSSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE", !149, i64 0}
!149 = !{!"_ZTSNSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE12_Vector_implE", !150, i64 0}
!150 = !{!"_ZTSNSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!151 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !152, i64 0, !68, i64 8, !7, i64 16}
!152 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!153 = !{!"_ZTSSt6vectorI7TypeRefSaIS0_EE", !154, i64 0}
!154 = !{!"_ZTSSt12_Vector_baseI7TypeRefSaIS0_EE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseI7TypeRefSaIS0_EE12_Vector_implE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseI7TypeRefSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!157 = !{!158, !10, i64 96}
!158 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !87, i64 0, !10, i64 96, !10, i64 97, !42, i64 104, !159, i64 112, !160, i64 120}
!159 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!160 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !161, i64 0}
!161 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !162, i64 0}
!162 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !163, i64 0}
!163 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!164 = !{!144, !10, i64 96}
!165 = !{!158, !10, i64 97}
!166 = distinct !{!166, !14}
!167 = distinct !{!167, !14}
!168 = !{!169, !71, i64 8}
!169 = !{!"_ZTSN8TypeData12Data_GenericE", !42, i64 0, !71, i64 8}
!170 = distinct !{!170, !14}
!171 = distinct !{!171, !14}
!172 = distinct !{!172, !14}
!173 = distinct !{!173, !14}


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

%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.(anonymous namespace)::ImplTraitSource" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { 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.285 = type { i8 }
%class.anon.287 = type { i8 }
%class.anon.289 = type { ptr }
%class.anon.290 = type { i8 }
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = 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 }
%"class.__gnu_cxx::__normal_iterator.292" = type { ptr }
%class.U128 = type { i64, i64 }
%class.anon.293 = type { ptr, ptr }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%class.RcString = type { ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.145", [8 x i8] }
%"class.std::unique_ptr.145" = type { %"struct.std::__uniq_ptr_data.146" }
%"struct.std::__uniq_ptr_data.146" = type { %"class.std::__uniq_ptr_impl.147" }
%"class.std::__uniq_ptr_impl.147" = type { %"class.std::tuple.148" }
%"class.std::tuple.148" = type { %"struct.std::_Tuple_impl.149" }
%"struct.std::_Tuple_impl.149" = type { %"struct.std::_Head_base.152" }
%"struct.std::_Head_base.152" = type { ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.93", %"class.std::vector.93", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::ConstGeneric::InferData" = type { i32 }
%class.anon.294 = type { ptr }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.83", %"class.std::vector.83", %"class.std::vector.88" }
%"class.std::vector.83" = type { %"struct.std::_Vector_base.84" }
%"struct.std::_Vector_base.84" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, 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.106" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.114, %class.ThinVector.115, %class.ThinVector.116 }
%class.ThinVector.114 = type { ptr }
%class.ThinVector.115 = type { ptr }
%class.ThinVector.116 = type { ptr }
%"class.std::unique_ptr.106" = type { %"struct.std::__uniq_ptr_data.107" }
%"struct.std::__uniq_ptr_data.107" = type { %"class.std::__uniq_ptr_impl.108" }
%"class.std::__uniq_ptr_impl.108" = type { %"class.std::tuple.109" }
%"class.std::tuple.109" = type { %"struct.std::_Tuple_impl.110" }
%"struct.std::_Tuple_impl.110" = type { %"struct.std::_Head_base.113" }
%"struct.std::_Head_base.113" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.132", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.106", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.120", ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.120" = type { %"class.std::_Rb_tree.121" }
%"class.std::_Rb_tree.121" = 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.132" = type { %"struct.std::_Vector_base.133" }
%"struct.std::_Vector_base.133" = 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 }
%class.anon.295 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.296" = type { ptr }
%"class.std::span" = type { ptr, i64 }
%class.anon.358 = type { ptr }
%"class.HIR::TypeData" = type { i32, %"union.HIR::TypeData::DataUnion" }
%"union.HIR::TypeData::DataUnion" = type { %"struct.HIR::TypeData_ErasedType", [16 x i8] }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.126", %"class.std::vector.137", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = 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.137" = type { %"struct.std::_Vector_base.138" }
%"struct.std::_Vector_base.138" = 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.142" }
%"class.std::shared_ptr.142" = type { %"class.std::__shared_ptr.143" }
%"class.std::__shared_ptr.143" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.anon.360 = type { i8 }
%class.anon.362 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.363" = type { ptr }
%class.anon.364 = type { ptr }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn" = type <{ %"class.HIR::Path", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = 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.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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.__gnu_cxx::__normal_iterator.259" = type { ptr }
%"struct.HIR::LifetimeDef" = type { %class.RcString }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.93" }

@path_Sized = external dso_local global %"struct.HIR::SimplePath", align 8
@.str.5 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZTIN3AST8ExprNodeE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN3AST19ExprNode_NamedValueE = external constant ptr
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@_ZN12_GLOBAL__N_119g_impl_trait_sourceE = external hidden local_unnamed_addr global %"struct.(anonymous namespace)::ImplTraitSource", align 8
@__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef = external hidden unnamed_addr constant [48 x i8], align 1
@__func__._Z13LowerHIR_TypeRK7TypeRef = external hidden unnamed_addr constant [14 x i8], align 1
@_ZTIN3AST16ExprNode_IntegerE = external constant ptr
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
.lr.ph:
  %2 = alloca %struct.Span, align 8
  %3 = alloca %"class.std::function", align 8
  %4 = alloca %class.anon.285, align 1
  %5 = alloca %struct.Span, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.287, align 1
  %8 = alloca ptr, align 8
  %9 = alloca %struct.Span, align 8
  %10 = alloca %"class.std::function", align 8
  %11 = alloca %class.anon.289, align 8
  %12 = alloca %struct.Span, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.290, align 1
  %15 = alloca %"class.std::vector.93", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %18 = alloca %"class.HIR::TypeRef", align 8
  %19 = alloca %"class.std::vector.93", align 8
  %20 = alloca %"class.HIR::TypeRef", align 8
  %21 = alloca %"class.HIR::TypeRef", align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %class.U128, align 8
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.293, align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"struct.HIR::GenericRef", align 8
  %30 = alloca %class.RcString, align 8
  %31 = alloca %"class.HIR::TypeRef", align 8
  %32 = alloca %"class.HIR::ConstGeneric", align 8
  %33 = alloca %"struct.HIR::GenericRef", align 8
  %34 = alloca %"class.HIR::TypeRef", align 8
  %35 = alloca %"class.HIR::ConstGeneric", align 8
  %36 = alloca %"class.std::unique_ptr.145", align 8
  %37 = alloca %"class.HIR::ExprPtr", align 8
  %38 = alloca %"class.HIR::TypeRef", align 8
  %39 = alloca %"class.HIR::ConstGeneric", align 8
  %40 = alloca %"struct.HIR::ConstGeneric::InferData", align 4
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.294, align 8
  %46 = alloca %class.RcString, align 8
  %47 = alloca %class.TypeRef, align 8
  %48 = alloca %struct.Span, align 8
  %49 = alloca %"class.HIR::Path", align 8
  %50 = alloca %"class.HIR::TypePathBinding", align 8
  %51 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.295, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %57 = alloca %"class.HIR::GenericPath", align 8
  %58 = alloca %"class.std::span", align 8
  %59 = alloca %struct.Span, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.358, align 8
  %62 = alloca %"class.HIR::TraitPath", align 8
  %63 = alloca %"class.HIR::TypeData", align 8
  %64 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %65 = alloca %struct.Span, align 8
  %66 = alloca %"class.std::function", align 8
  %67 = alloca %class.anon.360, align 1
  %68 = alloca %"class.std::vector.126", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %71 = alloca %"class.HIR::TraitPath", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %74 = alloca %"class.HIR::TraitPath", align 8
  %75 = alloca ptr, align 8
  %76 = alloca %struct.Span, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.362, align 8
  %79 = alloca %"class.std::vector.137", align 8
  %80 = alloca %"class.__gnu_cxx::__normal_iterator.363", align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.363", align 8
  %82 = alloca %"struct.HIR::LifetimeRef", align 4
  %83 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %84 = alloca ptr, align 8
  %85 = alloca %struct.Span, align 8
  %86 = alloca %"class.std::function", align 8
  %87 = alloca %class.anon.364, align 8
  %88 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %89 = alloca %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", align 8
  %90 = alloca %"class.HIR::TypeData_ErasedType_Inner", align 8
  %91 = alloca %"struct.HIR::TypeData_ErasedType_Inner::Data_Fcn", align 8
  %92 = alloca %"struct.HIR::SimplePath", align 8
  %93 = alloca %"class.HIR::TypeData", align 8
  %94 = alloca %"struct.HIR::TypeData_ErasedType", align 8
  %95 = alloca %"class.HIR::GenericParams", align 8
  %96 = alloca %"class.__gnu_cxx::__normal_iterator.259", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.259", align 8
  %98 = alloca %"struct.HIR::LifetimeDef", align 8
  %99 = alloca %"class.std::vector.93", align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator.292", align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %104 = alloca %class.RcString, align 8
  %105 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %106 = alloca %class.RcString, align 8
  %107 = getelementptr inbounds i8, ptr %1, i64 8
  %108 = tail call noundef i32 @_ZNK8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  switch i32 %108, label %.loopexit473 [
    i32 0, label %110
    i32 1, label %111
    i32 3, label %121
    i32 2, label %123
    i32 4, label %125
    i32 5, label %127
    i32 6, label %.preheader
    i32 8, label %156
    i32 9, label %175
    i32 10, label %187
    i32 11, label %196
    i32 12, label %292
    i32 14, label %298
    i32 15, label %349
    i32 16, label %494
    i32 7, label %674
    i32 13, label %740
  ]

.loopexit473:                                     ; preds = %.preheader, %.lr.ph
  %109 = tail call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.30, ptr %109, align 16, !tbaa !5
  tail call void @__cxa_throw(ptr nonnull %109, ptr nonnull @_ZTIPKc, ptr null) #10
  unreachable

110:                                              ; preds = %.lr.ph
  tail call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 854, ptr noundef nonnull @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

111:                                              ; preds = %.lr.ph
  %112 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #9
  %113 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %113)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %3)
          to label %114 unwind label %117

114:                                              ; preds = %111
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  %115 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull @.str.9)
          to label %116 unwind label %119

116:                                              ; preds = %114
  call void @__cxa_throw(ptr nonnull %115, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

117:                                              ; preds = %111
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  br label %751

119:                                              ; preds = %114
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %115) #9
  br label %751

121:                                              ; preds = %.lr.ph
  %122 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_BangEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  tail call void @_ZN3HIR7TypeRef11new_divergeEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0)
  br label %752

123:                                              ; preds = %.lr.ph
  %124 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  tail call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
  br label %752

125:                                              ; preds = %.lr.ph
  %126 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  tail call void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0)
  br label %752

127:                                              ; preds = %.lr.ph
  %128 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData8as_MacroEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  %129 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %129)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %6)
          to label %130 unwind label %133

130:                                              ; preds = %127
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  %131 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull @.str.9)
          to label %132 unwind label %135

132:                                              ; preds = %130
  call void @__cxa_throw(ptr nonnull %131, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

133:                                              ; preds = %127
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %751

135:                                              ; preds = %130
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %131) #9
  br label %751

.preheader:                                       ; preds = %.lr.ph
  %137 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %138 = load i32, ptr %137, align 4
  %.fr = freeze i32 %138
  switch i32 %.fr, label %.loopexit473 [
    i32 2, label %.split512.us
    i32 3, label %.split516.us
    i32 4, label %.split520.us
    i32 17, label %.split524.us
    i32 18, label %.split528.us
    i32 8, label %.split532.us
    i32 7, label %.split536.us
    i32 10, label %.split540.us
    i32 9, label %.split544.us
    i32 12, label %.split548.us
    i32 11, label %.split552.us
    i32 14, label %.split556.us
    i32 13, label %.split560.us
    i32 16, label %.split564.us
    i32 15, label %.split568.us
    i32 6, label %.split572.us
    i32 5, label %.split576.us
    i32 1, label %.split580.us
    i32 0, label %.split584.us
  ], !llvm.loop !9

.split512.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 14)
  br label %752

.split516.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 15)
  br label %752

.split520.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 16)
  br label %752

.split524.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 12)
  br label %752

.split528.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 13)
  br label %752

.split532.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 3)
  br label %752

.split536.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 2)
  br label %752

.split540.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5)
  br label %752

.split544.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 4)
  br label %752

.split548.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 7)
  br label %752

.split552.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 6)
  br label %752

.split556.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 9)
  br label %752

.split560.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 8)
  br label %752

.split564.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 11)
  br label %752

.split568.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 10)
  br label %752

.split572.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 1)
  br label %752

.split576.us:                                     ; preds = %.preheader
  tail call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 0)
  br label %752

.split580.us:                                     ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %139 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %139)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  store ptr %8, ptr %11, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %10)
          to label %140 unwind label %143

140:                                              ; preds = %.split580.us
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  %141 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef nonnull @.str.8)
          to label %142 unwind label %145

142:                                              ; preds = %140
  call void @__cxa_throw(ptr nonnull %141, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

143:                                              ; preds = %.split580.us
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %147

145:                                              ; preds = %140
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %141) #9
  br label %147

147:                                              ; preds = %145, %143
  %.pn445 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %751

.split584.us:                                     ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  %148 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %148)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %13)
          to label %149 unwind label %152

149:                                              ; preds = %.split584.us
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  %150 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull @.str.9)
          to label %151 unwind label %154

151:                                              ; preds = %149
  call void @__cxa_throw(ptr nonnull %150, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

152:                                              ; preds = %.split584.us
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %751

154:                                              ; preds = %149
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %150) #9
  br label %751

156:                                              ; preds = %.lr.ph
  %157 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %158 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #9
  store ptr %158, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %159 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #9
  store ptr %159, ptr %17, align 8
  %160 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br i1 %160, label %.lr.ph604, label %._crit_edge605

._crit_edge605:                                   ; preds = %163, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %19)
          to label %171 unwind label %172

.lr.ph604:                                        ; preds = %156, %163
  %161 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %18, ptr noundef nonnull align 8 dereferenceable(120) %161)
          to label %162 unwind label %166

162:                                              ; preds = %.lr.ph604
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %163 unwind label %168

163:                                              ; preds = %162
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  %165 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br i1 %165, label %.lr.ph604, label %._crit_edge605

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

168:                                              ; preds = %162
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %170

170:                                              ; preds = %168, %166
  %.pn442 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %174

171:                                              ; preds = %._crit_edge605
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  br label %752

172:                                              ; preds = %._crit_edge605
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  br label %174

174:                                              ; preds = %172, %170
  %.pn442.pn = phi { ptr, i32 } [ %.pn442, %170 ], [ %173, %172 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  br label %751

175:                                              ; preds = %.lr.ph
  %176 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %177 = getelementptr inbounds i8, ptr %176, i64 24
  %178 = load i8, ptr %177, align 8, !tbaa !11, !range !31, !noundef !32
  %179 = getelementptr inbounds i8, ptr %176, i64 32
  %180 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %179) #9
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %20, ptr noundef nonnull align 8 dereferenceable(120) %180)
  %181 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %176)
          to label %182 unwind label %185

182:                                              ; preds = %175
  %183 = zext nneg i8 %178 to i32
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_NS_11LifetimeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, i32 noundef %183, ptr noundef nonnull %20, i32 %181)
          to label %184 unwind label %185

184:                                              ; preds = %182
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %752

185:                                              ; preds = %182, %175
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %751

187:                                              ; preds = %.lr.ph
  %188 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %189 = load i8, ptr %188, align 8, !tbaa !33, !range !31, !noundef !32
  %190 = zext nneg i8 %189 to i32
  %191 = getelementptr inbounds i8, ptr %188, i64 8
  %192 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %191) #9
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %21, ptr noundef nonnull align 8 dereferenceable(120) %192)
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, i32 noundef %190, ptr noundef nonnull %21)
          to label %193 unwind label %194

193:                                              ; preds = %187
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br label %752

194:                                              ; preds = %187
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br label %751

196:                                              ; preds = %.lr.ph
  %197 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %198 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %197) #9
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull align 8 dereferenceable(120) %198)
  %199 = getelementptr inbounds i8, ptr %197, i64 8
  %200 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %199) #9
  br i1 %200, label %201, label %281

201:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %202 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  %203 = call ptr @__dynamic_cast(ptr nonnull %202, ptr nonnull @_ZTIN3AST8ExprNodeE, ptr nonnull @_ZTIN3AST16ExprNode_IntegerE, i64 0) #9
  store ptr %203, ptr %23, align 8, !tbaa !5
  %.not426 = icmp eq ptr %203, null
  br i1 %.not426, label %233, label %204

204:                                              ; preds = %201
  %205 = getelementptr inbounds i8, ptr %203, i64 40
  %206 = load i32, ptr %205, align 8, !tbaa !35
  switch i32 %206, label %233 [
    i32 5, label %207
    i32 1, label %207
  ]

207:                                              ; preds = %204, %204
  %208 = getelementptr inbounds i8, ptr %203, i64 48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %24, i64 noundef -1, i64 noundef 0)
  %209 = invoke noundef zeroext i1 @_ZNK4U128geERKS_(ptr noundef nonnull align 8 dereferenceable(16) %208, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %210 unwind label %218

210:                                              ; preds = %207
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br i1 %209, label %211, label %229

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %213 unwind label %220

213:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #9
  store ptr %23, ptr %27, align 8, !tbaa !5
  %214 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %1, ptr %214, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef 0, ptr noundef nonnull %26)
          to label %215 unwind label %222

215:                                              ; preds = %213
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  %216 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull @.str.12)
          to label %217 unwind label %225

217:                                              ; preds = %215
  invoke void @__cxa_throw(ptr nonnull %216, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %753 unwind label %227

218:                                              ; preds = %207
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br label %236

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

222:                                              ; preds = %213
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %224

224:                                              ; preds = %222, %220
  %.pn437 = phi { ptr, i32 } [ %223, %222 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %236

225:                                              ; preds = %215
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %216) #9
  br label %236

227:                                              ; preds = %217
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %236

229:                                              ; preds = %210
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %230 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %208)
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_m(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %28, i64 noundef %230)
          to label %.critedge456 unwind label %231

.critedge456:                                     ; preds = %229
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %290

231:                                              ; preds = %229
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br label %236

233:                                              ; preds = %201, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  %234 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  %235 = call ptr @__dynamic_cast(ptr nonnull %234, ptr nonnull @_ZTIN3AST8ExprNodeE, ptr nonnull @_ZTIN3AST19ExprNode_NamedValueE, i64 0) #9
  %.not427 = icmp eq ptr %235, null
  br i1 %.not427, label %265, label %237

236:                                              ; preds = %231, %227, %225, %224, %218
  %.pn439 = phi { ptr, i32 } [ %228, %227 ], [ %226, %225 ], [ %.pn437, %224 ], [ %232, %231 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %291

237:                                              ; preds = %233
  %238 = getelementptr inbounds i8, ptr %235, i64 40
  %239 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %238)
          to label %240 unwind label %250

240:                                              ; preds = %237
  br i1 %239, label %241, label %265

241:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %238)
          to label %243 unwind label %252

243:                                              ; preds = %241
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %242)
  %244 = getelementptr inbounds i8, ptr %235, i64 128
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST17PathBinding_Value10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(32) %244)
  %246 = load i32, ptr %245, align 4, !tbaa !47
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %29, ptr noundef nonnull %30, i32 noundef %246)
          to label %247 unwind label %254

247:                                              ; preds = %243
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %22)
  invoke void @_ZN3HIR10GenericRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(12) %33, ptr noundef nonnull align 8 dereferenceable(12) %29)
          to label %248 unwind label %256

248:                                              ; preds = %247
  invoke void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull %33)
          to label %249 unwind label %258

249:                                              ; preds = %248
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %31, ptr noundef nonnull %32)
          to label %.critedge458 unwind label %260

.critedge458:                                     ; preds = %249
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %33) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %290

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

252:                                              ; preds = %241
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %264

254:                                              ; preds = %243
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %264

256:                                              ; preds = %247
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %263

258:                                              ; preds = %248
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %262

260:                                              ; preds = %249
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  br label %262

262:                                              ; preds = %260, %258
  %.pn428 = phi { ptr, i32 } [ %261, %260 ], [ %259, %258 ]
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %33) #9
  br label %263

263:                                              ; preds = %262, %256
  %.pn428.pn = phi { ptr, i32 } [ %.pn428, %262 ], [ %257, %256 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %29) #9
  br label %264

264:                                              ; preds = %263, %254, %252
  %.pn428.pn.pn = phi { ptr, i32 } [ %.pn428.pn, %263 ], [ %255, %254 ], [ %253, %252 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %291

265:                                              ; preds = %240, %233
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %37) #9
  invoke void @_Z13LowerHIR_ExprRKSt10shared_ptrIN3AST8ExprNodeEE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %37, ptr noundef nonnull align 8 dereferenceable(16) %199)
          to label %266 unwind label %270

266:                                              ; preds = %265
  invoke void @_ZSt11make_uniqueIN3HIR24ConstGeneric_UnevaluatedEJNS0_7ExprPtrEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.145") align 8 %36, ptr noundef nonnull align 8 dereferenceable(72) %37)
          to label %267 unwind label %272

267:                                              ; preds = %266
  invoke void @_ZN3HIR12ConstGeneric16make_UnevaluatedESt10unique_ptrINS_24ConstGeneric_UnevaluatedESt14default_deleteIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ConstGeneric") align 8 %35, ptr noundef nonnull %36)
          to label %268 unwind label %274

268:                                              ; preds = %267
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %34, ptr noundef nonnull %35)
          to label %269 unwind label %276

269:                                              ; preds = %268
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  call void @_ZNSt10unique_ptrIN3HIR24ConstGeneric_UnevaluatedESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %37) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %290

270:                                              ; preds = %265
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %280

272:                                              ; preds = %266
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %279

274:                                              ; preds = %267
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %278

276:                                              ; preds = %268
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  br label %278

278:                                              ; preds = %276, %274
  %.pn433 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ]
  call void @_ZNSt10unique_ptrIN3HIR24ConstGeneric_UnevaluatedESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %279

279:                                              ; preds = %278, %272
  %.pn433.pn = phi { ptr, i32 } [ %.pn433, %278 ], [ %273, %272 ]
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %37) #9
  br label %280

280:                                              ; preds = %279, %270
  %.pn433.pn.pn = phi { ptr, i32 } [ %.pn433.pn, %279 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %291

281:                                              ; preds = %196
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZN3HIR12ConstGeneric9InferDataC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %40, i32 noundef -1)
  %282 = load i32, ptr %40, align 4
  invoke void @_ZN3HIR12ConstGeneric10make_InferENS0_9InferDataE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ConstGeneric") align 8 %39, i32 %282)
          to label %283 unwind label %285

283:                                              ; preds = %281
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_NS_12ConstGenericE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %38, ptr noundef nonnull %39)
          to label %284 unwind label %287

284:                                              ; preds = %283
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %290

285:                                              ; preds = %281
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %289

287:                                              ; preds = %283
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #9
  br label %289

289:                                              ; preds = %287, %285
  %.pn424 = phi { ptr, i32 } [ %288, %287 ], [ %286, %285 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %291

290:                                              ; preds = %.critedge458, %.critedge456, %284, %269
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br label %752

291:                                              ; preds = %250, %264, %289, %280, %236
  %.pn439.pn = phi { ptr, i32 } [ %.pn439, %236 ], [ %.pn433.pn.pn, %280 ], [ %.pn424, %289 ], [ %.pn428.pn.pn, %264 ], [ %251, %250 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br label %751

292:                                              ; preds = %.lr.ph
  %293 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  %294 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %293) #9
  call void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(120) %294)
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %42)
          to label %295 unwind label %296

295:                                              ; preds = %292
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %752

296:                                              ; preds = %292
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %751

298:                                              ; preds = %.lr.ph
  %299 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %300 = tail call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #9
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = tail call noundef ptr @_ZN3AST4Path5Class9opt_LocalEv(ptr noundef nonnull align 8 dereferenceable(48) %301)
  %.not413 = icmp eq ptr %302, null
  %303 = tail call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #9
  br i1 %.not413, label %321, label %304

304:                                              ; preds = %298
  %305 = getelementptr inbounds i8, ptr %303, i64 152
  %306 = tail call noundef ptr @_ZN3AST16PathBinding_Type17opt_TypeParameterEv(ptr noundef nonnull align 8 dereferenceable(32) %305)
  %.not418 = icmp eq ptr %306, null
  br i1 %.not418, label %309, label %307

307:                                              ; preds = %304
  %308 = load i32, ptr %306, align 4, !tbaa !50
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %302)
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %46, i32 noundef %308)
          to label %318 unwind label %319

309:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  %310 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %310)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #9
  store ptr %299, ptr %45, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %311 unwind label %314

311:                                              ; preds = %309
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  %312 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef nonnull @.str.9)
          to label %313 unwind label %316

313:                                              ; preds = %311
  call void @__cxa_throw(ptr nonnull %312, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

314:                                              ; preds = %309
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br label %751

316:                                              ; preds = %311
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %312) #9
  br label %751

318:                                              ; preds = %307
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %752

319:                                              ; preds = %307
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %751

321:                                              ; preds = %298
  %322 = getelementptr inbounds i8, ptr %303, i64 120
  %323 = tail call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef nonnull @.str.25)
  br i1 %323, label %324, label %339

324:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %47) #9
  %325 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %325)
  %326 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #9
  %327 = getelementptr inbounds i8, ptr %326, i64 128
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI8RcStringSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %327) #9
  %329 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %328)
  %330 = invoke noundef i32 @_Z19coretype_fromstringPKc(ptr noundef %329)
          to label %331 unwind label %334

331:                                              ; preds = %324
  invoke void @_ZN7TypeRefC2E4Span9eCoreType(ptr noundef nonnull align 8 dereferenceable(120) %47, ptr noundef nonnull %48, i32 noundef %330)
          to label %332 unwind label %334

332:                                              ; preds = %331
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %47)
          to label %333 unwind label %336

333:                                              ; preds = %332
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %47) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %47) #9
  br label %752

334:                                              ; preds = %331, %324
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %338

336:                                              ; preds = %332
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %47) #9
  br label %338

338:                                              ; preds = %336, %334
  %.pn416 = phi { ptr, i32 } [ %337, %336 ], [ %335, %334 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %47) #9
  br label %751

339:                                              ; preds = %321
  %340 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %341 = tail call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #9
  call void @_Z13LowerHIR_PathRK4SpanRKN3AST4PathE17FromAST_PathClass(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %49, ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(240) %341, i32 noundef 0)
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %342 unwind label %344

342:                                              ; preds = %339
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %0, ptr noundef nonnull %49, ptr noundef nonnull %50)
          to label %343 unwind label %346

343:                                              ; preds = %342
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #9
  br label %752

344:                                              ; preds = %339
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %348

346:                                              ; preds = %342
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  br label %348

348:                                              ; preds = %346, %344
  %.pn414 = phi { ptr, i32 } [ %347, %346 ], [ %345, %344 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #9
  br label %751

349:                                              ; preds = %.lr.ph
  %350 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %51) #9
  call void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %51)
  %351 = getelementptr inbounds i8, ptr %350, i64 24
  %352 = call noundef zeroext i1 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %351) #9
  br i1 %352, label %378, label %353

353:                                              ; preds = %349
  %354 = call noundef i64 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %351) #9
  %355 = icmp eq i64 %354, 1
  br i1 %355, label %356, label %363

356:                                              ; preds = %353
  %357 = call noundef nonnull align 8 dereferenceable(18) ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %351, i64 noundef 0) #9
  %358 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %357)
          to label %359 unwind label %361

359:                                              ; preds = %356
  %360 = getelementptr inbounds i8, ptr %51, i64 168
  store i32 %358, ptr %360, align 8, !tbaa !52
  br label %378

361:                                              ; preds = %356
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %493

363:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  %364 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %365 unwind label %369

365:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #9
  store ptr %1, ptr %54, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull %53)
          to label %366 unwind label %371

366:                                              ; preds = %365
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  %367 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %367, ptr noundef nonnull @.str.9)
          to label %368 unwind label %374

368:                                              ; preds = %366
  invoke void @__cxa_throw(ptr nonnull %367, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %753 unwind label %376

369:                                              ; preds = %363
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %373

371:                                              ; preds = %365
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %373

373:                                              ; preds = %371, %369
  %.pn396 = phi { ptr, i32 } [ %372, %371 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %493

374:                                              ; preds = %366
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %367) #9
  br label %493

376:                                              ; preds = %484, %._crit_edge602, %368
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %493

378:                                              ; preds = %349, %359
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #9
  %379 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %350) #9
  store ptr %379, ptr %55, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  %380 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %350) #9
  store ptr %380, ptr %56, align 8
  %381 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %381, label %.lr.ph601, label %._crit_edge602

.lr.ph601:                                        ; preds = %378
  %382 = getelementptr inbounds i8, ptr %51, i64 8
  %383 = getelementptr inbounds i8, ptr %58, i64 8
  %384 = getelementptr inbounds i8, ptr %51, i64 144
  br label %388

._crit_edge602:                                   ; preds = %480, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  %385 = getelementptr inbounds i8, ptr %51, i64 144
  %386 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %385) #9
  %387 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %385) #9
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %386, ptr %387)
          to label %484 unwind label %376

388:                                              ; preds = %.lr.ph601, %480
  %389 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %390 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %391 unwind label %405

391:                                              ; preds = %388
  br i1 %390, label %392, label %407

392:                                              ; preds = %391
  %393 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !52
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %393, ptr noundef nonnull @__func__._Z13LowerHIR_TypeRK7TypeRef)
          to label %395 unwind label %405

395:                                              ; preds = %392
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull @.str.26)
          to label %397 unwind label %405

397:                                              ; preds = %395
  %398 = getelementptr inbounds i8, ptr %389, i64 24
  %399 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %398) #9
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(240) %399)
          to label %401 unwind label %405

401:                                              ; preds = %397
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %403 unwind label %405

403:                                              ; preds = %401
  %404 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %402, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %407 unwind label %405

405:                                              ; preds = %403, %401, %397, %395, %392, %388
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %483

407:                                              ; preds = %403, %391
  %408 = getelementptr inbounds i8, ptr %389, i64 24
  %409 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %408) #9
  %410 = getelementptr inbounds i8, ptr %409, i64 152
  %411 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32) %410)
  %412 = load ptr, ptr %411, align 8, !tbaa !53
  %.not400 = icmp eq ptr %412, null
  %413 = getelementptr inbounds i8, ptr %411, i64 8
  %414 = load ptr, ptr %413, align 8
  %.not401 = icmp eq ptr %414, null
  %or.cond = select i1 %.not400, i1 %.not401, i1 false
  br i1 %or.cond, label %415, label %.critedge

415:                                              ; preds = %407
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.5, i32 noundef 983, ptr noundef nonnull @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

.loopexit:                                        ; preds = %416, %.thread, %426, %429, %434, %436
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %483

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

.critedge:                                        ; preds = %407
  br i1 %.not400, label %419, label %416

416:                                              ; preds = %.critedge
  %417 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %412)
          to label %418 unwind label %.loopexit

418:                                              ; preds = %416
  br i1 %417, label %423, label %448

419:                                              ; preds = %.critedge
  %420 = getelementptr inbounds i8, ptr %414, i64 128
  %421 = load i8, ptr %420, align 8, !tbaa !55, !range !31, !noundef !32
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %.thread, label %448

423:                                              ; preds = %418
  %.pre = load ptr, ptr %413, align 8, !tbaa !92
  %.not407 = icmp eq ptr %.pre, null
  br i1 %.not407, label %438, label %.thread

.thread:                                          ; preds = %419, %423
  %424 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %425 unwind label %.loopexit

425:                                              ; preds = %.thread
  br i1 %424, label %426, label %438

426:                                              ; preds = %425
  %427 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !52
  %428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %427, ptr noundef nonnull @__func__._Z13LowerHIR_TypeRK7TypeRef)
          to label %429 unwind label %.loopexit

429:                                              ; preds = %426
  %430 = load ptr, ptr %413, align 8, !tbaa !92
  %431 = getelementptr inbounds i8, ptr %430, i64 192
  %432 = call noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %431) #9
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %428, i64 noundef %432)
          to label %434 unwind label %.loopexit

434:                                              ; preds = %429
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %436 unwind label %.loopexit

436:                                              ; preds = %434
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %438 unwind label %.loopexit

438:                                              ; preds = %425, %436, %423
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #9
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %440 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %408) #9
  invoke void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %57, ptr noundef nonnull align 8 dereferenceable(8) %439, ptr noundef nonnull align 8 dereferenceable(240) %440, i32 noundef 0, i1 noundef zeroext false)
          to label %441 unwind label %443

441:                                              ; preds = %438
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %384, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %442 unwind label %445

442:                                              ; preds = %441
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #9
  br label %480

443:                                              ; preds = %438
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %447

445:                                              ; preds = %441
  %446 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %447

447:                                              ; preds = %445, %443
  %.pn408 = phi { ptr, i32 } [ %446, %445 ], [ %444, %443 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #9
  br label %483

448:                                              ; preds = %419, %418
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #9
  %449 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %382)
          to label %450 unwind label %460

450:                                              ; preds = %448
  %451 = extractvalue { ptr, i64 } %449, 0
  store ptr %451, ptr %58, align 8
  %452 = extractvalue { ptr, i64 } %449, 1
  store i64 %452, ptr %383, align 8
  %453 = call noundef zeroext i1 @_ZNKSt4spanIK8RcStringE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #9
  br i1 %453, label %469, label %454

454:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #9
  %455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %455)
          to label %456 unwind label %462

456:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #9
  store ptr %1, ptr %61, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %59, i32 noundef 0, ptr noundef nonnull %60)
          to label %457 unwind label %464

457:                                              ; preds = %456
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  %458 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %458, ptr noundef nonnull @.str.12)
          to label %459 unwind label %467

459:                                              ; preds = %457
  invoke void @__cxa_throw(ptr nonnull %458, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %753 unwind label %.loopexit.split-lp

460:                                              ; preds = %448
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #9
  br label %483

462:                                              ; preds = %454
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %466

464:                                              ; preds = %456
  %465 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br label %466

466:                                              ; preds = %464, %462
  %.pn405 = phi { ptr, i32 } [ %465, %464 ], [ %463, %462 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  br label %483

467:                                              ; preds = %457
  %468 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %458) #9
  br label %483

469:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %62) #9
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %471 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %408) #9
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %62, ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 8 dereferenceable(240) %471, ptr noundef nonnull align 8 dereferenceable(24) %389, i1 noundef zeroext false)
          to label %472 unwind label %475

472:                                              ; preds = %469
  %473 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR9TraitPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(144) %51, ptr noundef nonnull align 8 dereferenceable(144) %62)
          to label %474 unwind label %477

474:                                              ; preds = %472
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %62) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %62) #9
  br label %480

475:                                              ; preds = %469
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %472
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %62) #9
  br label %479

479:                                              ; preds = %477, %475
  %.pn403 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %62) #9
  br label %483

480:                                              ; preds = %474, %442
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %482 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %482, label %388, label %._crit_edge602

483:                                              ; preds = %.loopexit, %.loopexit.split-lp, %447, %460, %466, %467, %479, %405
  %.pn408.pn.pn = phi { ptr, i32 } [ %406, %405 ], [ %.pn408, %447 ], [ %468, %467 ], [ %.pn405, %466 ], [ %.pn403, %479 ], [ %461, %460 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  br label %493

484:                                              ; preds = %._crit_edge602
  invoke void @_ZN3HIR20TypeData_TraitObjectC2EOS0_(ptr noundef nonnull align 8 dereferenceable(172) %64, ptr noundef nonnull align 8 dereferenceable(172) %51)
          to label %485 unwind label %376

485:                                              ; preds = %484
  invoke void @_ZN3HIR8TypeData16make_TraitObjectENS_20TypeData_TraitObjectE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeData") align 8 %63, ptr noundef nonnull %64)
          to label %486 unwind label %488

486:                                              ; preds = %485
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %63)
          to label %487 unwind label %490

487:                                              ; preds = %486
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #9
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %64) #9
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %51) #9
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %51) #9
  br label %752

488:                                              ; preds = %485
  %489 = landingpad { ptr, i32 }
          cleanup
  br label %492

490:                                              ; preds = %486
  %491 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #9
  br label %492

492:                                              ; preds = %490, %488
  %.pn398 = phi { ptr, i32 } [ %491, %490 ], [ %489, %488 ]
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %64) #9
  br label %493

493:                                              ; preds = %492, %483, %376, %374, %373, %361
  %.pn408.pn.pn.pn = phi { ptr, i32 } [ %.pn408.pn.pn, %483 ], [ %.pn398, %492 ], [ %377, %376 ], [ %362, %361 ], [ %375, %374 ], [ %.pn396, %373 ]
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %51) #9
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %51) #9
  br label %751

494:                                              ; preds = %.lr.ph
  %495 = tail call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %496 = tail call noundef i64 @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  %.not = icmp eq i64 %496, 0
  br i1 %.not, label %497, label %506

497:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #9
  %498 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %498)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull %66)
          to label %499 unwind label %502

499:                                              ; preds = %497
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  %500 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %500, ptr noundef nonnull @.str.9)
          to label %501 unwind label %504

501:                                              ; preds = %499
  call void @__cxa_throw(ptr nonnull %500, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

502:                                              ; preds = %497
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  br label %751

504:                                              ; preds = %499
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %500) #9
  br label %751

506:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #9
  %507 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  store ptr %507, ptr %69, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #9
  %508 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %495) #9
  store ptr %508, ptr %70, align 8
  %509 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  br i1 %509, label %.lr.ph592, label %._crit_edge593

._crit_edge593:                                   ; preds = %538, %506
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #9
  %510 = getelementptr inbounds i8, ptr %495, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #9
  %511 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %510) #9
  store ptr %511, ptr %72, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #9
  %512 = call ptr @_ZNKSt6vectorI14Type_TraitPathSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %510) #9
  store ptr %512, ptr %73, align 8
  %513 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br i1 %513, label %.lr.ph595, label %._crit_edge596

.lr.ph595:                                        ; preds = %._crit_edge593
  %514 = getelementptr inbounds i8, ptr %74, i64 8
  br label %550

.lr.ph592:                                        ; preds = %506, %538
  %515 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  %516 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %517 unwind label %531

517:                                              ; preds = %.lr.ph592
  br i1 %516, label %518, label %533

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

521:                                              ; preds = %518
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %520, ptr noundef nonnull @.str.26)
          to label %523 unwind label %531

523:                                              ; preds = %521
  %524 = getelementptr inbounds i8, ptr %515, i64 24
  %525 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %524) #9
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull align 8 dereferenceable(240) %525)
          to label %527 unwind label %531

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

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

531:                                              ; preds = %529, %527, %523, %521, %518, %.lr.ph592
  %532 = landingpad { ptr, i32 }
          cleanup
  br label %546

533:                                              ; preds = %529, %517
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %71) #9
  %534 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %535 = getelementptr inbounds i8, ptr %515, i64 24
  %536 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %535) #9
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %71, ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull align 8 dereferenceable(240) %536, ptr noundef nonnull align 8 dereferenceable(24) %515, i1 noundef zeroext true)
          to label %537 unwind label %541

537:                                              ; preds = %533
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(144) %71)
          to label %538 unwind label %543

538:                                              ; preds = %537
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %71) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %71) #9
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  %540 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  br i1 %540, label %.lr.ph592, label %._crit_edge593

541:                                              ; preds = %533
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %545

543:                                              ; preds = %537
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %71) #9
  br label %545

545:                                              ; preds = %543, %541
  %.pn391 = phi { ptr, i32 } [ %544, %543 ], [ %542, %541 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %71) #9
  br label %546

546:                                              ; preds = %545, %531
  %.pn391.pn = phi { ptr, i32 } [ %.pn391, %545 ], [ %532, %531 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #9
  br label %673

._crit_edge596:                                   ; preds = %558, %._crit_edge593
  %.0341.lcssa = phi i8 [ 1, %._crit_edge593 ], [ 0, %558 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %79) #9
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  %547 = getelementptr inbounds i8, ptr %495, i64 48
  %548 = call noundef i64 @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #9
  %549 = icmp eq i64 %548, 0
  br i1 %549, label %596, label %584

550:                                              ; preds = %.lr.ph595, %558
  %551 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %74) #9
  %552 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %553 = getelementptr inbounds i8, ptr %551, i64 24
  %554 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %553) #9
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %74, ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull align 8 dereferenceable(240) %554, ptr noundef nonnull align 8 dereferenceable(24) %551, i1 noundef zeroext true)
          to label %555 unwind label %561

555:                                              ; preds = %550
  %556 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef nonnull align 8 dereferenceable(8) @path_Sized)
          to label %557 unwind label %563

557:                                              ; preds = %555
  br i1 %556, label %558, label %565

558:                                              ; preds = %557
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %74) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %74) #9
  %559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  %560 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK14Type_TraitPathSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br i1 %560, label %550, label %._crit_edge596

561:                                              ; preds = %550
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %583

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

565:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #9
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #9
  %566 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %566)
          to label %567 unwind label %572

567:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #9
  store ptr %75, ptr %78, align 8, !tbaa !5
  %568 = getelementptr inbounds i8, ptr %78, i64 8
  store ptr %1, ptr %568, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(16) %78) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull %77)
          to label %569 unwind label %574

569:                                              ; preds = %567
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #9
  %570 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %570, ptr noundef nonnull @.str.8)
          to label %571 unwind label %577

571:                                              ; preds = %569
  invoke void @__cxa_throw(ptr nonnull %570, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %753 unwind label %579

572:                                              ; preds = %565
  %573 = landingpad { ptr, i32 }
          cleanup
  br label %576

574:                                              ; preds = %567
  %575 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  br label %576

576:                                              ; preds = %574, %572
  %.pn384 = phi { ptr, i32 } [ %575, %574 ], [ %573, %572 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #9
  br label %581

577:                                              ; preds = %569
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %570) #9
  br label %581

579:                                              ; preds = %571
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %581

581:                                              ; preds = %579, %577, %576
  %.pn386 = phi { ptr, i32 } [ %580, %579 ], [ %578, %577 ], [ %.pn384, %576 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #9
  br label %582

582:                                              ; preds = %581, %563
  %.pn386.pn = phi { ptr, i32 } [ %.pn386, %581 ], [ %564, %563 ]
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %74) #9
  br label %583

583:                                              ; preds = %582, %561
  %.pn386.pn.pn = phi { ptr, i32 } [ %.pn386.pn, %582 ], [ %562, %561 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  br label %673

584:                                              ; preds = %._crit_edge596
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #9
  %585 = call ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #9
  store ptr %585, ptr %80, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #9
  %586 = call ptr @_ZNKSt6vectorIN3AST11LifetimeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #9
  store ptr %586, ptr %81, align 8
  %587 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br i1 %587, label %.lr.ph598, label %._crit_edge599

._crit_edge599:                                   ; preds = %591, %584
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #9
  br label %596

.lr.ph598:                                        ; preds = %584, %591
  %588 = call noundef nonnull align 8 dereferenceable(18) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %82) #9
  %589 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %588)
          to label %590 unwind label %594

590:                                              ; preds = %.lr.ph598
  store i32 %589, ptr %82, align 4
  invoke void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
          to label %591 unwind label %594

591:                                              ; preds = %590
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #9
  %592 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  %593 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST11LifetimeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br i1 %593, label %.lr.ph598, label %._crit_edge599

594:                                              ; preds = %590, %.lr.ph598
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #9
  br label %672

596:                                              ; preds = %._crit_edge596, %._crit_edge599
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %83) #9
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2Ev(ptr noundef nonnull align 8 dereferenceable(104) %83)
          to label %597 unwind label %609

597:                                              ; preds = %596
  %598 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !93
  %.not366 = icmp eq ptr %598, null
  br i1 %.not366, label %641, label %599

599:                                              ; preds = %597
  %600 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i64 16), align 8, !tbaa !95
  %.not371 = icmp eq ptr %600, null
  br i1 %.not371, label %621, label %601

601:                                              ; preds = %599
  %602 = call noundef zeroext i1 @_ZNK3HIR13GenericParams10is_genericEv(ptr noundef nonnull align 8 dereferenceable(96) %600)
  br i1 %602, label %603, label %621

603:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #9
  store ptr @__func__._Z13LowerHIR_TypeRK7TypeRef, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #9
  %604 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %604)
          to label %605 unwind label %611

605:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #9
  store ptr %84, ptr %87, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ13LowerHIR_TypeRK7TypeRefE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull %86)
          to label %606 unwind label %613

606:                                              ; preds = %605
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  %607 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %607, ptr noundef nonnull @.str.8)
          to label %608 unwind label %616

608:                                              ; preds = %606
  invoke void @__cxa_throw(ptr nonnull %607, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %753 unwind label %618

609:                                              ; preds = %596
  %610 = landingpad { ptr, i32 }
          cleanup
  br label %671

611:                                              ; preds = %603
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %615

613:                                              ; preds = %605
  %614 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  br label %615

615:                                              ; preds = %613, %611
  %.pn377 = phi { ptr, i32 } [ %614, %613 ], [ %612, %611 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  br label %620

616:                                              ; preds = %606
  %617 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %607) #9
  br label %620

618:                                              ; preds = %608
  %619 = landingpad { ptr, i32 }
          cleanup
  br label %620

620:                                              ; preds = %618, %616, %615
  %.pn379 = phi { ptr, i32 } [ %619, %618 ], [ %617, %616 ], [ %.pn377, %615 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #9
  br label %670

621:                                              ; preds = %601, %599
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %88) #9
  %622 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i64 8), align 8, !tbaa !96
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %89, ptr noundef nonnull align 8 dereferenceable(96) %622, i32 noundef 0, i1 noundef zeroext false)
          to label %623 unwind label %631

623:                                              ; preds = %621
  %624 = getelementptr inbounds i8, ptr %89, i64 24
  %625 = load ptr, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, align 8, !tbaa !93
  %626 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_119g_impl_trait_sourceE, i64 8), align 8, !tbaa !96
  invoke void @_ZSt11make_sharedIN3HIR30TypeData_ErasedType_AliasInnerEJRKNS0_8ItemPathERKNS0_13GenericParamsEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.142") align 8 %624, ptr noundef nonnull align 8 dereferenceable(56) %625, ptr noundef nonnull align 8 dereferenceable(96) %626)
          to label %627 unwind label %633

627:                                              ; preds = %623
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_10Data_AliasE(ptr noundef nonnull align 8 dereferenceable(104) %88, ptr noundef nonnull %89)
          to label %628 unwind label %635

628:                                              ; preds = %627
  %629 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3HIR25TypeData_ErasedType_InneraSEOS0_(ptr noundef nonnull align 8 dereferenceable(104) %83, ptr noundef nonnull align 8 dereferenceable(104) %88)
          to label %630 unwind label %637

630:                                              ; preds = %628
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %88) #9
  call void @_ZN3HIR25TypeData_ErasedType_Inner10Data_AliasD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %89) #9
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %88) #9
  br label %659

631:                                              ; preds = %621
  %632 = landingpad { ptr, i32 }
          cleanup
  br label %640

633:                                              ; preds = %623
  %634 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  br label %640

635:                                              ; preds = %627
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %639

637:                                              ; preds = %628
  %638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %88) #9
  br label %639

639:                                              ; preds = %637, %635
  %.pn372 = phi { ptr, i32 } [ %638, %637 ], [ %636, %635 ]
  call void @_ZN3HIR25TypeData_ErasedType_Inner10Data_AliasD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %89) #9
  br label %640

640:                                              ; preds = %639, %633, %631
  %.pn372.pn = phi { ptr, i32 } [ %.pn372, %639 ], [ %634, %633 ], [ %632, %631 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %88) #9
  br label %670

641:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %90) #9
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %642 unwind label %648

642:                                              ; preds = %641
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %91, ptr noundef nonnull %92)
          to label %643 unwind label %650

643:                                              ; preds = %642
  %644 = getelementptr inbounds i8, ptr %91, i64 88
  store i32 0, ptr %644, align 8, !tbaa !97
  invoke void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_8Data_FcnE(ptr noundef nonnull align 8 dereferenceable(104) %90, ptr noundef nonnull %91)
          to label %645 unwind label %652

645:                                              ; preds = %643
  %646 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3HIR25TypeData_ErasedType_InneraSEOS0_(ptr noundef nonnull align 8 dereferenceable(104) %83, ptr noundef nonnull align 8 dereferenceable(104) %90)
          to label %647 unwind label %654

647:                                              ; preds = %645
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %90) #9
  call void @_ZN3HIR25TypeData_ErasedType_Inner8Data_FcnD2Ev(ptr noundef nonnull align 8 dereferenceable(92) %91) #9
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %90) #9
  br label %659

648:                                              ; preds = %641
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %658

650:                                              ; preds = %642
  %651 = landingpad { ptr, i32 }
          cleanup
  br label %657

652:                                              ; preds = %643
  %653 = landingpad { ptr, i32 }
          cleanup
  br label %656

654:                                              ; preds = %645
  %655 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %90) #9
  br label %656

656:                                              ; preds = %654, %652
  %.pn367 = phi { ptr, i32 } [ %655, %654 ], [ %653, %652 ]
  call void @_ZN3HIR25TypeData_ErasedType_Inner8Data_FcnD2Ev(ptr noundef nonnull align 8 dereferenceable(92) %91) #9
  br label %657

657:                                              ; preds = %656, %650
  %.pn367.pn = phi { ptr, i32 } [ %.pn367, %656 ], [ %651, %650 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  br label %658

658:                                              ; preds = %657, %648
  %.pn367.pn.pn = phi { ptr, i32 } [ %.pn367.pn, %657 ], [ %649, %648 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %90) #9
  br label %670

659:                                              ; preds = %647, %630
  store i8 %.0341.lcssa, ptr %94, align 8, !tbaa !102
  %660 = getelementptr inbounds i8, ptr %94, i64 8
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %660, ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  %661 = getelementptr inbounds i8, ptr %94, i64 32
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %661, ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  %662 = getelementptr inbounds i8, ptr %94, i64 56
  call void @_ZN3HIR25TypeData_ErasedType_InnerC2EOS0_(ptr noundef nonnull align 8 dereferenceable(104) %662, ptr noundef nonnull align 8 dereferenceable(104) %83) #9
  invoke void @_ZN3HIR8TypeDataC2ENS_19TypeData_ErasedTypeE(ptr noundef nonnull align 8 dereferenceable(184) %93, ptr noundef nonnull %94)
          to label %663 unwind label %665

663:                                              ; preds = %659
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %93)
          to label %664 unwind label %667

664:                                              ; preds = %663
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %93) #9
  call void @_ZN3HIR19TypeData_ErasedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %94) #9
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %83) #9
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %83) #9
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #9
  br label %752

665:                                              ; preds = %659
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %669

667:                                              ; preds = %663
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %93) #9
  br label %669

669:                                              ; preds = %667, %665
  %.pn375 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @_ZN3HIR19TypeData_ErasedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %94) #9
  br label %670

670:                                              ; preds = %669, %658, %640, %620
  %.pn379.pn = phi { ptr, i32 } [ %.pn379, %620 ], [ %.pn375, %669 ], [ %.pn372.pn, %640 ], [ %.pn367.pn.pn, %658 ]
  call void @_ZN3HIR25TypeData_ErasedType_InnerD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %83) #9
  br label %671

671:                                              ; preds = %670, %609
  %.pn379.pn.pn = phi { ptr, i32 } [ %.pn379.pn, %670 ], [ %610, %609 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %83) #9
  br label %672

672:                                              ; preds = %671, %594
  %.pn379.pn.pn.pn = phi { ptr, i32 } [ %.pn379.pn.pn, %671 ], [ %595, %594 ]
  call void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #9
  br label %673

673:                                              ; preds = %583, %672, %546
  %.pn391.pn.pn = phi { ptr, i32 } [ %.pn391.pn, %546 ], [ %.pn386.pn.pn, %583 ], [ %.pn379.pn.pn.pn, %672 ]
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #9
  br label %751

674:                                              ; preds = %.lr.ph
  %675 = tail call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %95) #9
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %95) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #9
  %676 = call ptr @_ZNKSt6vectorIN3AST13LifetimeParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %675) #9
  store ptr %676, ptr %96, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #9
  %677 = call ptr @_ZNKSt6vectorIN3AST13LifetimeParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %675) #9
  store ptr %677, ptr %97, align 8
  %678 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  br i1 %678, label %.lr.ph587, label %._crit_edge

.lr.ph587:                                        ; preds = %674
  %679 = getelementptr inbounds i8, ptr %95, i64 24
  br label %684

._crit_edge:                                      ; preds = %688, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %99) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  %680 = getelementptr inbounds i8, ptr %675, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #9
  %681 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %680) #9
  store ptr %681, ptr %100, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #9
  %682 = call ptr @_ZNKSt6vectorI7TypeRefSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %680) #9
  store ptr %682, ptr %101, align 8
  %683 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  br i1 %683, label %.lr.ph589, label %._crit_edge590

684:                                              ; preds = %.lr.ph587, %688
  %685 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #9
  %686 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST13LifetimeParam4nameEv(ptr noundef nonnull align 8 dereferenceable(48) %685)
  %687 = getelementptr inbounds i8, ptr %686, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %687)
  invoke void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %679, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %688 unwind label %691

688:                                              ; preds = %684
  call void @_ZN3HIR11LifetimeDefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #9
  %689 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #9
  %690 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST13LifetimeParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  br i1 %690, label %684, label %._crit_edge

691:                                              ; preds = %684
  %692 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11LifetimeDefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #9
  br label %739

._crit_edge590:                                   ; preds = %703, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %103) #9
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %103, ptr noundef nonnull align 8 dereferenceable(96) %95) #9
  %693 = getelementptr inbounds i8, ptr %103, i64 96
  %694 = getelementptr inbounds i8, ptr %675, i64 24
  %695 = load i8, ptr %694, align 8, !tbaa !110, !range !31, !noundef !32
  store i8 %695, ptr %693, align 8, !tbaa !124
  %696 = getelementptr inbounds i8, ptr %103, i64 97
  %697 = getelementptr inbounds i8, ptr %675, i64 96
  %698 = load i8, ptr %697, align 8, !tbaa !131, !range !31, !noundef !32
  store i8 %698, ptr %696, align 1, !tbaa !132
  %699 = getelementptr inbounds i8, ptr %103, i64 104
  %700 = getelementptr inbounds i8, ptr %675, i64 32
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %699, ptr noundef nonnull align 8 dereferenceable(32) %700)
          to label %711 unwind label %722

.lr.ph589:                                        ; preds = %._crit_edge, %703
  %701 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #9
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(120) %701)
          to label %702 unwind label %706

702:                                              ; preds = %.lr.ph589
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %703 unwind label %708

703:                                              ; preds = %702
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #9
  %704 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7TypeRefSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  %705 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7TypeRefSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  br i1 %705, label %.lr.ph589, label %._crit_edge590

706:                                              ; preds = %.lr.ph589
  %707 = landingpad { ptr, i32 }
          cleanup
  br label %710

708:                                              ; preds = %702
  %709 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  br label %710

710:                                              ; preds = %708, %706
  %.pn361 = phi { ptr, i32 } [ %709, %708 ], [ %707, %706 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #9
  br label %738

711:                                              ; preds = %._crit_edge590
  %712 = getelementptr inbounds i8, ptr %103, i64 112
  %713 = getelementptr inbounds i8, ptr %675, i64 64
  %714 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt10unique_ptrI7TypeRefSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %713) #9
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %712, ptr noundef nonnull align 8 dereferenceable(120) %714)
          to label %715 unwind label %724

715:                                              ; preds = %711
  %716 = getelementptr inbounds i8, ptr %103, i64 120
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %716, ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  %717 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %699, ptr noundef nonnull @.str.6)
          to label %718 unwind label %727

718:                                              ; preds = %715
  br i1 %717, label %719, label %731

719:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #9
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %104, ptr noundef nonnull @.str.28)
          to label %720 unwind label %729

720:                                              ; preds = %719
  %721 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %699, ptr noundef nonnull align 8 dereferenceable(8) %104)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #9
  br label %731

722:                                              ; preds = %._crit_edge590
  %723 = landingpad { ptr, i32 }
          cleanup
  br label %726

724:                                              ; preds = %711
  %725 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %699) #9
  br label %726

726:                                              ; preds = %724, %722
  %.pn = phi { ptr, i32 } [ %725, %724 ], [ %723, %722 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %103) #9
  br label %737

727:                                              ; preds = %731, %715
  %728 = landingpad { ptr, i32 }
          cleanup
  br label %736

729:                                              ; preds = %719
  %730 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #9
  br label %736

731:                                              ; preds = %720, %718
  invoke void @_ZN3HIR24TypeData_FunctionPointerC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %105, ptr noundef nonnull align 8 dereferenceable(144) %103)
          to label %732 unwind label %727

732:                                              ; preds = %731
  invoke void @_ZN3HIR7TypeRefC2ENS_24TypeData_FunctionPointerE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %105)
          to label %733 unwind label %734

733:                                              ; preds = %732
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %105) #9
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %103) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %95) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %95) #9
  br label %752

734:                                              ; preds = %732
  %735 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %105) #9
  br label %736

736:                                              ; preds = %734, %729, %727
  %.pn358 = phi { ptr, i32 } [ %735, %734 ], [ %728, %727 ], [ %730, %729 ]
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #9
  br label %737

737:                                              ; preds = %736, %726
  %.pn358.pn = phi { ptr, i32 } [ %.pn358, %736 ], [ %.pn, %726 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %103) #9
  br label %738

738:                                              ; preds = %737, %710
  %.pn361.pn = phi { ptr, i32 } [ %.pn361, %710 ], [ %.pn358.pn, %737 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #9
  br label %739

739:                                              ; preds = %738, %691
  %.pn364 = phi { ptr, i32 } [ %692, %691 ], [ %.pn361.pn, %738 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %95) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %95) #9
  br label %751

740:                                              ; preds = %.lr.ph
  %741 = tail call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(112) %107)
  %742 = getelementptr inbounds i8, ptr %741, i64 8
  %743 = load i32, ptr %742, align 8, !tbaa !133
  %744 = icmp ult i32 %743, 65536
  br i1 %744, label %746, label %745

745:                                              ; preds = %740
  tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 1078, ptr noundef nonnull @__PRETTY_FUNCTION__._Z13LowerHIR_TypeRK7TypeRef) #11
  unreachable

746:                                              ; preds = %740
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %741)
  %747 = load i32, ptr %742, align 8, !tbaa !133
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %106, i32 noundef %747)
          to label %748 unwind label %749

748:                                              ; preds = %746
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #9
  br label %752

749:                                              ; preds = %746
  %750 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #9
  br label %751

751:                                              ; preds = %502, %504, %673, %338, %348, %314, %316, %319, %147, %152, %154, %133, %135, %117, %119, %749, %739, %493, %296, %291, %194, %185, %174
  %.pn453 = phi { ptr, i32 } [ %750, %749 ], [ %.pn364, %739 ], [ %.pn408.pn.pn.pn, %493 ], [ %297, %296 ], [ %.pn439.pn, %291 ], [ %195, %194 ], [ %186, %185 ], [ %.pn442.pn, %174 ], [ %120, %119 ], [ %118, %117 ], [ %136, %135 ], [ %134, %133 ], [ %155, %154 ], [ %153, %152 ], [ %.pn445, %147 ], [ %.pn416, %338 ], [ %.pn414, %348 ], [ %320, %319 ], [ %317, %316 ], [ %315, %314 ], [ %.pn391.pn.pn, %673 ], [ %505, %504 ], [ %503, %502 ]
  resume { ptr, i32 } %.pn453

752:                                              ; preds = %.split512.us, %.split516.us, %.split520.us, %.split524.us, %.split528.us, %.split532.us, %.split536.us, %.split540.us, %.split544.us, %.split548.us, %.split552.us, %.split556.us, %.split560.us, %.split564.us, %.split568.us, %.split572.us, %.split576.us, %318, %333, %343, %121, %123, %125, %171, %184, %193, %290, %295, %487, %664, %733, %748
  ret void

753:                                              ; preds = %608, %571, %459, %368, %217
  unreachable
}

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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 #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #0

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20LowerHIR_GenericPathRK4SpanRKN3AST4PathE17FromAST_PathClassb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i1 noundef zeroext) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_PathRK4SpanRKN3AST4PathE17FromAST_PathClass(ptr dead_on_unwind noalias writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), i32 noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_ExprRKSt10shared_ptrIN3AST8ExprNodeEE(ptr dead_on_unwind noalias writable sret(%"class.HIR::ExprPtr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN3HIR24ConstGeneric_UnevaluatedEJNS0_7ExprPtrEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.145") align 8, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #7

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #6

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

; 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 #0 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)) #7

; 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 #0 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)) #7

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128geERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_Z19coretype_fromstringPKc(ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2E4Span9eCoreType(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: nounwind
declare void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST16PathBinding_Type8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

declare noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZNK8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3HIR11LifetimeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

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

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

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

declare void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3HIR30TypeData_ErasedType_AliasInnerEJRKNS0_8ItemPathERKNS0_13GenericParamsEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.142") align 8, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_10Data_AliasE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZN3HIR25TypeData_ErasedType_InneraSEOS0_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #0 align 2

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

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR25TypeData_ErasedType_InnerC2ENS0_8Data_FcnE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR8TypeDataC2ENS_19TypeData_ErasedTypeE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef) unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZNK8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 = { "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 = { 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 #8 = { mustprogress nofree nounwind willreturn memory(read) }
attributes #9 = { nounwind }
attributes #10 = { noreturn }
attributes #11 = { 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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !24, i64 24}
!12 = !{!"_ZTSN8TypeData11Data_BorrowE", !13, i64 0, !24, i64 24, !25, i64 32}
!13 = !{!"_ZTSN3AST11LifetimeRefE", !14, i64 0, !23, i64 16}
!14 = !{!"_ZTS5Ident", !15, i64 0, !22, i64 8}
!15 = !{!"_ZTSN5Ident7HygieneE", !16, i64 0}
!16 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !18, i64 0}
!18 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !20, i64 0}
!20 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !21, i64 0}
!21 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !6, i64 0}
!22 = !{!"_ZTS8RcString", !6, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTSSt10unique_ptrI7TypeRefSt14default_deleteIS0_EE", !26, i64 0}
!26 = !{!"_ZTSSt15__uniq_ptr_dataI7TypeRefSt14default_deleteIS0_ELb1ELb1EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_implI7TypeRefSt14default_deleteIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt5tupleIJP7TypeRefSt14default_deleteIS0_EEE", !29, i64 0}
!29 = !{!"_ZTSSt11_Tuple_implILm0EJP7TypeRefSt14default_deleteIS0_EEE", !30, i64 0}
!30 = !{!"_ZTSSt10_Head_baseILm0EP7TypeRefLb0EE", !6, i64 0}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!34, !24, i64 0}
!34 = !{!"_ZTSN8TypeData12Data_PointerE", !24, i64 0, !25, i64 8}
!35 = !{!36, !44, i64 40}
!36 = !{!"_ZTSN3AST16ExprNode_IntegerE", !37, i64 0, !44, i64 40, !45, i64 48}
!37 = !{!"_ZTSN3AST8ExprNodeE", !38, i64 8, !43, i64 32}
!38 = !{!"_ZTSN3AST13AttributeListE", !39, i64 0}
!39 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTS4Span", !6, i64 0}
!44 = !{!"_ZTS9eCoreType", !7, i64 0}
!45 = !{!"_ZTS4U128", !46, i64 0, !46, i64 8}
!46 = !{!"long", !7, i64 0}
!47 = !{!48, !49, i64 0}
!48 = !{!"_ZTSN3AST17PathBinding_Value12Data_GenericE", !49, i64 0}
!49 = !{!"int", !7, i64 0}
!50 = !{!51, !49, i64 0}
!51 = !{!"_ZTSN3AST16PathBinding_Type18Data_TypeParameterE", !49, i64 0}
!52 = !{!49, !49, i64 0}
!53 = !{!54, !6, i64 0}
!54 = !{!"_ZTSN3AST16PathBinding_Type10Data_TraitE", !6, i64 0, !6, i64 8}
!55 = !{!56, !24, i64 128}
!56 = !{!"_ZTSN3HIR5TraitE", !57, i64 0, !74, i64 96, !75, i64 104, !24, i64 128, !79, i64 136, !84, i64 192, !86, i64 248, !88, i64 304, !49, i64 360, !75, i64 368, !90, i64 392}
!57 = !{!"_ZTSN3HIR13GenericParamsE", !58, i64 0, !62, i64 24, !66, i64 48, !70, i64 72}
!58 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!70 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!74 = !{!"_ZTSN3HIR11LifetimeRefE", !49, i64 0}
!75 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !80, i64 0}
!80 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !46, i64 8, !81, i64 16, !46, i64 24, !82, i64 32, !6, i64 48}
!81 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!82 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !83, i64 0, !46, i64 8}
!83 = !{!"float", !7, i64 0}
!84 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !85, i64 0}
!85 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !46, i64 8, !81, i64 16, !46, i64 24, !82, i64 32, !6, i64 48}
!86 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !87, i64 0}
!87 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !46, i64 8, !81, i64 16, !46, i64 24, !82, i64 32, !6, i64 48}
!88 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !89, i64 0}
!89 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !46, i64 8, !81, i64 16, !46, i64 24, !82, i64 32, !6, i64 48}
!90 = !{!"_ZTSN3HIR10SimplePathE", !91, i64 0}
!91 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!92 = !{!54, !6, i64 8}
!93 = !{!94, !6, i64 0}
!94 = !{!"_ZTSN12_GLOBAL__N_115ImplTraitSourceE", !6, i64 0, !6, i64 8, !6, i64 16}
!95 = !{!94, !6, i64 16}
!96 = !{!94, !6, i64 8}
!97 = !{!98, !49, i64 88}
!98 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner8Data_FcnE", !99, i64 0, !49, i64 88}
!99 = !{!"_ZTSN3HIR4PathE", !100, i64 0}
!100 = !{!"_ZTSN3HIR4Path4DataE", !101, i64 0, !7, i64 8}
!101 = !{!"_ZTSN3HIR4Path4Data3TagE", !7, i64 0}
!102 = !{!103, !24, i64 0}
!103 = !{!"_ZTSN3HIR19TypeData_ErasedTypeE", !24, i64 0, !75, i64 8, !104, i64 32, !108, i64 56}
!104 = !{!"_ZTSSt6vectorIN3HIR11LifetimeRefESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE12_Vector_implE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!108 = !{!"_ZTSN3HIR25TypeData_ErasedType_InnerE", !109, i64 0, !7, i64 8}
!109 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner3TagE", !7, i64 0}
!110 = !{!111, !24, i64 24}
!111 = !{!"_ZTSN8TypeData13Data_FunctionE", !112, i64 0}
!112 = !{!"_ZTS13Type_Function", !113, i64 0, !24, i64 24, !118, i64 32, !25, i64 64, !120, i64 72, !24, i64 96}
!113 = !{!"_ZTSN3AST18HigherRankedBoundsE", !114, i64 0}
!114 = !{!"_ZTSSt6vectorIN3AST13LifetimeParamESaIS1_EE", !115, i64 0}
!115 = !{!"_ZTSSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE12_Vector_implE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN3AST13LifetimeParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!118 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !119, i64 0, !46, i64 8, !7, i64 16}
!119 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!120 = !{!"_ZTSSt6vectorI7TypeRefSaIS0_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseI7TypeRefSaIS0_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseI7TypeRefSaIS0_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseI7TypeRefSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!124 = !{!125, !24, i64 96}
!125 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !57, i64 0, !24, i64 96, !24, i64 97, !22, i64 104, !126, i64 112, !127, i64 120}
!126 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!127 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!131 = !{!111, !24, i64 96}
!132 = !{!125, !24, i64 97}
!133 = !{!134, !49, i64 8}
!134 = !{!"_ZTSN8TypeData12Data_GenericE", !22, i64 0, !49, i64 8}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass