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

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

%"class.HIR::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%"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.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.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.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.160", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.160" = type { %"struct.std::_Vector_base.161" }
%"struct.std::_Vector_base.161" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"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::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"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::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.529", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.529" = type { %"struct.std::_Vector_base.530" }
%"struct.std::_Vector_base.530" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.510", i8, i32 }
%"class.std::vector.510" = type { %"struct.std::_Vector_base.511" }
%"struct.std::_Vector_base.511" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.557 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.558" = type { ptr }
%"struct.std::pair.559" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%struct.Ivcr = type { ptr, ptr }
%class.anon.717 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.718" = type { ptr }
%class.anon.719 = type { ptr, ptr, ptr }
%class.anon.720 = type { i8 }
%class.MonomorphiserNop = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.260" }
%"class.std::vector.260" = type { %"struct.std::_Vector_base.261" }
%"struct.std::_Vector_base.261" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.748" = type { %"class.std::_Function_base", ptr }
%class.anon.751 = type { i8 }
%class.anon.753 = type { ptr }
%class.anon.754 = type { ptr }
%"struct.AST::Function::Arg" = type { %"class.AST::AttributeList", %"class.AST::Pattern", %class.TypeRef }
%"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 }
%"class.AST::Pattern" = type { ptr, %struct.Span, %"class.std::vector.192", %"class.AST::Pattern::Data" }
%"class.std::vector.192" = type { %"struct.std::_Vector_base.193" }
%"struct.std::_Vector_base.193" = type { %"struct.std::_Vector_base<AST::PatternBinding, std::allocator<AST::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PatternBinding, std::allocator<AST::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PatternBinding, std::allocator<AST::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PatternBinding, std::allocator<AST::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Pattern::Data" = type { i32, %"union.AST::Pattern::Data::DataUnion" }
%"union.AST::Pattern::Data::DataUnion" = type { %"struct.AST::Pattern::Data::Data_Value" }
%"struct.AST::Pattern::Data::Data_Value" = type { %"class.AST::Pattern::Value", %"class.AST::Pattern::Value" }
%"class.AST::Pattern::Value" = type { i32, %"union.AST::Pattern::Value::DataUnion" }
%"union.AST::Pattern::Value::DataUnion" = type { %"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.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 }
%"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 }
%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 }
%"struct.HIR::PatternBinding" = type { i8, i32, %class.RcString, i32, i32 }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.106" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.AST::Function" = type { %struct.Span, %"class.AST::GenericParams", %"class.AST::Expr", %class.TypeRef, %"class.std::vector.505", i8, %"class.std::__cxx11::basic_string", %"struct.AST::Function::Flags", [5 x i8], %"struct.AST::Function::Markings" }
%"class.AST::GenericParams" = type { %"class.std::vector.28", %"class.std::vector.33" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Expr" = type { %"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" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.505" = type { %"struct.std::_Vector_base.506" }
%"struct.std::_Vector_base.506" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Function::Flags" = type { i8, i8, i8 }
%"struct.AST::Function::Markings" = type <{ i32, i8, [3 x i8], %"class.std::vector.510", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.AST::Crate" = type { %"class.AST::AttributeList", %"class.std::map.722", %"class.AST::Module", %"class.std::vector", %"class.std::map.728", %"class.std::map.733", %class.RcString, %class.RcString, %class.RcString, %class.RcString, i8, %"class.std::vector.738", %"class.std::vector.712", %"class.std::vector.743", i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %class.RcString, %"class.AST::Path" }
%"class.std::map.722" = type { %"class.std::_Rb_tree.723" }
%"class.std::_Rb_tree.723" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>>, std::less<std::__cxx11::basic_string<char>>>::_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.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.461", %"class.std::vector.466", %"class.std::vector.471", %"struct.AST::Module::FileInfo", i8, i8, %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::unordered_map.476", %"class.std::vector.490", %"class.std::vector.495", %"class.std::vector.500" }
%"class.std::vector.461" = type { %"struct.std::_Vector_base.462" }
%"struct.std::_Vector_base.462" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.466" = type { %"struct.std::_Vector_base.467" }
%"struct.std::_Vector_base.467" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.471" = type { %"struct.std::_Vector_base.472" }
%"struct.std::_Vector_base.472" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::FileInfo" = type { i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::unordered_map.476" = type { %"class.std::_Hashtable.477" }
%"class.std::_Hashtable.477" = 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::vector.490" = type { %"struct.std::_Vector_base.491" }
%"struct.std::_Vector_base.491" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.495" = type { %"struct.std::_Vector_base.496" }
%"struct.std::_Vector_base.496" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.500" = type { %"struct.std::_Vector_base.501" }
%"struct.std::_Vector_base.501" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.728" = type { %"class.std::_Rb_tree.729" }
%"class.std::_Rb_tree.729" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, AST::ExternCrate>, std::_Select1st<std::pair<const RcString, AST::ExternCrate>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, AST::ExternCrate>, std::_Select1st<std::pair<const RcString, AST::ExternCrate>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.733" = type { %"class.std::_Rb_tree.734" }
%"class.std::_Rb_tree.734" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, const MacroRules *>, std::_Select1st<std::pair<const RcString, const MacroRules *>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, const MacroRules *>, std::_Select1st<std::pair<const RcString, const MacroRules *>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.738" = type { %"struct.std::_Vector_base.739" }
%"struct.std::_Vector_base.739" = type { %"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.712" = type { %"struct.std::_Vector_base.713" }
%"struct.std::_Vector_base.713" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.743" = type { %"struct.std::_Vector_base.744" }
%"struct.std::_Vector_base.744" = type { %"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@g_crate_ptr = external dso_local global ptr, align 8
@g_ast_crate_ptr = external dso_local global ptr, align 8
@_ZN12_GLOBAL__N_17ty_SelfE = external hidden global %"class.HIR::TypeRef", 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.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
@_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp = external hidden global %struct.Span, align 8
@_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp = external hidden global i64, align 8
@__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE = external hidden unnamed_addr constant [130 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

; 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: 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) #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: mustprogress uwtable
declare dso_local void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120)) #5

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

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)

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

; 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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5 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 @_Z16LowerHIR_PatternRKN3AST7PatternE(ptr dead_on_unwind noalias writable sret(%"struct.HIR::Pattern") align 8, ptr noundef nonnull align 8 dereferenceable(544)) #5

declare noundef zeroext i1 @_Z13debug_enabledv() #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16)) #7 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: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #7 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)) #7 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)) #5 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)) #7 align 2

declare noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #6

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Function") align 8 %0, ptr noundef byval(%"class.HIR::ItemPath") align 8 %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(368) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #5 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %class.TraceLog, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.557, align 8
  %15 = alloca %"class.std::vector.529", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.558", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.558", align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"struct.std::pair.559", align 8
  %21 = alloca %"struct.HIR::Pattern", align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %struct.Ivcr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"struct.HIR::SimplePath", align 8
  %31 = alloca %"class.HIR::TypeRef", align 8
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function", align 8
  %34 = alloca %class.anon.717, align 8
  %35 = alloca i8, align 1
  %36 = alloca %"struct.HIR::Function::Markings", align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.718", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.718", align 8
  %40 = alloca i32, align 4
  %41 = alloca %struct.Span, align 8
  %42 = alloca %"class.std::function", align 8
  %43 = alloca %class.anon.719, align 8
  %44 = alloca %"struct.HIR::Linkage", align 8
  %45 = alloca %struct.Span, align 8
  %46 = alloca %"class.std::function", align 8
  %47 = alloca %class.anon.720, align 1
  %48 = alloca ptr, align 8
  %49 = alloca i1, align 1
  %50 = alloca %"class.HIR::TypeRef", align 8
  %51 = alloca %class.MonomorphiserNop, align 8
  %52 = alloca %"class.std::function.748", align 8
  %53 = alloca %class.anon.751, align 1
  %54 = alloca %struct.Span, align 8
  %55 = alloca %"class.std::function", align 8
  %56 = alloca %class.anon.753, align 8
  %57 = alloca %class.RcString, align 8
  %58 = alloca %"class.HIR::GenericParams", align 8
  %59 = alloca %"class.HIR::TypeRef", align 8
  %60 = alloca %"class.HIR::ExprPtr", align 8
  %61 = alloca ptr, align 8
  %62 = alloca %struct.Span, align 8
  %63 = alloca %"class.std::function", align 8
  %64 = alloca %class.anon.754, align 8
  store ptr %0, ptr %6, align 8
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  store ptr %4, ptr %9, align 8, !tbaa !5
  %65 = load atomic i8, ptr @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp acquire, align 8
  %66 = icmp eq i8 %65, 0
  br i1 %66, label %67, label %73, !prof !9

67:                                               ; preds = %5
  %68 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp) #0
  %69 = icmp ne i32 %68, 0
  br i1 %69, label %70, label %73

70:                                               ; preds = %67
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp)
          to label %71 unwind label %91

71:                                               ; preds = %70
  %72 = call i32 @__cxa_atexit(ptr @_ZN4SpanD1Ev, ptr @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp) #0
  br label %73

73:                                               ; preds = %71, %67, %5
  call void @llvm.lifetime.start.p0(i64 40, ptr %12) #0
  %74 = call noundef zeroext i1 @_Z13debug_enabledv()
  %75 = zext i1 %74 to i64
  %76 = select i1 %74, ptr @__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #0
  %77 = getelementptr inbounds %class.anon.557, ptr %14, i32 0, i32 0
  store ptr %1, ptr %77, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef %76, ptr noundef %13)
          to label %78 unwind label %95

78:                                               ; preds = %73
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #0
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #0
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %79)
          to label %81 unwind label %99

81:                                               ; preds = %78
  store ptr %80, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #0
  %82 = load ptr, ptr %16, align 8, !tbaa !5
  %83 = call ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #0
  %84 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.558", ptr %17, i32 0, i32 0
  store ptr %83, ptr %84, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  %86 = call ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #0
  %87 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.558", ptr %18, i32 0, i32 0
  store ptr %86, ptr %87, align 8
  br label %88

88:                                               ; preds = %113, %81
  %89 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #0
  br i1 %89, label %103, label %90

90:                                               ; preds = %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  br label %135

91:                                               ; preds = %70
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %10, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %11, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp) #0
  br label %808

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

99:                                               ; preds = %78
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %10, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %11, align 4
  br label %134

103:                                              ; preds = %88
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #0
  %104 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #0
  store ptr %104, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 224, ptr %20) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %21) #0
  %105 = load ptr, ptr %19, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.AST::Function::Arg", ptr %105, i32 0, i32 1
  invoke void @_Z16LowerHIR_PatternRKN3AST7PatternE(ptr dead_on_unwind writable sret(%"struct.HIR::Pattern") align 8 %21, ptr noundef nonnull align 8 dereferenceable(544) %106)
          to label %107 unwind label %115

107:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.AST::Function::Arg", ptr %108, i32 0, i32 2
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull align 8 dereferenceable(120) %109)
          to label %110 unwind label %119

110:                                              ; preds = %107
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.559") align 8 %20, ptr noundef nonnull align 8 dereferenceable(212) %21, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %111 unwind label %123

111:                                              ; preds = %110
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(224) %20)
          to label %112 unwind label %127

112:                                              ; preds = %111
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %20) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %21) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  br label %113

113:                                              ; preds = %112
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #0
  br label %88

115:                                              ; preds = %103
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %10, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %11, align 4
  br label %133

119:                                              ; preds = %107
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %10, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %11, align 4
  br label %132

123:                                              ; preds = %110
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %10, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %11, align 4
  br label %131

127:                                              ; preds = %111
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %10, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %11, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %20) #0
  br label %131

131:                                              ; preds = %127, %123
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  br label %132

132:                                              ; preds = %131, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %21) #0
  br label %133

133:                                              ; preds = %132, %115
  call void @llvm.lifetime.end.p0(i64 216, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  br label %134

134:                                              ; preds = %133, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  br label %806

135:                                              ; preds = %90
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #0
  store i32 0, ptr %23, align 4, !tbaa !10
  %136 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %137 = icmp ugt i64 %136, 0
  br i1 %137, label %138, label %364

138:                                              ; preds = %135
  %139 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %140 = getelementptr inbounds %"struct.std::pair.559", ptr %139, i32 0, i32 0
  %141 = getelementptr inbounds %"struct.HIR::Pattern", ptr %140, i32 0, i32 0
  %142 = call noundef i64 @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %141) #0
  %143 = icmp ugt i64 %142, 0
  br i1 %143, label %144, label %364

144:                                              ; preds = %138
  %145 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %146 = getelementptr inbounds %"struct.std::pair.559", ptr %145, i32 0, i32 0
  %147 = getelementptr inbounds %"struct.HIR::Pattern", ptr %146, i32 0, i32 0
  %148 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN3HIR14PatternBindingESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef 0) #0
  %149 = getelementptr inbounds %"struct.HIR::PatternBinding", ptr %148, i32 0, i32 2
  %150 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef @.str.39)
          to label %151 unwind label %174

151:                                              ; preds = %144
  br i1 %150, label %152, label %364

152:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  %153 = load ptr, ptr %8, align 8, !tbaa !5
  %154 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %153)
          to label %155 unwind label %178

155:                                              ; preds = %152
  %156 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef 0) #0
  %157 = getelementptr inbounds %"struct.AST::Function::Arg", ptr %156, i32 0, i32 1
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST7Pattern4spanEv(ptr noundef nonnull align 8 dereferenceable(544) %157)
          to label %159 unwind label %178

159:                                              ; preds = %155
  store ptr %158, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #0
  %160 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %161 = getelementptr inbounds %"struct.std::pair.559", ptr %160, i32 0, i32 1
  store ptr %161, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #0
  %162 = load ptr, ptr %24, align 8, !tbaa !5
  %163 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEEN4IvcrC2ERK4SpanSA_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %164 unwind label %182

164:                                              ; preds = %159
  %165 = load ptr, ptr %25, align 8, !tbaa !5
  %166 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %167 unwind label %182

167:                                              ; preds = %164
  br i1 %166, label %173, label %168

168:                                              ; preds = %167
  %169 = load ptr, ptr %25, align 8, !tbaa !5
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %172 unwind label %182

172:                                              ; preds = %168
  br i1 %171, label %173, label %186

173:                                              ; preds = %172, %167
  store i32 1, ptr %23, align 4, !tbaa !10
  br label %334

174:                                              ; preds = %144
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %10, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %11, align 4
  br label %805

178:                                              ; preds = %155, %152
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %10, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %11, align 4
  br label %363

182:                                              ; preds = %345, %168, %164, %159
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %10, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %11, align 4
  br label %362

186:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #0
  %187 = load ptr, ptr %25, align 8, !tbaa !5
  %188 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %189 unwind label %209

189:                                              ; preds = %186
  %190 = invoke noundef ptr @_ZN3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %188)
          to label %191 unwind label %209

191:                                              ; preds = %189
  store ptr %190, ptr %27, align 8, !tbaa !5
  %192 = load ptr, ptr %27, align 8, !tbaa !5
  %193 = icmp ne ptr %192, null
  br i1 %193, label %194, label %225

194:                                              ; preds = %191
  %195 = load ptr, ptr %27, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %195, i32 0, i32 2
  %197 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %198 unwind label %209

198:                                              ; preds = %194
  br i1 %197, label %205, label %199

199:                                              ; preds = %198
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %200, i32 0, i32 2
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %204 unwind label %209

204:                                              ; preds = %199
  br i1 %203, label %205, label %217

205:                                              ; preds = %204, %198
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %206, i32 0, i32 1
  %208 = load i32, ptr %207, align 4, !tbaa !12
  switch i32 %208, label %216 [
    i32 2, label %213
    i32 1, label %214
    i32 0, label %215
  ]

209:                                              ; preds = %217, %199, %194, %189, %186
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %10, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %11, align 4
  br label %333

213:                                              ; preds = %205
  store i32 2, ptr %23, align 4, !tbaa !10
  br label %216

214:                                              ; preds = %205
  store i32 3, ptr %23, align 4, !tbaa !10
  br label %216

215:                                              ; preds = %205
  store i32 4, ptr %23, align 4, !tbaa !10
  br label %216

216:                                              ; preds = %215, %214, %213, %205
  br label %224

217:                                              ; preds = %204
  %218 = load ptr, ptr %27, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %218, i32 0, i32 2
  %220 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %221 unwind label %209

221:                                              ; preds = %217
  br i1 %220, label %222, label %223

222:                                              ; preds = %221
  store i32 6, ptr %23, align 4, !tbaa !10
  br label %223

223:                                              ; preds = %222, %221
  br label %224

224:                                              ; preds = %223, %216
  br label %332

225:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  %226 = load ptr, ptr %25, align 8, !tbaa !5
  %227 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %226)
          to label %228 unwind label %283

228:                                              ; preds = %225
  %229 = invoke noundef ptr @_ZN3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %227)
          to label %230 unwind label %283

230:                                              ; preds = %228
  store ptr %229, ptr %28, align 8, !tbaa !5
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  %232 = icmp ne ptr %231, null
  br i1 %232, label %233, label %323

233:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %234 = load ptr, ptr %28, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %234, i32 0, i32 0
  %236 = getelementptr inbounds %"class.HIR::Path", ptr %235, i32 0, i32 0
  %237 = invoke noundef ptr @_ZN3HIR4Path4Data11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %236)
          to label %238 unwind label %287

238:                                              ; preds = %233
  store ptr %237, ptr %29, align 8, !tbaa !5
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = icmp ne ptr %239, null
  br i1 %240, label %241, label %321

241:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #0
  %242 = load ptr, ptr @g_crate_ptr, align 8, !tbaa !5
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944) %242, ptr noundef @.str.40)
          to label %244 unwind label %291

244:                                              ; preds = %241
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %245 unwind label %291

245:                                              ; preds = %244
  %246 = load ptr, ptr %29, align 8, !tbaa !5
  %247 = getelementptr inbounds %"class.HIR::GenericPath", ptr %246, i32 0, i32 0
  %248 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %249 unwind label %295

249:                                              ; preds = %245
  br i1 %248, label %250, label %309

250:                                              ; preds = %249
  %251 = load ptr, ptr %29, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.HIR::GenericPath", ptr %251, i32 0, i32 1
  %253 = getelementptr inbounds %"struct.HIR::PathParams", ptr %252, i32 0, i32 1
  %254 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %253)
          to label %255 unwind label %295

255:                                              ; preds = %250
  %256 = icmp uge i64 %254, 1
  br i1 %256, label %257, label %308

257:                                              ; preds = %255
  %258 = load ptr, ptr %29, align 8, !tbaa !5
  %259 = getelementptr inbounds %"class.HIR::GenericPath", ptr %258, i32 0, i32 1
  %260 = getelementptr inbounds %"struct.HIR::PathParams", ptr %259, i32 0, i32 1
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %260, i64 noundef 0)
          to label %262 unwind label %295

262:                                              ; preds = %257
  %263 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %264 unwind label %295

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

265:                                              ; preds = %264
  %266 = load ptr, ptr %29, align 8, !tbaa !5
  %267 = getelementptr inbounds %"class.HIR::GenericPath", ptr %266, i32 0, i32 1
  %268 = getelementptr inbounds %"struct.HIR::PathParams", ptr %267, i32 0, i32 1
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %268, i64 noundef 0)
          to label %270 unwind label %295

270:                                              ; preds = %265
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %273 unwind label %295

273:                                              ; preds = %270
  br i1 %272, label %274, label %308

274:                                              ; preds = %273, %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %31, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %275 unwind label %299

275:                                              ; preds = %274
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = getelementptr inbounds %"class.HIR::GenericPath", ptr %276, i32 0, i32 1
  %278 = getelementptr inbounds %"struct.HIR::PathParams", ptr %277, i32 0, i32 1
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %278, i64 noundef 0)
          to label %280 unwind label %303

280:                                              ; preds = %275
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %282 unwind label %303

282:                                              ; preds = %280
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  store i32 5, ptr %23, align 4, !tbaa !10
  br label %308

283:                                              ; preds = %323, %228, %225
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %10, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %11, align 4
  br label %331

287:                                              ; preds = %233
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %10, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %11, align 4
  br label %322

291:                                              ; preds = %244, %241
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %10, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %11, align 4
  br label %320

295:                                              ; preds = %312, %270, %265, %262, %257, %250, %245
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %10, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %11, align 4
  br label %319

299:                                              ; preds = %274
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %10, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %11, align 4
  br label %307

303:                                              ; preds = %280, %275
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %10, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %11, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #0
  br label %307

307:                                              ; preds = %303, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  br label %319

308:                                              ; preds = %282, %273, %255
  br label %309

309:                                              ; preds = %308, %249
  %310 = load i32, ptr %23, align 4, !tbaa !10
  %311 = icmp eq i32 %310, 0
  br i1 %311, label %312, label %318

312:                                              ; preds = %309
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(8) %313)
          to label %315 unwind label %295

315:                                              ; preds = %312
  br i1 %314, label %316, label %317

316:                                              ; preds = %315
  store i32 6, ptr %23, align 4, !tbaa !10
  br label %317

317:                                              ; preds = %316, %315
  br label %318

318:                                              ; preds = %317, %309
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  br label %321

319:                                              ; preds = %307, %295
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #0
  br label %320

320:                                              ; preds = %319, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  br label %322

321:                                              ; preds = %318, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %330

322:                                              ; preds = %320, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %331

323:                                              ; preds = %230
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(8) %324)
          to label %326 unwind label %283

326:                                              ; preds = %323
  br i1 %325, label %327, label %328

327:                                              ; preds = %326
  store i32 6, ptr %23, align 4, !tbaa !10
  br label %329

328:                                              ; preds = %326
  br label %329

329:                                              ; preds = %328, %327
  br label %330

330:                                              ; preds = %329, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %332

331:                                              ; preds = %322, %283
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %333

332:                                              ; preds = %330, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  br label %334

333:                                              ; preds = %331, %209
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  br label %362

334:                                              ; preds = %332, %173
  %335 = load i32, ptr %23, align 4, !tbaa !10
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %361

337:                                              ; preds = %334
  br label %338

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %339)
          to label %340 unwind label %346

340:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %341 = getelementptr inbounds %class.anon.717, ptr %34, i32 0, i32 0
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %342, ptr %341, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 0, ptr noundef %33)
          to label %343 unwind label %350

343:                                              ; preds = %340
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  %344 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %344, ptr noundef @.str.12)
          to label %345 unwind label %355

345:                                              ; preds = %343
  invoke void @__cxa_throw(ptr %344, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %813 unwind label %182

346:                                              ; preds = %338
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %10, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %11, align 4
  br label %354

350:                                              ; preds = %340
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %10, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #0
  br label %354

354:                                              ; preds = %350, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %362

355:                                              ; preds = %343
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %10, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %11, align 4
  call void @__cxa_free_exception(ptr %344) #0
  br label %362

359:                                              ; No predecessors!
  br label %360

360:                                              ; preds = %359
  br label %361

361:                                              ; preds = %360, %334
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  br label %364

362:                                              ; preds = %355, %354, %333, %182
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  br label %363

363:                                              ; preds = %362, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  br label %805

364:                                              ; preds = %361, %151, %138, %135
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #0
  store i8 0, ptr %35, align 1, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #0
  call void @_ZN3HIR8Function8MarkingsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #0
  %365 = load ptr, ptr %8, align 8, !tbaa !5
  %366 = getelementptr inbounds %"class.AST::Function", ptr %365, i32 0, i32 9
  %367 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %366, i32 0, i32 0
  %368 = load i32, ptr %367, align 8, !tbaa !20
  switch i32 %368, label %377 [
    i32 0, label %369
    i32 1, label %371
    i32 3, label %373
    i32 2, label %375
  ]

369:                                              ; preds = %364
  %370 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 2
  store i32 0, ptr %370, align 4, !tbaa !54
  br label %377

371:                                              ; preds = %364
  %372 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 2
  store i32 1, ptr %372, align 4, !tbaa !54
  br label %377

373:                                              ; preds = %364
  %374 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 2
  store i32 3, ptr %374, align 4, !tbaa !54
  store i8 1, ptr %35, align 1, !tbaa !18
  br label %377

375:                                              ; preds = %364
  %376 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 2
  store i32 2, ptr %376, align 4, !tbaa !54
  store i8 1, ptr %35, align 1, !tbaa !18
  br label %377

377:                                              ; preds = %375, %373, %371, %369, %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  %378 = load ptr, ptr %8, align 8, !tbaa !5
  %379 = getelementptr inbounds %"class.AST::Function", ptr %378, i32 0, i32 9
  %380 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %379, i32 0, i32 3
  store ptr %380, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #0
  %381 = load ptr, ptr %37, align 8, !tbaa !5
  %382 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %381) #0
  %383 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.718", ptr %38, i32 0, i32 0
  store ptr %382, ptr %383, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %384 = load ptr, ptr %37, align 8, !tbaa !5
  %385 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %384) #0
  %386 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.718", ptr %39, i32 0, i32 0
  store ptr %385, ptr %386, align 8
  br label %387

387:                                              ; preds = %445, %377
  %388 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br i1 %388, label %390, label %389

389:                                              ; preds = %387
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %448

390:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #0
  %391 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #0
  %392 = load i32, ptr %391, align 4, !tbaa !57
  store i32 %392, ptr %40, align 4, !tbaa !57
  br label %393

393:                                              ; preds = %390
  %394 = load i32, ptr %40, align 4, !tbaa !57
  %395 = zext i32 %394 to i64
  %396 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %397 = load ptr, ptr %8, align 8, !tbaa !5
  %398 = getelementptr inbounds %"class.AST::Function", ptr %397, i32 0, i32 9
  %399 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %398, i32 0, i32 3
  %400 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %399) #0
  %401 = add i64 %396, %400
  %402 = icmp ult i64 %395, %401
  br i1 %402, label %440, label %403

403:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %404 = load ptr, ptr %7, align 8, !tbaa !5
  %405 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %404, ptr noundef @.str.41)
          to label %406 unwind label %418

406:                                              ; preds = %403
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST9Attribute4spanEv(ptr noundef nonnull align 8 dereferenceable(169) %405)
          to label %408 unwind label %418

408:                                              ; preds = %406
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %407)
          to label %409 unwind label %418

409:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #0
  %410 = getelementptr inbounds %class.anon.719, ptr %43, i32 0, i32 0
  store ptr %40, ptr %410, align 8, !tbaa !5
  %411 = getelementptr inbounds %class.anon.719, ptr %43, i32 0, i32 1
  store ptr %15, ptr %411, align 8, !tbaa !5
  %412 = getelementptr inbounds %class.anon.719, ptr %43, i32 0, i32 2
  %413 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %413, ptr %412, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(24) %43)
          to label %414 unwind label %422

414:                                              ; preds = %409
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef %42)
          to label %415 unwind label %426

415:                                              ; preds = %414
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  %416 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %416, ptr noundef @.str.9)
          to label %417 unwind label %432

417:                                              ; preds = %415
  invoke void @__cxa_throw(ptr %416, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %813 unwind label %436

418:                                              ; preds = %408, %406, %403
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %10, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %11, align 4
  br label %431

422:                                              ; preds = %409
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %10, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %11, align 4
  br label %430

426:                                              ; preds = %414
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %10, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #0
  br label %430

430:                                              ; preds = %426, %422
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #0
  br label %431

431:                                              ; preds = %430, %418
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  br label %447

432:                                              ; preds = %415
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %10, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %11, align 4
  call void @__cxa_free_exception(ptr %416) #0
  br label %447

436:                                              ; preds = %442, %417
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %10, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %11, align 4
  br label %447

440:                                              ; preds = %393
  br label %441

441:                                              ; preds = %440
  br label %442

442:                                              ; preds = %441
  %443 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 0
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %443, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %444 unwind label %436

444:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #0
  br label %445

445:                                              ; preds = %444
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #0
  br label %387

447:                                              ; preds = %436, %432, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %804

448:                                              ; preds = %389
  %449 = load ptr, ptr %7, align 8, !tbaa !5
  %450 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %449, ptr noundef @.str.42)
          to label %451 unwind label %455

451:                                              ; preds = %448
  %452 = icmp ne ptr %450, null
  br i1 %452, label %453, label %459

453:                                              ; preds = %451
  %454 = getelementptr inbounds %"struct.HIR::Function::Markings", ptr %36, i32 0, i32 1
  store i8 1, ptr %454, align 8, !tbaa !58
  br label %459

455:                                              ; preds = %448
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %10, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %11, align 4
  br label %804

459:                                              ; preds = %453, %451
  call void @llvm.lifetime.start.p0(i64 72, ptr %44) #0
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %44) #0
  %460 = load ptr, ptr %8, align 8, !tbaa !5
  %461 = getelementptr inbounds %"class.AST::Function", ptr %460, i32 0, i32 9
  %462 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %461, i32 0, i32 6
  %463 = load i32, ptr %462, align 8, !tbaa !59
  switch i32 %463, label %491 [
    i32 0, label %491
    i32 1, label %464
    i32 2, label %466
  ]

464:                                              ; preds = %459
  %465 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 0
  store i32 1, ptr %465, align 8, !tbaa !60
  br label %491

466:                                              ; preds = %459
  br label %467

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp)
          to label %468 unwind label %472

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 1 dereferenceable(1) %47) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef %46)
          to label %469 unwind label %476

469:                                              ; preds = %468
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  %470 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %470, ptr noundef @.str.9)
          to label %471 unwind label %481

471:                                              ; preds = %469
  invoke void @__cxa_throw(ptr %470, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %813 unwind label %485

472:                                              ; preds = %467
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %10, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %11, align 4
  br label %480

476:                                              ; preds = %468
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %10, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #0
  br label %480

480:                                              ; preds = %476, %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  br label %803

481:                                              ; preds = %469
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %10, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %11, align 4
  call void @__cxa_free_exception(ptr %470) #0
  br label %803

485:                                              ; preds = %603, %599, %597, %594, %591, %587, %541, %539, %534, %529, %527, %522, %515, %509, %505, %502, %491, %471
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %10, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %11, align 4
  br label %803

489:                                              ; No predecessors!
  br label %490

490:                                              ; preds = %489
  br label %491

491:                                              ; preds = %490, %464, %459, %459
  %492 = load ptr, ptr %8, align 8, !tbaa !5
  %493 = getelementptr inbounds %"class.AST::Function", ptr %492, i32 0, i32 9
  %494 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %493, i32 0, i32 5
  %495 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 2
  %496 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %495, ptr noundef nonnull align 8 dereferenceable(32) %494)
          to label %497 unwind label %485

497:                                              ; preds = %491
  %498 = load ptr, ptr @g_ast_crate_ptr, align 8, !tbaa !5
  %499 = getelementptr inbounds %"class.AST::Crate", ptr %498, i32 0, i32 10
  %500 = load i8, ptr %499, align 8, !tbaa !63, !range !151, !noundef !152
  %501 = trunc i8 %500 to i1
  br i1 %501, label %502, label %509

502:                                              ; preds = %497
  %503 = load ptr, ptr %8, align 8, !tbaa !5
  %504 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %503)
          to label %505 unwind label %485

505:                                              ; preds = %502
  %506 = invoke noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16) %504)
          to label %507 unwind label %485

507:                                              ; preds = %505
  br i1 %506, label %508, label %509

508:                                              ; preds = %507
  br label %587

509:                                              ; preds = %507, %497
  %510 = load ptr, ptr %8, align 8, !tbaa !5
  %511 = getelementptr inbounds %"class.AST::Function", ptr %510, i32 0, i32 9
  %512 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %511, i32 0, i32 4
  %513 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %512, ptr noundef @.str.6)
          to label %514 unwind label %485

514:                                              ; preds = %509
  br i1 %513, label %515, label %522

515:                                              ; preds = %514
  %516 = load ptr, ptr %8, align 8, !tbaa !5
  %517 = getelementptr inbounds %"class.AST::Function", ptr %516, i32 0, i32 9
  %518 = getelementptr inbounds %"struct.AST::Function::Markings", ptr %517, i32 0, i32 4
  %519 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %520 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %519, ptr noundef nonnull align 8 dereferenceable(32) %518)
          to label %521 unwind label %485

521:                                              ; preds = %515
  br label %586

522:                                              ; preds = %514
  %523 = load ptr, ptr %7, align 8, !tbaa !5
  %524 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %523, ptr noundef @.str.43)
          to label %525 unwind label %485

525:                                              ; preds = %522
  %526 = icmp ne ptr %524, null
  br i1 %526, label %527, label %534

527:                                              ; preds = %525
  %528 = invoke noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
          to label %529 unwind label %485

529:                                              ; preds = %527
  %530 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %531 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %530, ptr noundef %528)
          to label %532 unwind label %485

532:                                              ; preds = %529
  %533 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 0
  store i32 1, ptr %533, align 8, !tbaa !60
  br label %585

534:                                              ; preds = %525
  %535 = load ptr, ptr %7, align 8, !tbaa !5
  %536 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %535, ptr noundef @.str.44)
          to label %537 unwind label %485

537:                                              ; preds = %534
  %538 = icmp ne ptr %536, null
  br i1 %538, label %539, label %545

539:                                              ; preds = %537
  %540 = invoke noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
          to label %541 unwind label %485

541:                                              ; preds = %539
  %542 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %543 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %542, ptr noundef %540)
          to label %544 unwind label %485

544:                                              ; preds = %541
  br label %584

545:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %546 = load ptr, ptr %7, align 8, !tbaa !5
  %547 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %546, ptr noundef @.str.45)
          to label %548 unwind label %560

548:                                              ; preds = %545
  store ptr %547, ptr %48, align 8, !tbaa !5
  %549 = load ptr, ptr %48, align 8, !tbaa !5
  %550 = icmp ne ptr %549, null
  br i1 %550, label %551, label %582

551:                                              ; preds = %548
  %552 = load ptr, ptr %48, align 8, !tbaa !5
  %553 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169) %552)
          to label %554 unwind label %560

554:                                              ; preds = %551
  %555 = invoke noundef i64 @_ZNK9TokenTree4sizeEv(ptr noundef nonnull align 8 dereferenceable(136) %553)
          to label %556 unwind label %560

556:                                              ; preds = %554
  %557 = icmp eq i64 %555, 2
  br i1 %557, label %558, label %559

558:                                              ; preds = %556
  br label %565

559:                                              ; preds = %556
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str.5, i32 noundef 1758, ptr noundef @__PRETTY_FUNCTION__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE) #11
  unreachable

560:                                              ; preds = %577, %574, %572, %570, %568, %565, %554, %551, %545
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %10, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %803

564:                                              ; No predecessors!
  br label %565

565:                                              ; preds = %564, %558
  %566 = load ptr, ptr %48, align 8, !tbaa !5
  %567 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169) %566)
          to label %568 unwind label %560

568:                                              ; preds = %565
  %569 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNK9TokenTreeixEj(ptr noundef nonnull align 8 dereferenceable(136) %567, i32 noundef 1)
          to label %570 unwind label %560

570:                                              ; preds = %568
  %571 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9TokenTree3tokEv(ptr noundef nonnull align 8 dereferenceable(136) %569)
          to label %572 unwind label %560

572:                                              ; preds = %570
  %573 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %571)
          to label %574 unwind label %560

574:                                              ; preds = %572
  %575 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %573, ptr noundef @.str.47)
          to label %576 unwind label %560

576:                                              ; preds = %574
  br i1 %575, label %577, label %581

577:                                              ; preds = %576
  %578 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %579 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %578, ptr noundef @.str.48)
          to label %580 unwind label %560

580:                                              ; preds = %577
  br label %581

581:                                              ; preds = %580, %576
  br label %583

582:                                              ; preds = %548
  br label %583

583:                                              ; preds = %582, %581
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %584

584:                                              ; preds = %583, %544
  br label %585

585:                                              ; preds = %584, %532
  br label %586

586:                                              ; preds = %585, %521
  br label %587

587:                                              ; preds = %586, %508
  %588 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %589 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %588, ptr noundef @.str.6)
          to label %590 unwind label %485

590:                                              ; preds = %587
  br i1 %589, label %591, label %603

591:                                              ; preds = %590
  %592 = load ptr, ptr %8, align 8, !tbaa !5
  %593 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %592)
          to label %594 unwind label %485

594:                                              ; preds = %591
  %595 = invoke noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16) %593)
          to label %596 unwind label %485

596:                                              ; preds = %594
  br i1 %595, label %603, label %597

597:                                              ; preds = %596
  %598 = invoke noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
          to label %599 unwind label %485

599:                                              ; preds = %597
  %600 = getelementptr inbounds %"struct.HIR::Linkage", ptr %44, i32 0, i32 1
  %601 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %600, ptr noundef %598)
          to label %602 unwind label %485

602:                                              ; preds = %599
  br label %603

603:                                              ; preds = %602, %596, %590
  store i1 false, ptr %49, align 1
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %0)
          to label %604 unwind label %485

604:                                              ; preds = %603
  %605 = load i8, ptr %35, align 1, !tbaa !18, !range !151, !noundef !152
  %606 = trunc i8 %605 to i1
  %607 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 0
  %608 = zext i1 %606 to i8
  store i8 %608, ptr %607, align 8, !tbaa !153
  %609 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 1
  %610 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3HIR7LinkageaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %609, ptr noundef nonnull align 8 dereferenceable(72) %44) #0
  %611 = load i32, ptr %23, align 4, !tbaa !10
  %612 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 2
  store i32 %611, ptr %612, align 8, !tbaa !184
  %613 = load i32, ptr %23, align 4, !tbaa !10
  %614 = icmp eq i32 %613, 6
  br i1 %614, label %615, label %686

615:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #0
  call void @llvm.lifetime.start.p0(i64 96, ptr %51) #0
  call void @llvm.memset.p0.i64(ptr align 8 %51, i8 0, i64 96, i1 false)
  invoke void @_ZN16MonomorphiserNopC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %51)
          to label %616 unwind label %648

616:                                              ; preds = %615
  %617 = load ptr, ptr %8, align 8, !tbaa !5
  %618 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %617)
          to label %619 unwind label %652

619:                                              ; preds = %616
  %620 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %618, i64 noundef 0) #0
  %621 = getelementptr inbounds %"struct.AST::Function::Arg", ptr %620, i32 0, i32 2
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %621)
          to label %623 unwind label %652

623:                                              ; preds = %619
  %624 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %625 = getelementptr inbounds %"struct.std::pair.559", ptr %624, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %50, ptr noundef nonnull align 8 dereferenceable(96) %51, ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef nonnull align 8 dereferenceable(8) %625, i1 noundef zeroext false)
          to label %626 unwind label %652

626:                                              ; preds = %623
  %627 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 3
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %629 unwind label %656

629:                                              ; preds = %626
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %51) #0
  call void @llvm.lifetime.end.p0(i64 96, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  br label %630

630:                                              ; preds = %629
  %631 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #0
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZ17LowerHIR_FunctionNS0_8ItemPathERKN3AST13AttributeListERKNS8_8FunctionES3_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 1 dereferenceable(1) %53) #0
  %632 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %631, ptr noundef %52)
          to label %633 unwind label %662

633:                                              ; preds = %630
  %634 = xor i1 %632, true
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  br i1 %634, label %635, label %683

635:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  %637 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %636)
          to label %638 unwind label %666

638:                                              ; preds = %635
  %639 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %637, i64 noundef 0) #0
  %640 = getelementptr inbounds %"struct.AST::Function::Arg", ptr %639, i32 0, i32 2
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %640)
          to label %642 unwind label %666

642:                                              ; preds = %638
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %641)
          to label %643 unwind label %666

643:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #0
  %644 = getelementptr inbounds %class.anon.753, ptr %56, i32 0, i32 0
  store ptr %0, ptr %644, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef %55)
          to label %645 unwind label %670

645:                                              ; preds = %643
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  %646 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %646, ptr noundef @.str.9)
          to label %647 unwind label %675

647:                                              ; preds = %645
  invoke void @__cxa_throw(ptr %646, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %813 unwind label %679

648:                                              ; preds = %615
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %10, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %11, align 4
  br label %661

652:                                              ; preds = %623, %619, %616
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %10, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %11, align 4
  br label %660

656:                                              ; preds = %626
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %10, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %11, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #0
  br label %660

660:                                              ; preds = %656, %652
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %51) #0
  br label %661

661:                                              ; preds = %660, %648
  call void @llvm.lifetime.end.p0(i64 96, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  br label %802

662:                                              ; preds = %630
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %10, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  br label %802

666:                                              ; preds = %642, %638, %635
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %10, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %11, align 4
  br label %674

670:                                              ; preds = %643
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %10, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  br label %674

674:                                              ; preds = %670, %666
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %802

675:                                              ; preds = %645
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %10, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %11, align 4
  call void @__cxa_free_exception(ptr %646) #0
  br label %802

679:                                              ; preds = %733, %730, %707, %696, %693, %647
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %10, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %11, align 4
  br label %802

683:                                              ; preds = %633
  br label %684

684:                                              ; preds = %683
  br label %685

685:                                              ; preds = %684
  br label %686

686:                                              ; preds = %685, %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #0
  %687 = load ptr, ptr %8, align 8, !tbaa !5
  %688 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST8Function3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(368) %687)
          to label %689 unwind label %747

689:                                              ; preds = %686
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %57, ptr noundef nonnull align 8 dereferenceable(32) %688)
          to label %690 unwind label %747

690:                                              ; preds = %689
  %691 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 4
  %692 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %693 unwind label %751

693:                                              ; preds = %690
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = invoke noundef zeroext i1 @_ZNK3AST8Function9is_unsafeEv(ptr noundef nonnull align 8 dereferenceable(368) %694)
          to label %696 unwind label %679

696:                                              ; preds = %693
  %697 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 5
  %698 = zext i1 %695 to i8
  store i8 %698, ptr %697, align 8, !tbaa !185
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = invoke noundef zeroext i1 @_ZNK3AST8Function8is_constEv(ptr noundef nonnull align 8 dereferenceable(368) %699)
          to label %701 unwind label %679

701:                                              ; preds = %696
  %702 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 6
  %703 = zext i1 %700 to i8
  store i8 %703, ptr %702, align 1, !tbaa !186
  call void @llvm.lifetime.start.p0(i64 96, ptr %58) #0
  %704 = load ptr, ptr %8, align 8, !tbaa !5
  %705 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST8Function6paramsEv(ptr noundef nonnull align 8 dereferenceable(368) %704)
          to label %706 unwind label %756

706:                                              ; preds = %701
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %58, ptr noundef nonnull align 8 dereferenceable(48) %705, ptr noundef null)
          to label %707 unwind label %756

707:                                              ; preds = %706
  %708 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 7
  %709 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3HIR13GenericParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %708, ptr noundef nonnull align 8 dereferenceable(96) %58) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %58) #0
  call void @llvm.lifetime.end.p0(i64 96, ptr %58) #0
  %710 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 8
  %711 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(24) %710, ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = invoke noundef zeroext i1 @_ZNK3AST8Function11is_variadicEv(ptr noundef nonnull align 8 dereferenceable(368) %712)
          to label %714 unwind label %679

714:                                              ; preds = %707
  %715 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 9
  %716 = zext i1 %713 to i8
  store i8 %716, ptr %715, align 8, !tbaa !187
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #0
  %717 = load ptr, ptr %8, align 8, !tbaa !5
  %718 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST8Function7rettypeEv(ptr noundef nonnull align 8 dereferenceable(368) %717)
          to label %719 unwind label %760

719:                                              ; preds = %714
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %59, ptr noundef nonnull align 8 dereferenceable(120) %718)
          to label %720 unwind label %760

720:                                              ; preds = %719
  %721 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 10
  %722 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %721, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %723 unwind label %764

723:                                              ; preds = %720
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  call void @llvm.lifetime.start.p0(i64 72, ptr %60) #0
  %724 = load ptr, ptr %8, align 8, !tbaa !5
  %725 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %724)
          to label %726 unwind label %769

726:                                              ; preds = %723
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %60, ptr noundef nonnull align 8 dereferenceable(16) %725)
          to label %727 unwind label %769

727:                                              ; preds = %726
  %728 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 11
  %729 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN3HIR7ExprPtraSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %728, ptr noundef nonnull align 8 dereferenceable(72) %60)
          to label %730 unwind label %773

730:                                              ; preds = %727
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %60) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %60) #0
  %731 = getelementptr inbounds %"class.HIR::Function", ptr %0, i32 0, i32 12
  %732 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR8Function8MarkingsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %731, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %733 unwind label %679

733:                                              ; preds = %730
  %734 = load ptr, ptr %8, align 8, !tbaa !5
  %735 = invoke noundef zeroext i1 @_ZNK3AST8Function8is_asyncEv(ptr noundef nonnull align 8 dereferenceable(368) %734)
          to label %736 unwind label %679

736:                                              ; preds = %733
  br i1 %735, label %737, label %798

737:                                              ; preds = %736
  br label %738

738:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #0
  store ptr @__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #0
  %739 = load ptr, ptr %8, align 8, !tbaa !5
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8Function2spEv(ptr noundef nonnull align 8 dereferenceable(368) %739)
          to label %741 unwind label %778

741:                                              ; preds = %738
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %740)
          to label %742 unwind label %778

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #0
  %743 = getelementptr inbounds %class.anon.754, ptr %64, i32 0, i32 0
  store ptr %61, ptr %743, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef %63)
          to label %744 unwind label %782

744:                                              ; preds = %742
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  %745 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %745, ptr noundef @.str.8)
          to label %746 unwind label %787

746:                                              ; preds = %744
  invoke void @__cxa_throw(ptr %745, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %813 unwind label %791

747:                                              ; preds = %689, %686
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %10, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %11, align 4
  br label %755

751:                                              ; preds = %690
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %10, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %11, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  br label %755

755:                                              ; preds = %751, %747
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br label %802

756:                                              ; preds = %706, %701
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %10, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %58) #0
  br label %802

760:                                              ; preds = %719, %714
  %761 = landingpad { ptr, i32 }
          cleanup
  %762 = extractvalue { ptr, i32 } %761, 0
  store ptr %762, ptr %10, align 8
  %763 = extractvalue { ptr, i32 } %761, 1
  store i32 %763, ptr %11, align 4
  br label %768

764:                                              ; preds = %720
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %10, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %11, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  br label %768

768:                                              ; preds = %764, %760
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  br label %802

769:                                              ; preds = %726, %723
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %10, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %11, align 4
  br label %777

773:                                              ; preds = %727
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %10, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %11, align 4
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %60) #0
  br label %777

777:                                              ; preds = %773, %769
  call void @llvm.lifetime.end.p0(i64 72, ptr %60) #0
  br label %802

778:                                              ; preds = %741, %738
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %10, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %11, align 4
  br label %786

782:                                              ; preds = %742
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %10, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #0
  br label %786

786:                                              ; preds = %782, %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  br label %795

787:                                              ; preds = %744
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %10, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %11, align 4
  call void @__cxa_free_exception(ptr %745) #0
  br label %795

791:                                              ; preds = %746
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %10, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %11, align 4
  br label %795

795:                                              ; preds = %791, %787, %786
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #0
  br label %802

796:                                              ; No predecessors!
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797, %736
  store i1 true, ptr %49, align 1
  %799 = load i1, ptr %49, align 1
  br i1 %799, label %801, label %800

800:                                              ; preds = %798
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %0) #0
  br label %801

801:                                              ; preds = %800, %798
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %44) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %44) #0
  call void @_ZN3HIR8Function8MarkingsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #0
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #0
  ret void

802:                                              ; preds = %795, %777, %768, %756, %755, %679, %675, %674, %662, %661
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %0) #0
  br label %803

803:                                              ; preds = %802, %560, %485, %481, %480
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %44) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %44) #0
  br label %804

804:                                              ; preds = %803, %455, %447
  call void @_ZN3HIR8Function8MarkingsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #0
  br label %805

805:                                              ; preds = %804, %363, %174
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #0
  br label %806

806:                                              ; preds = %805, %134
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #0
  br label %807

807:                                              ; preds = %806, %95
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #0
  br label %808

808:                                              ; preds = %807, %91
  %809 = load ptr, ptr %10, align 8
  %810 = load i32, ptr %11, align 4
  %811 = insertvalue { ptr, i32 } poison, ptr %809, 0
  %812 = insertvalue { ptr, i32 } %811, i32 %810, 1
  resume { ptr, i32 } %812

813:                                              ; preds = %746, %647, %471, %417, %345
  unreachable
}

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

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

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

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

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(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(688) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.559") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEEN4IvcrC2ERK4SpanSA_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef) #6

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(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 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368)) #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK9TokenTree4sizeEv(ptr noundef nonnull align 8 dereferenceable(136)) #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNK9TokenTreeixEj(ptr noundef nonnull align 8 dereferenceable(136), i32 noundef) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9TokenTree3tokEv(ptr noundef nonnull align 8 dereferenceable(136)) #7 align 2

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

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

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

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

declare noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind }
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 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 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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 #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 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!12 = !{!13, !16, i64 4}
!13 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !14, i64 0, !16, i64 4, !17, i64 8}
!14 = !{!"_ZTSN3HIR11LifetimeRefE", !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!17 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!21, !48, i64 264}
!21 = !{!"_ZTSN3AST8FunctionE", !22, i64 0, !23, i64 8, !32, i64 56, !36, i64 72, !39, i64 192, !19, i64 216, !43, i64 224, !46, i64 256, !47, i64 264}
!22 = !{!"_ZTS4Span", !6, i64 0}
!23 = !{!"_ZTSN3AST13GenericParamsE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorIN3AST12GenericParamESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3AST12GenericParamESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericParamESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIN3AST12GenericBoundESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSN3AST4ExprE", !33, i64 0}
!33 = !{!"_ZTSSt10shared_ptrIN3AST8ExprNodeEE", !34, i64 0}
!34 = !{!"_ZTSSt12__shared_ptrIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !35, i64 8}
!35 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!36 = !{!"_ZTS7TypeRef", !22, i64 0, !37, i64 8}
!37 = !{!"_ZTS8TypeData", !38, i64 0, !7, i64 8}
!38 = !{!"_ZTSN8TypeData3TagE", !7, i64 0}
!39 = !{!"_ZTSSt6vectorIN3AST8Function3ArgESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !44, i64 0, !45, i64 8, !7, i64 16}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!45 = !{!"long", !7, i64 0}
!46 = !{!"_ZTSN3AST8Function5FlagsE", !19, i64 0, !19, i64 1, !19, i64 2}
!47 = !{!"_ZTSN3AST8Function8MarkingsE", !48, i64 0, !19, i64 4, !49, i64 8, !43, i64 32, !43, i64 64, !53, i64 96}
!48 = !{!"_ZTSN3AST8Function8Markings6InlineE", !7, i64 0}
!49 = !{!"_ZTSSt6vectorIjSaIjEE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSN3AST7LinkageE", !7, i64 0}
!54 = !{!55, !56, i64 28}
!55 = !{!"_ZTSN3HIR8Function8MarkingsE", !49, i64 0, !19, i64 24, !56, i64 28}
!56 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!57 = !{!15, !15, i64 0}
!58 = !{!55, !19, i64 24}
!59 = !{!21, !53, i64 360}
!60 = !{!61, !62, i64 0}
!61 = !{!"_ZTSN3HIR7LinkageE", !62, i64 0, !43, i64 8, !43, i64 40}
!62 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!63 = !{!64, !19, i64 704}
!64 = !{!"_ZTSN3AST5CrateE", !65, i64 0, !70, i64 24, !78, i64 72, !81, i64 552, !115, i64 576, !120, i64 624, !80, i64 672, !80, i64 680, !80, i64 688, !80, i64 696, !19, i64 704, !123, i64 712, !127, i64 736, !131, i64 760, !135, i64 784, !136, i64 788, !137, i64 792, !43, i64 800, !43, i64 832, !80, i64 864, !138, i64 872}
!65 = !{!"_ZTSN3AST13AttributeListE", !66, i64 0}
!66 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!70 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST12AbsolutePathESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !71, i64 0}
!71 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !72, i64 0}
!72 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !73, i64 0, !75, i64 8}
!73 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !74, i64 0}
!74 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!75 = !{!"_ZTSSt15_Rb_tree_header", !76, i64 0, !45, i64 32}
!76 = !{!"_ZTSSt18_Rb_tree_node_base", !77, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!77 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!78 = !{!"_ZTSN3AST6ModuleE", !79, i64 0, !85, i64 32, !89, i64 56, !93, i64 80, !97, i64 104, !19, i64 176, !7, i64 177, !98, i64 184, !98, i64 240, !98, i64 296, !98, i64 352, !103, i64 408, !107, i64 432, !111, i64 456}
!79 = !{!"_ZTSN3AST12AbsolutePathE", !80, i64 0, !81, i64 8}
!80 = !{!"_ZTS8RcString", !6, i64 0}
!81 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !90, i64 0}
!90 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!93 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !94, i64 0}
!94 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!97 = !{!"_ZTSN3AST6Module8FileInfoE", !19, i64 0, !19, i64 1, !43, i64 8, !43, i64 40}
!98 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !99, i64 0}
!99 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !45, i64 8, !100, i64 16, !45, i64 24, !101, i64 32, !6, i64 48}
!100 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!101 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !102, i64 0, !45, i64 8}
!102 = !{!"float", !7, i64 0}
!103 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!107 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !108, i64 0}
!108 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!111 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !112, i64 0}
!112 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!115 = !{!"_ZTSSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE", !116, i64 0}
!116 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE", !117, i64 0}
!117 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !118, i64 0, !75, i64 8}
!118 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !119, i64 0}
!119 = !{!"_ZTSSt4lessI8RcStringE"}
!120 = !{!"_ZTSSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE", !121, i64 0}
!121 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !122, i64 0}
!122 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !118, i64 0, !75, i64 8}
!123 = !{!"_ZTSSt6vectorIN3AST8TestDescESaIS1_EE", !124, i64 0}
!124 = !{!"_ZTSSt12_Vector_baseIN3AST8TestDescESaIS1_EE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE12_Vector_implE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!127 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!131 = !{!"_ZTSSt6vectorIN3AST12ProcMacroDefESaIS1_EE", !132, i64 0}
!132 = !{!"_ZTSSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE", !133, i64 0}
!133 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE12_Vector_implE", !134, i64 0}
!134 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!135 = !{!"_ZTSN3AST7EditionE", !7, i64 0}
!136 = !{!"_ZTSN3AST5Crate4TypeE", !7, i64 0}
!137 = !{!"_ZTSN3AST5Crate7LoadStdE", !7, i64 0}
!138 = !{!"_ZTSN3AST4PathE", !139, i64 8, !141, i64 56}
!139 = !{!"_ZTSN3AST4Path5ClassE", !140, i64 0, !7, i64 8}
!140 = !{!"_ZTSN3AST4Path5Class3TagE", !7, i64 0}
!141 = !{!"_ZTSN3AST4Path8BindingsE", !142, i64 0, !145, i64 64, !148, i64 128}
!142 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_ValueEEE", !79, i64 0, !143, i64 32}
!143 = !{!"_ZTSN3AST17PathBinding_ValueE", !144, i64 0, !7, i64 8}
!144 = !{!"_ZTSN3AST17PathBinding_Value3TagE", !7, i64 0}
!145 = !{!"_ZTSN3AST11PathBindingINS_16PathBinding_TypeEEE", !79, i64 0, !146, i64 32}
!146 = !{!"_ZTSN3AST16PathBinding_TypeE", !147, i64 0, !7, i64 8}
!147 = !{!"_ZTSN3AST16PathBinding_Type3TagE", !7, i64 0}
!148 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_MacroEEE", !79, i64 0, !149, i64 32}
!149 = !{!"_ZTSN3AST17PathBinding_MacroE", !150, i64 0, !7, i64 8}
!150 = !{!"_ZTSN3AST17PathBinding_Macro3TagE", !7, i64 0}
!151 = !{i8 0, i8 2}
!152 = !{}
!153 = !{!154, !19, i64 0}
!154 = !{!"_ZTSN3HIR8FunctionE", !19, i64 0, !61, i64 8, !11, i64 80, !17, i64 88, !80, i64 96, !19, i64 104, !19, i64 105, !155, i64 112, !172, i64 208, !19, i64 232, !17, i64 240, !176, i64 248, !55, i64 320}
!155 = !{!"_ZTSN3HIR13GenericParamsE", !156, i64 0, !160, i64 24, !164, i64 48, !168, i64 72}
!156 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !157, i64 0}
!157 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!160 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !161, i64 0}
!161 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !162, i64 0}
!162 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !163, i64 0}
!163 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!164 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !165, i64 0}
!165 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !166, i64 0}
!166 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !167, i64 0}
!167 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!168 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !169, i64 0}
!169 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !170, i64 0}
!170 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !171, i64 0}
!171 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!172 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !173, i64 0}
!173 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !174, i64 0}
!174 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !175, i64 0}
!175 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!176 = !{!"_ZTSN3HIR7ExprPtrE", !177, i64 0, !178, i64 8, !178, i64 32, !182, i64 56, !183, i64 64}
!177 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!178 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !179, i64 0}
!179 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !180, i64 0}
!180 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !181, i64 0}
!181 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!182 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!183 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!184 = !{!154, !11, i64 80}
!185 = !{!154, !19, i64 104}
!186 = !{!154, !19, i64 105}
!187 = !{!154, !19, i64 232}


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

%"class.HIR::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%"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.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.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.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.160", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.160" = type { %"struct.std::_Vector_base.161" }
%"struct.std::_Vector_base.161" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"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::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"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::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.529", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.529" = type { %"struct.std::_Vector_base.530" }
%"struct.std::_Vector_base.530" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.510", i8, i32 }
%"class.std::vector.510" = type { %"struct.std::_Vector_base.511" }
%"struct.std::_Vector_base.511" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.557 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.558" = type { ptr }
%"struct.std::pair.559" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%struct.Ivcr = type { ptr, ptr }
%class.anon.717 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.718" = type { ptr }
%class.anon.719 = type { ptr, ptr, ptr }
%class.anon.720 = type { i8 }
%class.MonomorphiserNop = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.260" }
%"class.std::vector.260" = type { %"struct.std::_Vector_base.261" }
%"struct.std::_Vector_base.261" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.748" = type { %"class.std::_Function_base", ptr }
%class.anon.751 = type { i8 }
%class.anon.753 = type { ptr }
%class.anon.754 = type { ptr }

@__dso_handle = external hidden global i8
@g_crate_ptr = external dso_local local_unnamed_addr global ptr, align 8
@g_ast_crate_ptr = external dso_local local_unnamed_addr global ptr, align 8
@_ZN12_GLOBAL__N_17ty_SelfE = external hidden global %"class.HIR::TypeRef", 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.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
@_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp = external hidden global %struct.Span, align 8
@_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp = external hidden global i64, align 8
@__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE = external hidden unnamed_addr constant [130 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

; 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: 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 #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: mustprogress uwtable
declare dso_local void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5

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

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

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

; 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: 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 #5 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 @_Z16LowerHIR_PatternRKN3AST7PatternE(ptr dead_on_unwind noalias writable sret(%"struct.HIR::Pattern") align 8, ptr noundef nonnull align 8 dereferenceable(544)) local_unnamed_addr #5

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7 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: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #7 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 #7 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 #5 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 #7 align 2

declare noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Function") align 8 %0, ptr noundef byval(%"class.HIR::ItemPath") align 8 %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(368) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.557, align 8
  %9 = alloca %"class.std::vector.529", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.558", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.558", align 8
  %12 = alloca %"struct.std::pair.559", align 8
  %13 = alloca %"struct.HIR::Pattern", align 8
  %14 = alloca %"class.HIR::TypeRef", align 8
  %15 = alloca %struct.Ivcr, align 8
  %16 = alloca %"struct.HIR::SimplePath", align 8
  %17 = alloca %"class.HIR::TypeRef", align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.717, align 8
  %21 = alloca %"struct.HIR::Function::Markings", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.718", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.718", align 8
  %24 = alloca i32, align 4
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.719, align 8
  %28 = alloca %"struct.HIR::Linkage", align 8
  %29 = alloca %struct.Span, align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.720, align 1
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %class.MonomorphiserNop, align 8
  %34 = alloca %"class.std::function.748", align 8
  %35 = alloca %class.anon.751, align 1
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.753, align 8
  %39 = alloca %class.RcString, align 8
  %40 = alloca %"class.HIR::GenericParams", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::ExprPtr", align 8
  %43 = alloca ptr, align 8
  %44 = alloca %struct.Span, align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon.754, align 8
  %47 = load atomic i8, ptr @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp acquire, align 8
  %48 = icmp eq i8 %47, 0
  br i1 %48, label %49, label %53, !prof !5

49:                                               ; preds = %5
  %50 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp) #10
  %.not = icmp eq i32 %50, 0
  br i1 %.not, label %53, label %51

51:                                               ; preds = %49
  tail call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp)
  %52 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN4SpanD1Ev, ptr nonnull @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp, ptr nonnull @__dso_handle) #10
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp) #10
  br label %53

53:                                               ; preds = %51, %49, %5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #10
  %54 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %55 = select i1 %54, ptr @__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  store ptr %1, ptr %8, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %55, ptr noundef nonnull %7)
          to label %56 unwind label %62

56:                                               ; preds = %53
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %57 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %58 = call ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  store ptr %58, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %59 = call ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  store ptr %59, ptr %11, align 8
  %60 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %60, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %70, %56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  %61 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %.not106 = icmp eq i64 %61, 0
  br i1 %.not106, label %185, label %84

62:                                               ; preds = %53
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %423

.lr.ph:                                           ; preds = %56, %70
  %64 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %13) #10
  %65 = getelementptr inbounds i8, ptr %64, i64 24
  invoke void @_Z16LowerHIR_PatternRKN3AST7PatternE(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::Pattern") align 8 %13, ptr noundef nonnull align 8 dereferenceable(544) %65)
          to label %66 unwind label %73

66:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %67 = getelementptr inbounds i8, ptr %64, i64 568
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %14, ptr noundef nonnull align 8 dereferenceable(120) %67)
          to label %68 unwind label %75

68:                                               ; preds = %66
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.559") align 8 %12, ptr noundef nonnull align 8 dereferenceable(212) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %69 unwind label %77

69:                                               ; preds = %68
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(224) %12)
          to label %70 unwind label %79

70:                                               ; preds = %69
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %12) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %13) #10
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %12) #10
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  %72 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %72, label %.lr.ph, label %._crit_edge

73:                                               ; preds = %.lr.ph
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %83

75:                                               ; preds = %66
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %82

77:                                               ; preds = %68
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %81

79:                                               ; preds = %69
  %80 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %12) #10
  br label %81

81:                                               ; preds = %79, %77
  %.pn147 = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  br label %82

82:                                               ; preds = %81, %75
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %81 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %13) #10
  br label %83

83:                                               ; preds = %82, %73
  %.pn147.pn.pn = phi { ptr, i32 } [ %.pn147.pn, %82 ], [ %74, %73 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br label %422

84:                                               ; preds = %._crit_edge
  %85 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %86 = call noundef i64 @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #10
  %.not107 = icmp eq i64 %86, 0
  br i1 %.not107, label %185, label %87

87:                                               ; preds = %84
  %88 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %89 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN3HIR14PatternBindingESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0) #10
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  %91 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull @.str.39)
          to label %92 unwind label %105

92:                                               ; preds = %87
  br i1 %91, label %93, label %185

93:                                               ; preds = %92
  %94 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %95 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef 0) #10
  %96 = getelementptr inbounds i8, ptr %95, i64 24
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST7Pattern4spanEv(ptr noundef nonnull align 8 dereferenceable(544) %96)
  %98 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %99 = getelementptr inbounds i8, ptr %98, i64 216
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #10
  call void @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEEN4IvcrC2ERK4SpanSA_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %100 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %101 unwind label %107

101:                                              ; preds = %93
  br i1 %100, label %.thread158, label %102

102:                                              ; preds = %101
  %103 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %104 unwind label %107

104:                                              ; preds = %102
  br i1 %103, label %.thread158, label %109

105:                                              ; preds = %87
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %422

107:                                              ; preds = %176, %102, %93
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %184

109:                                              ; preds = %104
  %110 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %99)
  %111 = call noundef ptr @_ZN3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %110)
  %.not108 = icmp eq ptr %111, null
  br i1 %.not108, label %128, label %112

112:                                              ; preds = %109
  %113 = getelementptr inbounds i8, ptr %111, i64 8
  %114 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %115 unwind label %123

115:                                              ; preds = %112
  br i1 %114, label %119, label %116

116:                                              ; preds = %115
  %117 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %118 unwind label %123

118:                                              ; preds = %116
  br i1 %117, label %119, label %125

119:                                              ; preds = %118, %115
  %120 = getelementptr inbounds i8, ptr %111, i64 4
  %121 = load i32, ptr %120, align 4, !tbaa !10
  %122 = icmp ult i32 %121, 3
  br i1 %122, label %switch.lookup, label %.thread162

123:                                              ; preds = %125, %116, %112
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %184

125:                                              ; preds = %118
  %126 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %127 unwind label %123

127:                                              ; preds = %125
  br i1 %126, label %.thread158, label %.thread162

128:                                              ; preds = %109
  %129 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %99)
  %130 = call noundef ptr @_ZN3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %129)
  %.not109 = icmp eq ptr %130, null
  br i1 %.not109, label %169, label %131

131:                                              ; preds = %128
  %132 = call noundef ptr @_ZN3HIR4Path4Data11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %130)
  %.not110 = icmp eq ptr %132, null
  br i1 %.not110, label %.thread162, label %133

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %134 = load ptr, ptr @g_crate_ptr, align 8, !tbaa !6
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944) %134, ptr noundef nonnull @.str.40)
          to label %136 unwind label %155

136:                                              ; preds = %133
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %135)
          to label %137 unwind label %155

137:                                              ; preds = %136
  %138 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %139 unwind label %157

139:                                              ; preds = %137
  br i1 %138, label %140, label %164

140:                                              ; preds = %139
  %141 = getelementptr inbounds i8, ptr %132, i64 16
  %142 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %141)
          to label %143 unwind label %157

143:                                              ; preds = %140
  %.not111 = icmp eq i64 %142, 0
  br i1 %.not111, label %164, label %144

144:                                              ; preds = %143
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %141, i64 noundef 0)
  %146 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %147 unwind label %157

147:                                              ; preds = %144
  br i1 %146, label %152, label %148

148:                                              ; preds = %147
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %141, i64 noundef 0)
  %150 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %151 unwind label %157

151:                                              ; preds = %148
  br i1 %150, label %152, label %164

152:                                              ; preds = %151, %147
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %161 unwind label %159

153:                                              ; preds = %169
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %184

155:                                              ; preds = %136, %133
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %168

157:                                              ; preds = %164, %148, %144, %140, %137
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %167

159:                                              ; preds = %152
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %167

161:                                              ; preds = %152
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %141, i64 noundef 0)
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %.thread166

164:                                              ; preds = %151, %143, %139
  %165 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %166 unwind label %157

166:                                              ; preds = %164
  br i1 %165, label %.thread166, label %172

167:                                              ; preds = %159, %157
  %.pn = phi { ptr, i32 } [ %158, %157 ], [ %160, %159 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %168

168:                                              ; preds = %167, %155
  %.pn.pn = phi { ptr, i32 } [ %.pn, %167 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %184

169:                                              ; preds = %128
  %170 = invoke noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %171 unwind label %153

171:                                              ; preds = %169
  br i1 %170, label %.thread158, label %.thread162

.thread166:                                       ; preds = %161, %166
  %.196.ph = phi i32 [ 5, %161 ], [ 6, %166 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %.thread158

172:                                              ; preds = %166
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %.thread162

.thread162:                                       ; preds = %119, %171, %131, %127, %172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %173 unwind label %177

173:                                              ; preds = %.thread162
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  store ptr %99, ptr %20, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef 0, ptr noundef nonnull %19)
          to label %174 unwind label %179

174:                                              ; preds = %173
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %175 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull @.str.12)
          to label %176 unwind label %182

176:                                              ; preds = %174
  invoke void @__cxa_throw(ptr nonnull %175, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %424 unwind label %107

177:                                              ; preds = %.thread162
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %181

179:                                              ; preds = %173
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  br label %181

181:                                              ; preds = %179, %177
  %.pn142 = phi { ptr, i32 } [ %180, %179 ], [ %178, %177 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %184

182:                                              ; preds = %174
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %175) #10
  br label %184

switch.lookup:                                    ; preds = %119
  %switch.offset = sub nuw nsw i32 4, %121
  br label %.thread158

.thread158:                                       ; preds = %switch.lookup, %171, %127, %101, %104, %.thread166
  %.5100160 = phi i32 [ %.196.ph, %.thread166 ], [ 1, %101 ], [ 1, %104 ], [ 6, %127 ], [ 6, %171 ], [ %switch.offset, %switch.lookup ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #10
  br label %185

184:                                              ; preds = %123, %168, %153, %182, %181, %107
  %.pn144 = phi { ptr, i32 } [ %108, %107 ], [ %183, %182 ], [ %.pn142, %181 ], [ %124, %123 ], [ %.pn.pn, %168 ], [ %154, %153 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #10
  br label %422

185:                                              ; preds = %.thread158, %92, %84, %._crit_edge
  %.6101 = phi i32 [ %.5100160, %.thread158 ], [ 0, %92 ], [ 0, %84 ], [ 0, %._crit_edge ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #10
  call void @_ZN3HIR8Function8MarkingsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  %186 = getelementptr inbounds i8, ptr %3, i64 264
  %187 = load i32, ptr %186, align 8, !tbaa !16
  %188 = icmp ult i32 %187, 4
  br i1 %188, label %switch.lookup172, label %190

switch.lookup172:                                 ; preds = %185
  %switch.shiftamt = shl nuw nsw i32 %187, 3
  %switch.downshift = lshr i32 16842752, %switch.shiftamt
  %switch.masked = trunc i32 %switch.downshift to i8
  %189 = getelementptr inbounds i8, ptr %21, i64 28
  store i32 %187, ptr %189, align 4, !tbaa !51
  br label %190

190:                                              ; preds = %185, %switch.lookup172
  %.094 = phi i8 [ 0, %185 ], [ %switch.masked, %switch.lookup172 ]
  %191 = getelementptr inbounds i8, ptr %3, i64 272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  %192 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #10
  store ptr %192, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %193 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #10
  store ptr %193, ptr %23, align 8
  %194 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br i1 %194, label %.lr.ph169, label %._crit_edge170

._crit_edge170:                                   ; preds = %225, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  %195 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull @.str.42)
          to label %229 unwind label %232

.lr.ph169:                                        ; preds = %190, %225
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #10
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  %197 = load i32, ptr %196, align 4, !tbaa !54
  store i32 %197, ptr %24, align 4, !tbaa !54
  %198 = zext i32 %197 to i64
  %199 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %200 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #10
  %201 = add i64 %200, %199
  %202 = icmp ugt i64 %201, %198
  br i1 %202, label %224, label %203

203:                                              ; preds = %.lr.ph169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %204 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull @.str.41)
          to label %205 unwind label %214

205:                                              ; preds = %203
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST9Attribute4spanEv(ptr noundef nonnull align 8 dereferenceable(169) %204)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %206)
          to label %207 unwind label %214

207:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #10
  store ptr %24, ptr %27, align 8, !tbaa !6
  %208 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %9, ptr %208, align 8, !tbaa !6
  %209 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %3, ptr %209, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %210 unwind label %216

210:                                              ; preds = %207
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull %26)
          to label %211 unwind label %218

211:                                              ; preds = %210
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  %212 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %212, ptr noundef nonnull @.str.9)
          to label %213 unwind label %222

213:                                              ; preds = %211
  invoke void @__cxa_throw(ptr nonnull %212, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %424 unwind label %.loopexit.split-lp

214:                                              ; preds = %205, %203
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %221

216:                                              ; preds = %207
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %220

218:                                              ; preds = %210
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  br label %220

220:                                              ; preds = %218, %216
  %.pn136 = phi { ptr, i32 } [ %219, %218 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  br label %221

221:                                              ; preds = %220, %214
  %.pn136.pn = phi { ptr, i32 } [ %.pn136, %220 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %228

222:                                              ; preds = %211
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %212) #10
  br label %228

.loopexit:                                        ; preds = %224
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %228

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

224:                                              ; preds = %.lr.ph169
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %225 unwind label %.loopexit

225:                                              ; preds = %224
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #10
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  %227 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br i1 %227, label %.lr.ph169, label %._crit_edge170

228:                                              ; preds = %.loopexit, %.loopexit.split-lp, %222, %221
  %.pn139 = phi { ptr, i32 } [ %223, %222 ], [ %.pn136.pn, %221 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %421

229:                                              ; preds = %._crit_edge170
  %.not117 = icmp eq ptr %195, null
  br i1 %.not117, label %234, label %230

230:                                              ; preds = %229
  %231 = getelementptr inbounds i8, ptr %21, i64 24
  store i8 1, ptr %231, align 8, !tbaa !55
  br label %234

232:                                              ; preds = %._crit_edge170
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %421

234:                                              ; preds = %230, %229
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %28) #10
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %28) #10
  %235 = getelementptr inbounds i8, ptr %3, i64 360
  %236 = load i32, ptr %235, align 8, !tbaa !56
  switch i32 %236, label %252 [
    i32 2, label %238
    i32 1, label %237
  ]

237:                                              ; preds = %234
  store i32 1, ptr %28, align 8, !tbaa !57
  br label %252

238:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEE2sp)
          to label %239 unwind label %243

239:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull %30)
          to label %240 unwind label %245

240:                                              ; preds = %239
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  %241 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %241, ptr noundef nonnull @.str.9)
          to label %242 unwind label %248

242:                                              ; preds = %240
  invoke void @__cxa_throw(ptr nonnull %241, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %424 unwind label %250

243:                                              ; preds = %238
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %239
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br label %247

247:                                              ; preds = %245, %243
  %.pn118 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  br label %420

248:                                              ; preds = %240
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %241) #10
  br label %420

250:                                              ; preds = %314, %311, %281, %278, %273, %270, %267, %252, %242
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %420

252:                                              ; preds = %237, %234
  %253 = getelementptr inbounds i8, ptr %3, i64 328
  %254 = getelementptr inbounds i8, ptr %28, i64 40
  %255 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull align 8 dereferenceable(32) %253)
          to label %256 unwind label %250

256:                                              ; preds = %252
  %257 = load ptr, ptr @g_ast_crate_ptr, align 8, !tbaa !6
  %258 = getelementptr inbounds i8, ptr %257, i64 704
  %259 = load i8, ptr %258, align 8, !tbaa !60, !range !148, !noundef !149
  %260 = trunc nuw i8 %259 to i1
  br i1 %260, label %261, label %264

261:                                              ; preds = %256
  %262 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %263 = call noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16) %262)
  br i1 %263, label %305, label %264

264:                                              ; preds = %261, %256
  %265 = getelementptr inbounds i8, ptr %3, i64 296
  %266 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull @.str.6)
  br i1 %266, label %267, label %270

267:                                              ; preds = %264
  %268 = getelementptr inbounds i8, ptr %28, i64 8
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(32) %265)
          to label %305 unwind label %250

270:                                              ; preds = %264
  %271 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull @.str.43)
          to label %272 unwind label %250

272:                                              ; preds = %270
  %.not120 = icmp eq ptr %271, null
  br i1 %.not120, label %278, label %273

273:                                              ; preds = %272
  %274 = call noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
  %275 = getelementptr inbounds i8, ptr %28, i64 8
  %276 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef %274)
          to label %277 unwind label %250

277:                                              ; preds = %273
  store i32 1, ptr %28, align 8, !tbaa !57
  br label %305

278:                                              ; preds = %272
  %279 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull @.str.44)
          to label %280 unwind label %250

280:                                              ; preds = %278
  %.not121 = icmp eq ptr %279, null
  br i1 %.not121, label %285, label %281

281:                                              ; preds = %280
  %282 = call noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
  %283 = getelementptr inbounds i8, ptr %28, i64 8
  %284 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %283, ptr noundef %282)
          to label %305 unwind label %250

285:                                              ; preds = %280
  %286 = invoke noundef ptr @_ZNK3AST13AttributeList3getEPKc(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull @.str.45)
          to label %287 unwind label %293

287:                                              ; preds = %285
  %.not122 = icmp eq ptr %286, null
  br i1 %.not122, label %305, label %288

288:                                              ; preds = %287
  %289 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169) %286)
  %290 = call noundef i64 @_ZNK9TokenTree4sizeEv(ptr noundef nonnull align 8 dereferenceable(136) %289)
  %291 = icmp eq i64 %290, 2
  br i1 %291, label %295, label %292

292:                                              ; preds = %288
  call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.5, i32 noundef 1758, ptr noundef nonnull @__PRETTY_FUNCTION__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE) #12
  unreachable

293:                                              ; preds = %302, %295, %285
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %420

295:                                              ; preds = %288
  %296 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169) %286)
  %297 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZNK9TokenTreeixEj(ptr noundef nonnull align 8 dereferenceable(136) %296, i32 noundef 1)
  %298 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9TokenTree3tokEv(ptr noundef nonnull align 8 dereferenceable(136) %297)
  %299 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %298)
          to label %300 unwind label %293

300:                                              ; preds = %295
  %301 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef nonnull @.str.47)
  br i1 %301, label %302, label %305

302:                                              ; preds = %300
  %303 = getelementptr inbounds i8, ptr %28, i64 8
  %304 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull @.str.48)
          to label %305 unwind label %293

305:                                              ; preds = %302, %300, %287, %267, %281, %277, %261
  %306 = getelementptr inbounds i8, ptr %28, i64 8
  %307 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef nonnull @.str.6)
  br i1 %307, label %308, label %314

308:                                              ; preds = %305
  %309 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %310 = call noundef zeroext i1 @_ZNK3AST4Expr8is_validEv(ptr noundef nonnull align 8 dereferenceable(16) %309)
  br i1 %310, label %314, label %311

311:                                              ; preds = %308
  %312 = call noundef ptr @_ZNK3HIR8ItemPath8get_nameEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
  %313 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef %312)
          to label %314 unwind label %250

314:                                              ; preds = %311, %308, %305
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %0)
          to label %315 unwind label %250

315:                                              ; preds = %314
  store i8 %.094, ptr %0, align 8, !tbaa !150
  %316 = getelementptr inbounds i8, ptr %0, i64 8
  %317 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3HIR7LinkageaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %316, ptr noundef nonnull align 8 dereferenceable(72) %28) #10
  %318 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 %.6101, ptr %318, align 8, !tbaa !182
  %319 = icmp eq i32 %.6101, 6
  br i1 %319, label %320, label %358

320:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %33) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %33, i8 0, i64 96, i1 false)
  invoke void @_ZN16MonomorphiserNopC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33)
          to label %321 unwind label %342

321:                                              ; preds = %320
  %322 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %323 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %322, i64 noundef 0) #10
  %324 = getelementptr inbounds i8, ptr %323, i64 568
  %325 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %324)
  %326 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %327 = getelementptr inbounds i8, ptr %326, i64 216
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %32, ptr noundef nonnull align 8 dereferenceable(96) %33, ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull align 8 dereferenceable(8) %327, i1 noundef zeroext false)
          to label %328 unwind label %344

328:                                              ; preds = %321
  %329 = getelementptr inbounds i8, ptr %0, i64 88
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull align 8 dereferenceable(8) %32)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #10
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZ17LowerHIR_FunctionNS0_8ItemPathERKN3AST13AttributeListERKNS8_8FunctionES3_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  %331 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull %34)
          to label %332 unwind label %347

332:                                              ; preds = %328
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  br i1 %331, label %358, label %333

333:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  %334 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST8Function4argsEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %335 = call noundef nonnull align 8 dereferenceable(688) ptr @_ZNKSt6vectorIN3AST8Function3ArgESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef 0) #10
  %336 = getelementptr inbounds i8, ptr %335, i64 568
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7TypeRef4spanEv(ptr noundef nonnull align 8 dereferenceable(120) %336)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %337)
          to label %338 unwind label %349

338:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #10
  store ptr %0, ptr %38, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %339 unwind label %351

339:                                              ; preds = %338
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  %340 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %340, ptr noundef nonnull @.str.9)
          to label %341 unwind label %354

341:                                              ; preds = %339
  invoke void @__cxa_throw(ptr nonnull %340, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %424 unwind label %356

342:                                              ; preds = %320
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %346

344:                                              ; preds = %321
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #10
  br label %346

346:                                              ; preds = %344, %342
  %.pn123 = phi { ptr, i32 } [ %345, %344 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  br label %419

347:                                              ; preds = %328
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  br label %419

349:                                              ; preds = %333
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %353

351:                                              ; preds = %338
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br label %353

353:                                              ; preds = %351, %349
  %.pn131 = phi { ptr, i32 } [ %352, %351 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  br label %419

354:                                              ; preds = %339
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %340) #10
  br label %419

356:                                              ; preds = %386, %341
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %419

358:                                              ; preds = %332, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #10
  %359 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST8Function3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(368) %3)
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %360 unwind label %397

360:                                              ; preds = %358
  %361 = getelementptr inbounds i8, ptr %0, i64 96
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 8 dereferenceable(8) %39)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #10
  %363 = call noundef zeroext i1 @_ZNK3AST8Function9is_unsafeEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %364 = getelementptr inbounds i8, ptr %0, i64 104
  %365 = zext i1 %363 to i8
  store i8 %365, ptr %364, align 8, !tbaa !183
  %366 = call noundef zeroext i1 @_ZNK3AST8Function8is_constEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %367 = getelementptr inbounds i8, ptr %0, i64 105
  %368 = zext i1 %366 to i8
  store i8 %368, ptr %367, align 1, !tbaa !184
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %40) #10
  %369 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST8Function6paramsEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %40, ptr noundef nonnull align 8 dereferenceable(48) %369, ptr noundef null)
          to label %370 unwind label %399

370:                                              ; preds = %360
  %371 = getelementptr inbounds i8, ptr %0, i64 112
  %372 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3HIR13GenericParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %371, ptr noundef nonnull align 8 dereferenceable(96) %40) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %40) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %40) #10
  %373 = getelementptr inbounds i8, ptr %0, i64 208
  %374 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(24) %373, ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %375 = call noundef zeroext i1 @_ZNK3AST8Function11is_variadicEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  %376 = getelementptr inbounds i8, ptr %0, i64 232
  %377 = zext i1 %375 to i8
  store i8 %377, ptr %376, align 8, !tbaa !185
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #10
  %378 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST8Function7rettypeEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(120) %378)
          to label %379 unwind label %401

379:                                              ; preds = %370
  %380 = getelementptr inbounds i8, ptr %0, i64 240
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull align 8 dereferenceable(8) %41)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %42) #10
  %382 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %382)
          to label %383 unwind label %403

383:                                              ; preds = %379
  %384 = getelementptr inbounds i8, ptr %0, i64 248
  %385 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN3HIR7ExprPtraSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %384, ptr noundef nonnull align 8 dereferenceable(72) %42)
          to label %386 unwind label %405

386:                                              ; preds = %383
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %42) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %42) #10
  %387 = getelementptr inbounds i8, ptr %0, i64 320
  %388 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR8Function8MarkingsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %387, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %389 unwind label %356

389:                                              ; preds = %386
  %390 = call noundef zeroext i1 @_ZNK3AST8Function8is_asyncEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  br i1 %390, label %391, label %418

391:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #10
  store ptr @__func__._Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE, ptr %43, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #10
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8Function2spEv(ptr noundef nonnull align 8 dereferenceable(368) %3)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %392)
          to label %393 unwind label %408

393:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #10
  store ptr %43, ptr %46, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS6_8FunctionERKNS4_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull %45)
          to label %394 unwind label %410

394:                                              ; preds = %393
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #10
  %395 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull @.str.8)
          to label %396 unwind label %413

396:                                              ; preds = %394
  invoke void @__cxa_throw(ptr nonnull %395, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %424 unwind label %415

397:                                              ; preds = %358
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #10
  br label %419

399:                                              ; preds = %360
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %40) #10
  br label %419

401:                                              ; preds = %370
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %419

403:                                              ; preds = %379
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %407

405:                                              ; preds = %383
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %42) #10
  br label %407

407:                                              ; preds = %405, %403
  %.pn125 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %42) #10
  br label %419

408:                                              ; preds = %391
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %412

410:                                              ; preds = %393
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  br label %412

412:                                              ; preds = %410, %408
  %.pn127 = phi { ptr, i32 } [ %411, %410 ], [ %409, %408 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #10
  br label %417

413:                                              ; preds = %394
  %414 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %395) #10
  br label %417

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

417:                                              ; preds = %415, %413, %412
  %.pn129 = phi { ptr, i32 } [ %416, %415 ], [ %414, %413 ], [ %.pn127, %412 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  br label %419

418:                                              ; preds = %389
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %28) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %28) #10
  call void @_ZN3HIR8Function8MarkingsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #10
  ret void

419:                                              ; preds = %417, %407, %401, %399, %397, %356, %354, %353, %347, %346
  %.pn133 = phi { ptr, i32 } [ %357, %356 ], [ %355, %354 ], [ %.pn131, %353 ], [ %.pn129, %417 ], [ %.pn125, %407 ], [ %402, %401 ], [ %400, %399 ], [ %398, %397 ], [ %348, %347 ], [ %.pn123, %346 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %0) #10
  br label %420

420:                                              ; preds = %419, %293, %250, %248, %247
  %.pn133.pn = phi { ptr, i32 } [ %.pn133, %419 ], [ %251, %250 ], [ %294, %293 ], [ %249, %248 ], [ %.pn118, %247 ]
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %28) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %28) #10
  br label %421

421:                                              ; preds = %420, %232, %228
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %228 ], [ %.pn133.pn, %420 ], [ %233, %232 ]
  call void @_ZN3HIR8Function8MarkingsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  br label %422

422:                                              ; preds = %105, %184, %421, %83
  %.pn147.pn.pn.pn = phi { ptr, i32 } [ %.pn147.pn.pn, %83 ], [ %.pn144, %184 ], [ %.pn139.pn, %421 ], [ %106, %105 ]
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #10
  br label %423

423:                                              ; preds = %422, %62
  %.pn147.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn147.pn.pn.pn, %422 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #10
  resume { ptr, i32 } %.pn147.pn.pn.pn.pn

424:                                              ; preds = %396, %341, %242, %213, %176
  unreachable
}

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

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

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

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

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(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(688) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST8Function3ArgESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.559") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEEN4IvcrC2ERK4SpanSA_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefEENK4Ivcr24is_valid_custom_receiverERS8_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(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 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) 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_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST8Function4codeEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNK3AST9Attribute4dataEv(ptr noundef nonnull align 8 dereferenceable(169)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK9TokenTree4sizeEv(ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNK9TokenTreeixEj(ptr noundef nonnull align 8 dereferenceable(136), i32 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9TokenTree3tokEv(ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #7 align 2

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

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

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

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

declare noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST8Function3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #7 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST8Function7rettypeEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

attributes #0 = { nofree nounwind }
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 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 = { 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 #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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 #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { 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 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !14, i64 4}
!11 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !12, i64 0, !14, i64 4, !15, i64 8}
!12 = !{!"_ZTSN3HIR11LifetimeRefE", !13, i64 0}
!13 = !{!"int", !8, i64 0}
!14 = !{!"_ZTSN3HIR10BorrowTypeE", !8, i64 0}
!15 = !{!"_ZTSN3HIR7TypeRefE", !7, i64 0}
!16 = !{!17, !45, i64 264}
!17 = !{!"_ZTSN3AST8FunctionE", !18, i64 0, !19, i64 8, !28, i64 56, !32, i64 72, !35, i64 192, !39, i64 216, !40, i64 224, !43, i64 256, !44, i64 264}
!18 = !{!"_ZTS4Span", !7, i64 0}
!19 = !{!"_ZTSN3AST13GenericParamsE", !20, i64 0, !24, i64 24}
!20 = !{!"_ZTSSt6vectorIN3AST12GenericParamESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN3AST12GenericParamESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericParamESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericParamESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTSSt6vectorIN3AST12GenericBoundESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3AST12GenericBoundESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!28 = !{!"_ZTSN3AST4ExprE", !29, i64 0}
!29 = !{!"_ZTSSt10shared_ptrIN3AST8ExprNodeEE", !30, i64 0}
!30 = !{!"_ZTSSt12__shared_ptrIN3AST8ExprNodeELN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0, !31, i64 8}
!31 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0}
!32 = !{!"_ZTS7TypeRef", !18, i64 0, !33, i64 8}
!33 = !{!"_ZTS8TypeData", !34, i64 0, !8, i64 8}
!34 = !{!"_ZTSN8TypeData3TagE", !8, i64 0}
!35 = !{!"_ZTSSt6vectorIN3AST8Function3ArgESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN3AST8Function3ArgESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!39 = !{!"bool", !8, i64 0}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !41, i64 0, !42, i64 8, !8, i64 16}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!42 = !{!"long", !8, i64 0}
!43 = !{!"_ZTSN3AST8Function5FlagsE", !39, i64 0, !39, i64 1, !39, i64 2}
!44 = !{!"_ZTSN3AST8Function8MarkingsE", !45, i64 0, !39, i64 4, !46, i64 8, !40, i64 32, !40, i64 64, !50, i64 96}
!45 = !{!"_ZTSN3AST8Function8Markings6InlineE", !8, i64 0}
!46 = !{!"_ZTSSt6vectorIjSaIjEE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!50 = !{!"_ZTSN3AST7LinkageE", !8, i64 0}
!51 = !{!52, !53, i64 28}
!52 = !{!"_ZTSN3HIR8Function8MarkingsE", !46, i64 0, !39, i64 24, !53, i64 28}
!53 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !8, i64 0}
!54 = !{!13, !13, i64 0}
!55 = !{!52, !39, i64 24}
!56 = !{!17, !50, i64 360}
!57 = !{!58, !59, i64 0}
!58 = !{!"_ZTSN3HIR7LinkageE", !59, i64 0, !40, i64 8, !40, i64 40}
!59 = !{!"_ZTSN3HIR7Linkage4TypeE", !8, i64 0}
!60 = !{!61, !39, i64 704}
!61 = !{!"_ZTSN3AST5CrateE", !62, i64 0, !67, i64 24, !75, i64 72, !78, i64 552, !112, i64 576, !117, i64 624, !77, i64 672, !77, i64 680, !77, i64 688, !77, i64 696, !39, i64 704, !120, i64 712, !124, i64 736, !128, i64 760, !132, i64 784, !133, i64 788, !134, i64 792, !40, i64 800, !40, i64 832, !77, i64 864, !135, i64 872}
!62 = !{!"_ZTSN3AST13AttributeListE", !63, i64 0}
!63 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!67 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST12AbsolutePathESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !70, i64 0, !72, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!72 = !{!"_ZTSSt15_Rb_tree_header", !73, i64 0, !42, i64 32}
!73 = !{!"_ZTSSt18_Rb_tree_node_base", !74, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!74 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!75 = !{!"_ZTSN3AST6ModuleE", !76, i64 0, !82, i64 32, !86, i64 56, !90, i64 80, !94, i64 104, !39, i64 176, !8, i64 177, !95, i64 184, !95, i64 240, !95, i64 296, !95, i64 352, !100, i64 408, !104, i64 432, !108, i64 456}
!76 = !{!"_ZTSN3AST12AbsolutePathE", !77, i64 0, !78, i64 8}
!77 = !{!"_ZTS8RcString", !7, i64 0}
!78 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !79, i64 0}
!79 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!82 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!86 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !87, i64 0}
!87 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!90 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !91, i64 0}
!91 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!94 = !{!"_ZTSN3AST6Module8FileInfoE", !39, i64 0, !39, i64 1, !40, i64 8, !40, i64 40}
!95 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !96, i64 0}
!96 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !7, i64 0, !42, i64 8, !97, i64 16, !42, i64 24, !98, i64 32, !7, i64 48}
!97 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!98 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !99, i64 0, !42, i64 8}
!99 = !{!"float", !8, i64 0}
!100 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!104 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !105, i64 0}
!105 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!108 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !109, i64 0}
!109 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!112 = !{!"_ZTSSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE", !113, i64 0}
!113 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE", !114, i64 0}
!114 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !115, i64 0, !72, i64 8}
!115 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !116, i64 0}
!116 = !{!"_ZTSSt4lessI8RcStringE"}
!117 = !{!"_ZTSSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE", !118, i64 0}
!118 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !119, i64 0}
!119 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !115, i64 0, !72, i64 8}
!120 = !{!"_ZTSSt6vectorIN3AST8TestDescESaIS1_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseIN3AST8TestDescESaIS1_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!124 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !125, i64 0}
!125 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !127, i64 0}
!127 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!128 = !{!"_ZTSSt6vectorIN3AST12ProcMacroDefESaIS1_EE", !129, i64 0}
!129 = !{!"_ZTSSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE12_Vector_implE", !131, i64 0}
!131 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!132 = !{!"_ZTSN3AST7EditionE", !8, i64 0}
!133 = !{!"_ZTSN3AST5Crate4TypeE", !8, i64 0}
!134 = !{!"_ZTSN3AST5Crate7LoadStdE", !8, i64 0}
!135 = !{!"_ZTSN3AST4PathE", !136, i64 8, !138, i64 56}
!136 = !{!"_ZTSN3AST4Path5ClassE", !137, i64 0, !8, i64 8}
!137 = !{!"_ZTSN3AST4Path5Class3TagE", !8, i64 0}
!138 = !{!"_ZTSN3AST4Path8BindingsE", !139, i64 0, !142, i64 64, !145, i64 128}
!139 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_ValueEEE", !76, i64 0, !140, i64 32}
!140 = !{!"_ZTSN3AST17PathBinding_ValueE", !141, i64 0, !8, i64 8}
!141 = !{!"_ZTSN3AST17PathBinding_Value3TagE", !8, i64 0}
!142 = !{!"_ZTSN3AST11PathBindingINS_16PathBinding_TypeEEE", !76, i64 0, !143, i64 32}
!143 = !{!"_ZTSN3AST16PathBinding_TypeE", !144, i64 0, !8, i64 8}
!144 = !{!"_ZTSN3AST16PathBinding_Type3TagE", !8, i64 0}
!145 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_MacroEEE", !76, i64 0, !146, i64 32}
!146 = !{!"_ZTSN3AST17PathBinding_MacroE", !147, i64 0, !8, i64 8}
!147 = !{!"_ZTSN3AST17PathBinding_Macro3TagE", !8, i64 0}
!148 = !{i8 0, i8 2}
!149 = !{}
!150 = !{!151, !39, i64 0}
!151 = !{!"_ZTSN3HIR8FunctionE", !39, i64 0, !58, i64 8, !152, i64 80, !15, i64 88, !77, i64 96, !39, i64 104, !39, i64 105, !153, i64 112, !170, i64 208, !39, i64 232, !15, i64 240, !174, i64 248, !52, i64 320}
!152 = !{!"_ZTSN3HIR8Function8ReceiverE", !8, i64 0}
!153 = !{!"_ZTSN3HIR13GenericParamsE", !154, i64 0, !158, i64 24, !162, i64 48, !166, i64 72}
!154 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !155, i64 0}
!155 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !157, i64 0}
!157 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!158 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !159, i64 0}
!159 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !161, i64 0}
!161 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!162 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !163, i64 0}
!163 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !164, i64 0}
!164 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !165, i64 0}
!165 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!166 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !167, i64 0}
!167 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !168, i64 0}
!168 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !169, i64 0}
!169 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!170 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !171, i64 0}
!171 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !172, i64 0}
!172 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !173, i64 0}
!173 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!174 = !{!"_ZTSN3HIR7ExprPtrE", !175, i64 0, !176, i64 8, !176, i64 32, !180, i64 56, !181, i64 64}
!175 = !{!"_ZTSN3HIR12ExprPtrInnerE", !7, i64 0}
!176 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !177, i64 0}
!177 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !178, i64 0}
!178 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !179, i64 0}
!179 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!180 = !{!"_ZTSN3MIR15FunctionPointerE", !7, i64 0}
!181 = !{!"_ZTSN3HIR12ExprStatePtrE", !7, i64 0}
!182 = !{!151, !152, i64 80}
!183 = !{!151, !39, i64 104}
!184 = !{!151, !39, i64 105}
!185 = !{!151, !39, i64 232}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass