; LLVM IR from thepowersgang/mrustc :: src/trans/auto_impls.ll (Z15Trans_AutoImplsRN3HIR5CrateER9TransList)

; 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.RcString = type { ptr }
%struct.Span = type { ptr }
%"struct.(anonymous namespace)::State" = type { ptr, %class.StaticTraitResolve, ptr, %"class.std::deque", %"class.std::set", %"struct.HIR::SimplePath" }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.3", %"class.std::map.3", %"class.std::map.3", %"class.std::map.8" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RangeVecMap = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.3" = type { %"class.std::_Rb_tree.4" }
%"class.std::_Rb_tree.4" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.8" = type { %"class.std::_Rb_tree.9" }
%"class.std::_Rb_tree.9" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, 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>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl" }
%"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl" = type { %"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.17" }
%"class.std::_Rb_tree.17" = type { %"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.227, %class.ThinVector.228, %class.ThinVector.229 }
%class.ThinVector.227 = type { ptr }
%class.ThinVector.228 = type { ptr }
%class.ThinVector.229 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.231" }
%"struct.std::_Head_base.231" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.245 = type { ptr }
%"struct.std::_Rb_tree_iterator.294" = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.306", %"class.std::vector.318", %"class.std::vector.322", %"class.MIR::EnumCachePtr" }
%"class.std::vector.306" = type { %"struct.std::_Vector_base.307" }
%"struct.std::_Vector_base.307" = 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.std::vector.318" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.322" = type { %"struct.std::_Vector_base.323" }
%"struct.std::_Vector_base.323" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::EnumCachePtr" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.327", %"class.MIR::Terminator" }
%"class.std::vector.327" = type { %"struct.std::_Vector_base.328" }
%"struct.std::_Vector_base.328" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.349" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.332" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.332" = type { %"struct.std::_Vector_base.333" }
%"struct.std::_Vector_base.333" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.std::vector.349" = type { %"struct.std::_Vector_base.350" }
%"struct.std::_Vector_base.350" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"struct.MIR::Terminator::Data_Return" = type { i8 }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.301", 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.300 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.300 = type { i64, [8 x i8] }
%"class.HIR::GenericParams" = type { %"class.std::vector.254", %"class.std::vector.259", %"class.std::vector.264", %"class.std::vector.269" }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = 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.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = 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.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = 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.269" = type { %"struct.std::_Vector_base.270" }
%"struct.std::_Vector_base.270" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.301" = type { %"struct.std::_Vector_base.302" }
%"struct.std::_Vector_base.302" = 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 }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.306", %"class.std::vector.306", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.308", i8, i32 }
%"class.std::vector.308" = type { %"struct.std::_Vector_base.309" }
%"struct.std::_Vector_base.309" = 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 }
%"struct.std::pair.390" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.392", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.392" = type { %"struct.std::_Vector_base.393" }
%"struct.std::_Vector_base.393" = 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::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 }
%"struct.HIR::PatternBinding" = type { i8, i32, %class.RcString, i32, i32 }
%"struct.HIR::Pattern::Data::Data_Any" = type { i8 }
%"class.HIR::TraitImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef", %"class.std::map.274", %"class.std::map.279", %"class.std::map.284", %"class.std::map.289", %"struct.HIR::SimplePath" }
%"class.std::map.274" = type { %"class.std::_Rb_tree.275" }
%"class.std::_Rb_tree.275" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.279" = type { %"class.std::_Rb_tree.280" }
%"class.std::_Rb_tree.280" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.284" = type { %"class.std::_Rb_tree.285" }
%"class.std::_Rb_tree.285" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.289" = type { %"class.std::_Rb_tree.290" }
%"class.std::_Rb_tree.290" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::pair.426" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt" }
%"struct.HIR::TraitImpl::ImplEnt" = type { i8, %"class.HIR::Function" }
%"struct.std::pair.423" = type <{ %"struct.std::_Rb_tree_iterator.294", i8, [7 x i8] }>
%"class.std::unique_ptr.246" = type { %"struct.std::__uniq_ptr_data.247" }
%"struct.std::__uniq_ptr_data.247" = type { %"class.std::__uniq_ptr_impl.248" }
%"class.std::__uniq_ptr_impl.248" = type { %"class.std::tuple.249" }
%"class.std::tuple.249" = type { %"struct.std::_Tuple_impl.250" }
%"struct.std::_Tuple_impl.250" = type { %"struct.std::_Head_base.253" }
%"struct.std::_Head_base.253" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%class.anon.439 = type { i8 }
%"struct.std::_Rb_tree_const_iterator.440" = type { ptr }
%class.anon.531 = type { ptr, ptr, ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.313" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.313" = type { %"struct.std::_Vector_base.314" }
%"struct.std::_Vector_base.314" = 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.__gnu_cxx::__normal_iterator.532" = type { ptr }
%class.anon.533 = type { i8 }
%"struct.(anonymous namespace)::Builder" = type { ptr, ptr, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%class.anon.535 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%class.anon.536 = type { ptr, ptr, ptr, ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.MIR::Terminator::Data_Diverge" = type { i8 }
%"class.std::unique_ptr.537" = type { %"struct.std::__uniq_ptr_data.538" }
%"struct.std::__uniq_ptr_data.538" = type { %"class.std::__uniq_ptr_impl.539" }
%"class.std::__uniq_ptr_impl.539" = type { %"class.std::tuple.540" }
%"class.std::tuple.540" = type { %"struct.std::_Tuple_impl.541" }
%"struct.std::_Tuple_impl.541" = type { %"struct.std::_Head_base.544" }
%"struct.std::_Head_base.544" = type { ptr }
%class.anon.545 = type { i8 }
%"struct.std::_Rb_tree_iterator.547" = type { ptr }
%struct.anon = type { ptr, ptr, i32 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.306" }
%"class.__gnu_cxx::__normal_iterator.550" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.551" = type { ptr }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"class.std::map.526" }
%struct.EncodedLiteral = type { %"class.std::vector.354", %"class.std::vector.521" }
%"class.std::vector.354" = type { %"struct.std::_Vector_base.355" }
%"struct.std::_Vector_base.355" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.521" = type { %"struct.std::_Vector_base.522" }
%"struct.std::_Vector_base.522" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.526" = type { %"class.std::_Rb_tree.527" }
%"class.std::_Rb_tree.527" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.anon.557 = type <{ ptr, ptr, i32, [4 x i8] }>
%class.anon.559 = type { ptr }
%"class.std::unique_ptr.560" = type { %"struct.std::__uniq_ptr_data.561" }
%"struct.std::__uniq_ptr_data.561" = type { %"class.std::__uniq_ptr_impl.562" }
%"class.std::__uniq_ptr_impl.562" = type { %"class.std::tuple.563" }
%"class.std::tuple.563" = type { %"struct.std::_Tuple_impl.564" }
%"struct.std::_Tuple_impl.564" = type { %"struct.std::_Head_base.567" }
%"struct.std::_Head_base.567" = type { ptr }
%class.anon.568 = type { ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.587" = type { ptr }
%class.anon.588 = type { ptr }
%"struct.std::pair.589" = type <{ %"class.HIR::TypeRef", i8, [7 x i8] }>
%class.anon.592 = type <{ ptr, ptr, i32, [4 x i8] }>
%class.anon.594 = type { ptr }
%"struct.std::__detail::_Node_const_iterator.595" = type { %"struct.std::__detail::_Node_iterator_base.596" }
%"struct.std::__detail::_Node_iterator_base.596" = type { ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.601 = type { ptr }
%class.anon.602 = type { i8 }
%class.anon.604 = type { i8 }
%class.anon.606 = type { ptr }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.349" }
%class.anon.607 = type { i8 }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%class.anon.609 = type { ptr, ptr }
%class.anon.610 = type { ptr, ptr }
%class.anon.611 = type { ptr, ptr }
%class.anon.612 = type { ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%class.anon.613 = type { i8 }
%class.anon.615 = type { ptr }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.308" }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%"class.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.anon.626 = type { ptr, ptr }
%class.anon.627 = type { i8 }
%class.TransList = type { %"class.std::vector.175", %"class.std::map.180", %"class.std::map.186", %"class.std::map.191", %"class.std::map.196", %"class.std::set", %"class.std::set", %"class.std::set.201", %"class.std::set", %"class.std::set", %"class.std::set.207", %"class.std::vector.212", %"class.std::vector.217", %"class.std::vector.222" }
%"class.std::vector.175" = type { %"struct.std::_Vector_base.176" }
%"struct.std::_Vector_base.176" = type { %"struct.std::_Vector_base<HIR::Path, std::allocator<HIR::Path>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Path, std::allocator<HIR::Path>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Path, std::allocator<HIR::Path>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Path, std::allocator<HIR::Path>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.180" = type { %"class.std::_Rb_tree.181" }
%"class.std::_Rb_tree.181" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Function>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Function>>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Function>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Function>>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.186" = type { %"class.std::_Rb_tree.187" }
%"class.std::_Rb_tree.187" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Static>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Static>>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Static>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Static>>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.191" = type { %"class.std::_Rb_tree.192" }
%"class.std::_Rb_tree.192" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Const>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Const>>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, std::unique_ptr<TransList_Const>>, std::_Select1st<std::pair<const HIR::Path, std::unique_ptr<TransList_Const>>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.196" = type { %"class.std::_Rb_tree.197" }
%"class.std::_Rb_tree.197" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, Trans_Params>, std::_Select1st<std::pair<const HIR::Path, Trans_Params>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, Trans_Params>, std::_Select1st<std::pair<const HIR::Path, Trans_Params>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::set.201" = type { %"class.std::_Rb_tree.202" }
%"class.std::_Rb_tree.202" = type { %"struct.std::_Rb_tree<HIR::GenericPath, HIR::GenericPath, std::_Identity<HIR::GenericPath>, std::less<HIR::GenericPath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::GenericPath, HIR::GenericPath, std::_Identity<HIR::GenericPath>, std::less<HIR::GenericPath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::set.207" = type { %"class.std::_Rb_tree.208" }
%"class.std::_Rb_tree.208" = type { %"struct.std::_Rb_tree<HIR::Path, HIR::Path, std::_Identity<HIR::Path>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, HIR::Path, std::_Identity<HIR::Path>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.212" = type { %"struct.std::_Vector_base.213" }
%"struct.std::_Vector_base.213" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::Static>, std::allocator<std::unique_ptr<HIR::Static>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::Static>, std::allocator<std::unique_ptr<HIR::Static>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::Static>, std::allocator<std::unique_ptr<HIR::Static>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::Static>, std::allocator<std::unique_ptr<HIR::Static>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.217" = type { %"struct.std::_Vector_base.218" }
%"struct.std::_Vector_base.218" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::Function>, std::allocator<std::unique_ptr<HIR::Function>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::Function>, std::allocator<std::unique_ptr<HIR::Function>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::Function>, std::allocator<std::unique_ptr<HIR::Function>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::Function>, std::allocator<std::unique_ptr<HIR::Function>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.222" = type { %"struct.std::_Vector_base.223" }
%"struct.std::_Vector_base.223" = type { %"struct.std::_Vector_base<std::pair<HIR::TypeRef, bool>, std::allocator<std::pair<HIR::TypeRef, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::TypeRef, bool>, std::allocator<std::pair<HIR::TypeRef, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::TypeRef, bool>, std::allocator<std::pair<HIR::TypeRef, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::TypeRef, bool>, std::allocator<std::pair<HIR::TypeRef, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Crate" = type { %class.RcString, i32, %"class.HIR::Module", %"class.std::vector.64", %"class.std::vector.69", %"struct.HIR::Crate::ImplGroup", %"class.HIR::InherentCache", %"class.std::map.91", %"class.std::map.96", %"class.std::vector.101", %"struct.HIR::Crate::ImplGroup.106", %"class.std::map.117", %"class.std::map.122", %"class.std::vector.127", %"class.std::unordered_map.132", %"class.std::vector.127", %"class.std::unordered_map.151", %"class.std::vector.165", %"class.std::vector.170" }
%"class.HIR::Module" = type { %"class.std::vector.21", %"class.std::unordered_map", %"class.std::unordered_map.31", %"class.std::unordered_map.45", %"class.std::vector.59" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.31" = type { %"class.std::_Hashtable.32" }
%"class.std::_Hashtable.32" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.45" = type { %"class.std::_Hashtable.46" }
%"class.std::_Hashtable.46" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.64" = type { %"struct.std::_Vector_base.65" }
%"struct.std::_Vector_base.65" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup" = type { %"class.std::map.74", %"class.std::vector.80", %"class.std::vector.80" }
%"class.std::map.74" = type { %"class.std::_Rb_tree.75" }
%"class.std::_Rb_tree.75" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::InherentCache" = type { %"class.std::map.85" }
%"class.std::map.85" = type { %"class.std::_Rb_tree.86" }
%"class.std::_Rb_tree.86" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.91" = type { %"class.std::_Rb_tree.92" }
%"class.std::_Rb_tree.92" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.96" = type { %"class.std::_Rb_tree.97" }
%"class.std::_Rb_tree.97" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup.106" = type { %"class.std::map.107", %"class.std::vector.112", %"class.std::vector.112" }
%"class.std::map.107" = type { %"class.std::_Rb_tree.108" }
%"class.std::_Rb_tree.108" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.112" = type { %"struct.std::_Vector_base.113" }
%"struct.std::_Vector_base.113" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.117" = type { %"class.std::_Rb_tree.118" }
%"class.std::_Rb_tree.118" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.122" = type { %"class.std::_Rb_tree.123" }
%"class.std::_Rb_tree.123" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.132" = type { %"class.std::_Hashtable.133" }
%"class.std::_Hashtable.133" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.127" = type { %"struct.std::_Vector_base.128" }
%"struct.std::_Vector_base.128" = 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.std::unordered_map.151" = type { %"class.std::_Hashtable.152" }
%"class.std::_Hashtable.152" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.165" = type { %"struct.std::_Vector_base.166" }
%"struct.std::_Vector_base.166" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.170" = type { %"struct.std::_Vector_base.171" }
%"struct.std::_Vector_base.171" = 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 }
%"struct.std::pair.232" = type { %"struct.HIR::SimplePath", %"struct.HIR::Crate::ImplGroup.234" }
%"struct.HIR::Crate::ImplGroup.234" = type { %"class.std::map.235", %"class.std::vector.240", %"class.std::vector.240" }
%"class.std::map.235" = type { %"class.std::_Rb_tree.236" }
%"class.std::_Rb_tree.236" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TraitImpl>, std::allocator<std::unique_ptr<HIR::TraitImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.295" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt" }
%struct.TransList_Function = type <{ ptr, ptr, %struct.Trans_Params, %struct.CachedFunction, i8, [7 x i8] }>
%struct.Trans_Params = type { %class.MonomorphiserPP, %struct.Span, ptr, %"struct.HIR::PathParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef" }
%struct.CachedFunction = type { %"class.HIR::TypeRef", %"class.std::vector.301", %"class.MIR::FunctionPointer" }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.456", i8, %"class.std::unordered_map.466", %"class.std::unordered_map.480", %"class.std::unordered_multimap", %"class.std::unordered_map.507", i32, %"class.std::vector.456", %"struct.HIR::SimplePath" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::unordered_map.466" = type { %"class.std::_Hashtable.467" }
%"class.std::_Hashtable.467" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.480" = type { %"class.std::_Hashtable.481" }
%"class.std::_Hashtable.481" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.494" }
%"class.std::_Hashtable.494" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.507" = type { %"class.std::_Hashtable.508" }
%"class.std::_Hashtable.508" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.456" = type { %"struct.std::_Vector_base.457" }
%"struct.std::_Vector_base.457" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.451", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.441", %"class.std::map.446", ptr }
%"class.std::map.441" = type { %"class.std::_Rb_tree.442" }
%"class.std::_Rb_tree.442" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.446" = type { %"class.std::_Rb_tree.447" }
%"class.std::_Rb_tree.447" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.451" = type { %"struct.std::_Vector_base.452" }
%"struct.std::_Vector_base.452" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"struct.std::pair.548" = type { %"class.HIR::Path", %struct.Trans_Params }
%"struct.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%struct.TypeRepr = type { i64, i64, %"class.TypeRepr::VariantMode", %"class.std::vector.552" }
%"class.TypeRepr::VariantMode" = type { i32, %"union.TypeRepr::VariantMode::DataUnion" }
%"union.TypeRepr::VariantMode::DataUnion" = type { %"struct.TypeRepr::VariantMode::Data_Values" }
%"struct.TypeRepr::VariantMode::Data_Values" = type { %"struct.TypeRepr::FieldPath", %"class.std::vector.337" }
%"struct.TypeRepr::FieldPath" = type { i64, i64, %"class.std::vector.337" }
%"class.std::vector.337" = type { %"struct.std::_Vector_base.338" }
%"struct.std::_Vector_base.338" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.552" = type { %"struct.std::_Vector_base.553" }
%"struct.std::_Vector_base.553" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.TransList_Static = type { ptr, %struct.Trans_Params }
%"struct.std::pair.569" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.std::pair.597" = type { %class.RcString, %"struct.std::pair.599" }
%"struct.std::pair.599" = type { i32, %"class.HIR::GenericPath" }
%"struct.TypeRepr::Field" = type { i64, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.367", [8 x i8] }
%"class.std::unique_ptr.367" = type { %"struct.std::__uniq_ptr_data.368" }
%"struct.std::__uniq_ptr_data.368" = type { %"class.std::__uniq_ptr_impl.369" }
%"class.std::__uniq_ptr_impl.369" = type { %"class.std::tuple.370" }
%"class.std::tuple.370" = type { %"struct.std::_Tuple_impl.371" }
%"struct.std::_Tuple_impl.371" = type { %"struct.std::_Head_base.374" }
%"struct.std::_Head_base.374" = type { ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.572" }
%"class.std::vector.572" = type { %"struct.std::_Vector_base.573" }
%"struct.std::_Vector_base.573" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.582" }
%"class.std::map.582" = type { %"class.std::_Rb_tree.583" }
%"class.std::_Rb_tree.583" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%"class.HIR::Union" = type { %"class.HIR::GenericParams", i32, %"class.std::vector.577", %"struct.HIR::TraitMarkings" }
%"class.std::vector.577" = type { %"struct.std::_Vector_base.578" }
%"struct.std::_Vector_base.578" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.616", [8 x i8] }
%"class.std::vector.616" = type { %"struct.std::_Vector_base.617" }
%"struct.std::_Vector_base.617" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@_ZN12_GLOBAL__N_113rcstring_dropE = external hidden global %class.RcString, align 8
@_ZN12_GLOBAL__N_113rcstring_selfE = external hidden global %class.RcString, align 8
@_ZN12_GLOBAL__N_118rcstring_drop_glueE = external hidden global %class.RcString, align 8
@gTargetVersion = external global i32, align 4
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList = external hidden unnamed_addr constant [50 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList = external hidden unnamed_addr constant [16 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp = external hidden global %struct.Span, align 8
@_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp = external hidden global i64, align 8
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15Trans_AutoImplsRN3HIR5CrateER9TransList(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(576) %1) #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.(anonymous namespace)::State", align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %8 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.HIR::TypeRef", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"struct.std::pair", align 8
  %14 = alloca %"class.HIR::TypeRef", align 8
  %15 = alloca %"class.HIR::TypeRef", align 8
  %16 = alloca %"class.HIR::TypeRef", align 8
  %17 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %20 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %23 = alloca %"class.HIR::Path", align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"class.HIR::GenericPath", align 8
  %26 = alloca %"struct.HIR::SimplePath", align 8
  %27 = alloca %class.RcString, align 8
  %28 = alloca %"struct.HIR::PathParams", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.HIR::Path", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function", align 8
  %34 = alloca %class.anon, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %39 = alloca %class.anon.245, align 8
  %40 = alloca %"struct.std::_Rb_tree_iterator.294", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %struct.Span, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %45 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"class.HIR::TypeRef", align 8
  %49 = alloca %"class.MIR::Function", align 8
  %50 = alloca %"struct.MIR::BasicBlock", align 8
  %51 = alloca %"class.MIR::Statement", align 8
  %52 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %53 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %54 = alloca i1, align 1
  %55 = alloca %"class.MIR::Terminator", align 8
  %56 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %57 = alloca %"class.HIR::Function", align 8
  %58 = alloca %"class.HIR::GenericParams", align 8
  %59 = alloca %"class.std::vector.301", align 8
  %60 = alloca %"struct.std::pair.390", align 8
  %61 = alloca %"struct.HIR::Pattern", align 8
  %62 = alloca %"struct.HIR::PatternBinding", align 8
  %63 = alloca %class.RcString, align 8
  %64 = alloca %"class.HIR::Pattern::Data", align 8
  %65 = alloca %"struct.HIR::Pattern::Data::Data_Any", align 1
  %66 = alloca %"class.HIR::TypeRef", align 8
  %67 = alloca %"class.HIR::TypeRef", align 8
  %68 = alloca %"class.HIR::ExprPtr", align 8
  %69 = alloca %"class.MIR::FunctionPointer", align 8
  %70 = alloca %"class.HIR::TraitImpl", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %"struct.std::pair.426", align 8
  %73 = alloca %class.RcString, align 8
  %74 = alloca %"struct.HIR::TraitImpl::ImplEnt", align 8
  %75 = alloca %"struct.std::pair.423", align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.std::unique_ptr.246", align 8
  %78 = alloca ptr, align 8
  %79 = alloca %"class.HIR::Path", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.HIR::GenericPath", align 8
  %82 = alloca %"struct.HIR::SimplePath", align 8
  %83 = alloca %class.RcString, align 8
  %84 = alloca %"struct.HIR::PathParams", align 8
  %85 = alloca ptr, align 8
  %86 = alloca %"class.HIR::Path", align 8
  %87 = alloca ptr, align 8
  %88 = alloca %"struct.std::_Rb_tree_iterator.294", align 8
  %89 = alloca %class.TraceLog, align 8
  %90 = alloca %"class.std::function", align 8
  %91 = alloca %class.anon.439, align 1
  %92 = alloca ptr, align 8
  %93 = alloca %"struct.std::_Rb_tree_const_iterator.440", align 8
  %94 = alloca %"struct.std::_Rb_tree_const_iterator.440", align 8
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca %struct.Span, align 8
  %105 = alloca %"class.std::function", align 8
  %106 = alloca %class.anon.531, align 8
  %107 = alloca %"struct.HIR::PathParams", align 8
  %108 = alloca %struct.MonomorphStatePtr, align 8
  %109 = alloca %"class.HIR::Function", align 8
  %110 = alloca %"class.HIR::TypeRef", align 8
  %111 = alloca ptr, align 8
  %112 = alloca %"class.__gnu_cxx::__normal_iterator.532", align 8
  %113 = alloca %"class.__gnu_cxx::__normal_iterator.532", align 8
  %114 = alloca ptr, align 8
  %115 = alloca %"struct.std::pair.390", align 8
  %116 = alloca %"struct.HIR::Pattern", align 8
  %117 = alloca %"class.HIR::TypeRef", align 8
  %118 = alloca %struct.Span, align 8
  %119 = alloca %"class.std::function", align 8
  %120 = alloca %class.anon.533, align 1
  %121 = alloca %"class.MIR::FunctionPointer", align 8
  %122 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %123 = alloca %"struct.MIR::LValue", align 8
  %124 = alloca %"struct.MIR::LValue", align 8
  %125 = alloca ptr, align 8
  %126 = alloca %"class.HIR::TypeRef", align 8
  %127 = alloca %"class.HIR::TypeRef", align 8
  %128 = alloca %"struct.MIR::LValue", align 8
  %129 = alloca %"class.HIR::TypeRef", align 8
  %130 = alloca %"class.HIR::TypeRef", align 8
  %131 = alloca %"struct.MIR::LValue", align 8
  %132 = alloca %"class.MIR::RValue", align 8
  %133 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %134 = alloca %struct.Span, align 8
  %135 = alloca %"class.std::function", align 8
  %136 = alloca %class.anon.535, align 8
  %137 = alloca i32, align 4
  %138 = alloca %"struct.MIR::LValue", align 8
  %139 = alloca %"class.HIR::TypeRef", align 8
  %140 = alloca %"class.HIR::TypeRef", align 8
  %141 = alloca %"struct.MIR::LValue", align 8
  %142 = alloca %"class.MIR::RValue", align 8
  %143 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %144 = alloca %"class.HIR::GenericPath", align 8
  %145 = alloca %"class.HIR::TypeRef", align 8
  %146 = alloca %"class.HIR::TypeRef", align 8
  %147 = alloca %"class.HIR::Path", align 8
  %148 = alloca %"class.HIR::GenericPath", align 8
  %149 = alloca %"class.HIR::TypePathBinding", align 8
  %150 = alloca %"struct.MIR::LValue", align 8
  %151 = alloca %"class.HIR::TypeRef", align 8
  %152 = alloca %"struct.MIR::LValue", align 8
  %153 = alloca ptr, align 8
  %154 = alloca %struct.Span, align 8
  %155 = alloca %"class.std::function", align 8
  %156 = alloca %class.anon.536, align 8
  %157 = alloca %"struct.MIR::LValue", align 8
  %158 = alloca %"class.HIR::TypeRef", align 8
  %159 = alloca %"class.HIR::TypeRef", align 8
  %160 = alloca %"struct.MIR::LValue", align 8
  %161 = alloca %"class.MIR::RValue", align 8
  %162 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %163 = alloca %"class.std::vector.349", align 8
  %164 = alloca %"class.MIR::Param", align 8
  %165 = alloca %"struct.MIR::LValue", align 8
  %166 = alloca i64, align 8
  %167 = alloca %"class.MIR::Param", align 8
  %168 = alloca %"struct.MIR::LValue", align 8
  %169 = alloca %"struct.MIR::LValue", align 8
  %170 = alloca %"class.MIR::CallTarget", align 8
  %171 = alloca %"struct.MIR::LValue", align 8
  %172 = alloca %"struct.MIR::LValue", align 8
  %173 = alloca %"struct.MIR::LValue", align 8
  %174 = alloca %"class.std::vector.349", align 8
  %175 = alloca %"class.MIR::Terminator", align 8
  %176 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %177 = alloca %"class.MIR::Terminator", align 8
  %178 = alloca %"struct.MIR::Terminator::Data_Diverge", align 1
  %179 = alloca %"class.HIR::ItemPath", align 8
  %180 = alloca %"class.std::unique_ptr.537", align 8
  %181 = alloca ptr, align 8
  %182 = alloca %"class.HIR::Path", align 8
  %183 = alloca %class.TraceLog, align 8
  %184 = alloca %"class.std::function", align 8
  %185 = alloca %class.anon.545, align 1
  %186 = alloca ptr, align 8
  %187 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %188 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %189 = alloca ptr, align 8
  %190 = alloca %struct.Span, align 8
  %191 = alloca ptr, align 8
  %192 = alloca ptr, align 8
  %193 = alloca ptr, align 8
  %194 = alloca [3 x %struct.anon], align 16
  %195 = alloca i64, align 8
  %196 = alloca ptr, align 8
  %197 = alloca i8, align 1
  %198 = alloca ptr, align 8
  %199 = alloca %"class.HIR::Path", align 8
  %200 = alloca %class.RcString, align 8
  %201 = alloca %"struct.HIR::SimplePath", align 8
  %202 = alloca ptr, align 8
  %203 = alloca %"class.HIR::Path", align 8
  %204 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %205 = alloca %"class.std::vector.306", align 8
  %206 = alloca ptr, align 8
  %207 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %208 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %209 = alloca ptr, align 8
  %210 = alloca %"class.HIR::TypeRef", align 8
  %211 = alloca %"class.HIR::TypeRef", align 8
  %212 = alloca %"class.std::vector.306", align 8
  %213 = alloca %"class.HIR::Function", align 8
  %214 = alloca %"class.HIR::TypeRef", align 8
  %215 = alloca %"struct.std::pair.390", align 8
  %216 = alloca %"struct.HIR::Pattern", align 8
  %217 = alloca %"class.HIR::TypeRef", align 8
  %218 = alloca %"class.HIR::TypeRef", align 8
  %219 = alloca i1, align 1
  %220 = alloca %"struct.std::pair.390", align 8
  %221 = alloca %"struct.HIR::Pattern", align 8
  %222 = alloca %"class.MIR::FunctionPointer", align 8
  %223 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %224 = alloca %"class.std::vector.349", align 8
  %225 = alloca i64, align 8
  %226 = alloca %"class.MIR::Param", align 8
  %227 = alloca %"struct.MIR::LValue", align 8
  %228 = alloca %"struct.MIR::LValue", align 8
  %229 = alloca %"struct.MIR::LValue", align 8
  %230 = alloca %"class.MIR::CallTarget", align 8
  %231 = alloca %"class.HIR::Path", align 8
  %232 = alloca %"class.std::vector.349", align 8
  %233 = alloca %"class.MIR::Terminator", align 8
  %234 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %235 = alloca %"class.MIR::Terminator", align 8
  %236 = alloca %"struct.MIR::Terminator::Data_Diverge", align 1
  %237 = alloca %"class.HIR::ItemPath", align 8
  %238 = alloca %"class.std::unique_ptr.537", align 8
  %239 = alloca ptr, align 8
  %240 = alloca i8, align 1
  %241 = alloca ptr, align 8
  %242 = alloca %"class.HIR::Path", align 8
  %243 = alloca %class.RcString, align 8
  %244 = alloca %"struct.HIR::SimplePath", align 8
  %245 = alloca ptr, align 8
  %246 = alloca %"class.HIR::Path", align 8
  %247 = alloca %"class.std::vector.306", align 8
  %248 = alloca ptr, align 8
  %249 = alloca %"class.__gnu_cxx::__normal_iterator.551", align 8
  %250 = alloca %"class.__gnu_cxx::__normal_iterator.551", align 8
  %251 = alloca ptr, align 8
  %252 = alloca %"class.HIR::TypeRef", align 8
  %253 = alloca %"class.HIR::TypeRef", align 8
  %254 = alloca %"class.std::vector.306", align 8
  %255 = alloca %"class.HIR::Function", align 8
  %256 = alloca %"class.HIR::TypeRef", align 8
  %257 = alloca %"struct.std::pair.390", align 8
  %258 = alloca %"struct.HIR::Pattern", align 8
  %259 = alloca %"class.HIR::TypeRef", align 8
  %260 = alloca %"class.HIR::TypeRef", align 8
  %261 = alloca i1, align 1
  %262 = alloca %"struct.std::pair.390", align 8
  %263 = alloca %"struct.HIR::Pattern", align 8
  %264 = alloca %"class.MIR::FunctionPointer", align 8
  %265 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %266 = alloca %"class.std::vector.349", align 8
  %267 = alloca i64, align 8
  %268 = alloca %"class.MIR::Param", align 8
  %269 = alloca %"struct.MIR::LValue", align 8
  %270 = alloca %"struct.MIR::LValue", align 8
  %271 = alloca %"struct.MIR::LValue", align 8
  %272 = alloca %"class.MIR::CallTarget", align 8
  %273 = alloca %"struct.MIR::LValue", align 8
  %274 = alloca %"struct.MIR::LValue", align 8
  %275 = alloca i1, align 1
  %276 = alloca i1, align 1
  %277 = alloca i1, align 1
  %278 = alloca %"class.std::vector.349", align 8
  %279 = alloca %"class.MIR::Terminator", align 8
  %280 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %281 = alloca %"class.MIR::Terminator", align 8
  %282 = alloca %"struct.MIR::Terminator::Data_Diverge", align 1
  %283 = alloca %"class.HIR::ItemPath", align 8
  %284 = alloca %"class.std::unique_ptr.537", align 8
  %285 = alloca ptr, align 8
  %286 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %287 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %288 = alloca ptr, align 8
  %289 = alloca %struct.Span, align 8
  %290 = alloca ptr, align 8
  %291 = alloca ptr, align 8
  %292 = alloca %"struct.HIR::SimplePath", align 8
  %293 = alloca %"class.std::vector.306", align 8
  %294 = alloca %"class.HIR::TypeRef", align 8
  %295 = alloca %"class.HIR::TypeRef", align 8
  %296 = alloca %"class.HIR::TypeRef", align 8
  %297 = alloca %"class.HIR::TypeRef", align 8
  %298 = alloca %"class.std::vector.306", align 8
  %299 = alloca ptr, align 8
  %300 = alloca %"struct.HIR::Linkage", align 8
  %301 = alloca %"class.HIR::Static", align 8
  %302 = alloca %"struct.HIR::Linkage", align 8
  %303 = alloca %"class.HIR::TypeRef", align 8
  %304 = alloca %"class.HIR::ExprPtr", align 8
  %305 = alloca ptr, align 8
  %306 = alloca i32, align 4
  %307 = alloca i64, align 8
  %308 = alloca %class.anon.557, align 8
  %309 = alloca %"class.HIR::TypeRef", align 8
  %310 = alloca %"struct.std::pair", align 8
  %311 = alloca %"class.HIR::Path", align 8
  %312 = alloca %"class.HIR::TypeRef", align 8
  %313 = alloca %class.RcString, align 8
  %314 = alloca %"struct.HIR::PathParams", align 8
  %315 = alloca i64, align 8
  %316 = alloca i64, align 8
  %317 = alloca %struct.Span, align 8
  %318 = alloca %"class.std::function", align 8
  %319 = alloca %class.anon.559, align 8
  %320 = alloca %"class.std::unique_ptr.560", align 8
  %321 = alloca ptr, align 8
  %322 = alloca %"class.HIR::Path", align 8
  %323 = alloca ptr, align 8
  %324 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %325 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %326 = alloca ptr, align 8
  %327 = alloca %struct.Span, align 8
  %328 = alloca ptr, align 8
  %329 = alloca ptr, align 8
  %330 = alloca %"struct.HIR::SimplePath", align 8
  %331 = alloca ptr, align 8
  %332 = alloca ptr, align 8
  %333 = alloca %"struct.HIR::SimplePath", align 8
  %334 = alloca %struct.Span, align 8
  %335 = alloca %"class.std::function", align 8
  %336 = alloca %class.anon.568, align 8
  %337 = alloca %"struct.HIR::PathParams", align 8
  %338 = alloca ptr, align 8
  %339 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %340 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %341 = alloca ptr, align 8
  %342 = alloca %"class.HIR::TypeRef", align 8
  %343 = alloca %"class.HIR::Path", align 8
  %344 = alloca %"class.HIR::TypeRef", align 8
  %345 = alloca %"class.HIR::GenericPath", align 8
  %346 = alloca %class.RcString, align 8
  %347 = alloca %"struct.HIR::PathParams", align 8
  %348 = alloca %"class.HIR::TypePathBinding", align 8
  %349 = alloca %"class.HIR::TypeRef", align 8
  %350 = alloca ptr, align 8
  %351 = alloca %"class.HIR::TypeRef", align 8
  %352 = alloca %"class.HIR::Path", align 8
  %353 = alloca %"class.HIR::GenericPath", align 8
  %354 = alloca %"struct.HIR::SimplePath", align 8
  %355 = alloca %"struct.HIR::PathParams", align 8
  %356 = alloca %"class.HIR::TypePathBinding", align 8
  %357 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %358 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %359 = alloca %class.anon.588, align 8
  %360 = alloca %"struct.std::pair.589", align 8
  %361 = alloca %"class.HIR::TypeRef", align 8
  %362 = alloca i8, align 1
  %363 = alloca ptr, align 8
  %364 = alloca %struct.MonomorphStatePtr, align 8
  %365 = alloca %"struct.HIR::Linkage", align 8
  %366 = alloca %"class.HIR::Static", align 8
  %367 = alloca %"struct.HIR::Linkage", align 8
  %368 = alloca %"class.HIR::TypeRef", align 8
  %369 = alloca %"class.HIR::ExprPtr", align 8
  %370 = alloca ptr, align 8
  %371 = alloca i32, align 4
  %372 = alloca i64, align 8
  %373 = alloca %class.anon.592, align 8
  %374 = alloca %"class.HIR::TypeRef", align 8
  %375 = alloca %"struct.std::pair", align 8
  %376 = alloca %"class.HIR::Path", align 8
  %377 = alloca %"class.HIR::TypeRef", align 8
  %378 = alloca %class.RcString, align 8
  %379 = alloca %"struct.HIR::PathParams", align 8
  %380 = alloca i64, align 8
  %381 = alloca i64, align 8
  %382 = alloca %struct.Span, align 8
  %383 = alloca %"class.std::function", align 8
  %384 = alloca %class.anon.594, align 8
  %385 = alloca i32, align 4
  %386 = alloca ptr, align 8
  %387 = alloca %"struct.std::__detail::_Node_const_iterator.595", align 8
  %388 = alloca %"struct.std::__detail::_Node_const_iterator.595", align 8
  %389 = alloca ptr, align 8
  %390 = alloca %"class.HIR::GenericPath", align 8
  %391 = alloca %"class.HIR::Path", align 8
  %392 = alloca %"class.HIR::TypeRef", align 8
  %393 = alloca %"class.HIR::GenericPath", align 8
  %394 = alloca %class.RcString, align 8
  %395 = alloca %"struct.HIR::PathParams", align 8
  %396 = alloca %struct.MonomorphStatePtr, align 8
  %397 = alloca ptr, align 8
  %398 = alloca ptr, align 8
  %399 = alloca ptr, align 8
  %400 = alloca %"class.HIR::Path", align 8
  %401 = alloca %class.RcString, align 8
  %402 = alloca %"class.std::__cxx11::basic_string", align 8
  %403 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %404 = alloca ptr, align 8
  %405 = alloca %"class.HIR::Path", align 8
  %406 = alloca %"class.HIR::Function", align 8
  %407 = alloca %"class.HIR::TypeRef", align 8
  %408 = alloca %"struct.std::pair.390", align 8
  %409 = alloca %"struct.HIR::Pattern", align 8
  %410 = alloca %"class.HIR::TypeRef", align 8
  %411 = alloca %"class.HIR::TypeRef", align 8
  %412 = alloca i64, align 8
  %413 = alloca %"struct.std::pair.390", align 8
  %414 = alloca %"struct.HIR::Pattern", align 8
  %415 = alloca %"class.HIR::TypeRef", align 8
  %416 = alloca i64, align 8
  %417 = alloca %"class.MIR::FunctionPointer", align 8
  %418 = alloca %"class.MIR::TypeResolve", align 8
  %419 = alloca %struct.FmtLambda, align 8
  %420 = alloca %"class.std::function", align 8
  %421 = alloca %class.anon.601, align 8
  %422 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %423 = alloca %"class.std::vector.349", align 8
  %424 = alloca %"class.MIR::Param", align 8
  %425 = alloca %"struct.MIR::LValue", align 8
  %426 = alloca %"struct.MIR::LValue", align 8
  %427 = alloca i64, align 8
  %428 = alloca %"class.MIR::Param", align 8
  %429 = alloca %"struct.MIR::LValue", align 8
  %430 = alloca %"struct.MIR::LValue", align 8
  %431 = alloca %"class.MIR::CallTarget", align 8
  %432 = alloca %"class.HIR::Path", align 8
  %433 = alloca %"class.std::vector.349", align 8
  %434 = alloca %"class.MIR::Terminator", align 8
  %435 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %436 = alloca %"class.MIR::Terminator", align 8
  %437 = alloca %"struct.MIR::Terminator::Data_Diverge", align 1
  %438 = alloca %"class.HIR::ItemPath", align 8
  %439 = alloca %"class.std::unique_ptr.537", align 8
  %440 = alloca %"class.HIR::Path", align 8
  %441 = alloca i64, align 8
  %442 = alloca ptr, align 8
  %443 = alloca ptr, align 8
  %444 = alloca %struct.Span, align 8
  %445 = alloca %"class.std::function", align 8
  %446 = alloca %class.anon.602, align 1
  %447 = alloca %"class.HIR::GenericPath", align 8
  %448 = alloca %struct.MonomorphStatePtr, align 8
  %449 = alloca %"class.HIR::Path", align 8
  %450 = alloca %"class.HIR::TypeRef", align 8
  %451 = alloca %"class.HIR::GenericPath", align 8
  %452 = alloca %class.RcString, align 8
  %453 = alloca %"struct.HIR::PathParams", align 8
  %454 = alloca %"class.HIR::Path", align 8
  %455 = alloca %"class.std::unique_ptr.560", align 8
  %456 = alloca ptr, align 8
  %457 = alloca %"class.HIR::Path", align 8
  %458 = alloca %class.TraceLog, align 8
  %459 = alloca %"class.std::function", align 8
  %460 = alloca %class.anon.604, align 1
  %461 = alloca ptr, align 8
  %462 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %463 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %464 = alloca ptr, align 8
  %465 = alloca %struct.Span, align 8
  %466 = alloca %"class.HIR::TypeRef", align 8
  %467 = alloca %"struct.std::pair", align 8
  %468 = alloca ptr, align 8
  %469 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %470 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %471 = alloca ptr, align 8
  %472 = alloca %struct.Span, align 8
  %473 = alloca %"class.HIR::Path", align 8
  %474 = alloca %"class.HIR::TypeRef", align 8
  %475 = alloca %class.RcString, align 8
  %476 = alloca %"struct.HIR::PathParams", align 8
  %477 = alloca %"class.HIR::Function", align 8
  %478 = alloca %"class.HIR::TypeRef", align 8
  %479 = alloca %"struct.std::pair.390", align 8
  %480 = alloca %"struct.HIR::Pattern", align 8
  %481 = alloca %"class.HIR::TypeRef", align 8
  %482 = alloca %"class.HIR::TypeRef", align 8
  %483 = alloca %"class.MIR::FunctionPointer", align 8
  %484 = alloca %"class.MIR::TypeResolve", align 8
  %485 = alloca %struct.FmtLambda, align 8
  %486 = alloca %"class.std::function", align 8
  %487 = alloca %class.anon.606, align 8
  %488 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %489 = alloca %"struct.MIR::LValue", align 8
  %490 = alloca %"class.MIR::RValue", align 8
  %491 = alloca %"struct.MIR::RValue::Data_Tuple", align 8
  %492 = alloca ptr, align 8
  %493 = alloca %"struct.MIR::LValue", align 8
  %494 = alloca %"struct.MIR::LValue", align 8
  %495 = alloca %"struct.MIR::LValue", align 8
  %496 = alloca %"class.HIR::TypeRef", align 8
  %497 = alloca %struct.Span, align 8
  %498 = alloca %"class.std::function", align 8
  %499 = alloca %class.anon.607, align 1
  %500 = alloca %"struct.MIR::LValue", align 8
  %501 = alloca %"class.MIR::Statement", align 8
  %502 = alloca %"struct.MIR::Statement::Data_Drop", align 8
  %503 = alloca %"struct.MIR::LValue", align 8
  %504 = alloca i8, align 1
  %505 = alloca ptr, align 8
  %506 = alloca i8, align 1
  %507 = alloca ptr, align 8
  %508 = alloca i8, align 1
  %509 = alloca ptr, align 8
  %510 = alloca i8, align 1
  %511 = alloca ptr, align 8
  %512 = alloca i8, align 1
  %513 = alloca ptr, align 8
  %514 = alloca ptr, align 8
  %515 = alloca %struct.Span, align 8
  %516 = alloca %"class.std::function", align 8
  %517 = alloca %class.anon.609, align 8
  %518 = alloca i8, align 1
  %519 = alloca ptr, align 8
  %520 = alloca ptr, align 8
  %521 = alloca %struct.Span, align 8
  %522 = alloca %"class.std::function", align 8
  %523 = alloca %class.anon.610, align 8
  %524 = alloca i8, align 1
  %525 = alloca ptr, align 8
  %526 = alloca ptr, align 8
  %527 = alloca %struct.Span, align 8
  %528 = alloca %"class.std::function", align 8
  %529 = alloca %class.anon.611, align 8
  %530 = alloca i8, align 1
  %531 = alloca ptr, align 8
  %532 = alloca ptr, align 8
  %533 = alloca %struct.Span, align 8
  %534 = alloca %"class.std::function", align 8
  %535 = alloca %class.anon.612, align 8
  %536 = alloca i8, align 1
  %537 = alloca ptr, align 8
  %538 = alloca %"class.MIR::Terminator", align 8
  %539 = alloca %"struct.MIR::Terminator::Data_Diverge", align 1
  %540 = alloca i8, align 1
  %541 = alloca ptr, align 8
  %542 = alloca i8, align 1
  %543 = alloca ptr, align 8
  %544 = alloca i8, align 1
  %545 = alloca ptr, align 8
  %546 = alloca i8, align 1
  %547 = alloca ptr, align 8
  %548 = alloca i8, align 1
  %549 = alloca ptr, align 8
  %550 = alloca %"struct.MIR::LValue", align 8
  %551 = alloca %"struct.MIR::LValue", align 8
  %552 = alloca %"struct.MIR::LValue", align 8
  %553 = alloca i8, align 1
  %554 = alloca ptr, align 8
  %555 = alloca %"struct.MIR::LValue", align 8
  %556 = alloca %"struct.MIR::LValue", align 8
  %557 = alloca %"struct.MIR::LValue", align 8
  %558 = alloca %"struct.MIR::LValue", align 8
  %559 = alloca i64, align 8
  %560 = alloca %"struct.MIR::LValue", align 8
  %561 = alloca i8, align 1
  %562 = alloca ptr, align 8
  %563 = alloca i64, align 8
  %564 = alloca %"struct.MIR::LValue", align 8
  %565 = alloca %"struct.MIR::LValue", align 8
  %566 = alloca %"struct.MIR::LValue", align 8
  %567 = alloca %"struct.MIR::LValue", align 8
  %568 = alloca i64, align 8
  %569 = alloca %"struct.MIR::LValue", align 8
  %570 = alloca %"struct.MIR::LValue", align 8
  %571 = alloca %"class.HIR::TypeRef", align 8
  %572 = alloca %"struct.MIR::LValue", align 8
  %573 = alloca %"struct.MIR::LValue", align 8
  %574 = alloca %"struct.MIR::LValue", align 8
  %575 = alloca %"class.HIR::TypeRef", align 8
  %576 = alloca %"struct.MIR::LValue", align 8
  %577 = alloca %"class.MIR::RValue", align 8
  %578 = alloca %"class.MIR::Constant", align 8
  %579 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %580 = alloca %"class.MIR::Terminator", align 8
  %581 = alloca %"struct.MIR::LValue", align 8
  %582 = alloca %"struct.MIR::LValue", align 8
  %583 = alloca %"class.MIR::RValue", align 8
  %584 = alloca %"struct.MIR::RValue::Data_BinOp", align 8
  %585 = alloca %"struct.MIR::LValue", align 8
  %586 = alloca %"class.MIR::Constant", align 8
  %587 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %588 = alloca i1, align 1
  %589 = alloca %"struct.MIR::LValue", align 8
  %590 = alloca %"class.MIR::RValue", align 8
  %591 = alloca %"struct.MIR::RValue::Data_BinOp", align 8
  %592 = alloca %"struct.MIR::LValue", align 8
  %593 = alloca %"class.MIR::Constant", align 8
  %594 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %595 = alloca i1, align 1
  %596 = alloca %"class.MIR::Terminator", align 8
  %597 = alloca %"struct.MIR::Terminator::Data_If", align 8
  %598 = alloca i8, align 1
  %599 = alloca ptr, align 8
  %600 = alloca i8, align 1
  %601 = alloca i8, align 1
  %602 = alloca ptr, align 8
  %603 = alloca i8, align 1
  %604 = alloca ptr, align 8
  %605 = alloca i8, align 1
  %606 = alloca ptr, align 8
  %607 = alloca i8, align 1
  %608 = alloca ptr, align 8
  %609 = alloca i8, align 1
  %610 = alloca ptr, align 8
  %611 = alloca %struct.Span, align 8
  %612 = alloca %"class.std::function", align 8
  %613 = alloca %class.anon.613, align 1
  %614 = alloca ptr, align 8
  %615 = alloca %struct.Span, align 8
  %616 = alloca %"class.std::function", align 8
  %617 = alloca %class.anon.615, align 8
  %618 = alloca %"struct.MIR::LValue", align 8
  %619 = alloca %"struct.MIR::LValue", align 8
  %620 = alloca %"struct.MIR::LValue", align 8
  %621 = alloca %"struct.MIR::LValue", align 8
  %622 = alloca i64, align 8
  %623 = alloca %"struct.MIR::LValue", align 8
  %624 = alloca i8, align 1
  %625 = alloca ptr, align 8
  %626 = alloca i8, align 1
  %627 = alloca ptr, align 8
  %628 = alloca ptr, align 8
  %629 = alloca i8, align 1
  %630 = alloca ptr, align 8
  %631 = alloca i8, align 1
  %632 = alloca ptr, align 8
  %633 = alloca %"class.MIR::Terminator", align 8
  %634 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %635 = alloca i8, align 1
  %636 = alloca ptr, align 8
  %637 = alloca %"struct.MIR::LValue", align 8
  %638 = alloca %"struct.MIR::LValue", align 8
  %639 = alloca %"struct.MIR::Terminator::Data_Switch", align 8
  %640 = alloca %"struct.MIR::LValue", align 8
  %641 = alloca i64, align 8
  %642 = alloca i32, align 4
  %643 = alloca %"class.MIR::Terminator", align 8
  %644 = alloca %"struct.MIR::Terminator::Data_Switch", align 8
  %645 = alloca %"struct.MIR::LValue", align 8
  %646 = alloca %"struct.MIR::LValue", align 8
  %647 = alloca i64, align 8
  %648 = alloca %"struct.MIR::LValue", align 8
  %649 = alloca %"class.MIR::Terminator", align 8
  %650 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %651 = alloca ptr, align 8
  %652 = alloca %"class.HIR::Path", align 8
  %653 = alloca %"class.HIR::TypeRef", align 8
  %654 = alloca %"class.HIR::GenericPath", align 8
  %655 = alloca %"struct.HIR::SimplePath", align 8
  %656 = alloca %class.RcString, align 8
  %657 = alloca %"struct.HIR::PathParams", align 8
  %658 = alloca %struct.MonomorphState, align 8
  %659 = alloca %"class.HIR::Path", align 8
  %660 = alloca %"class.HIR::TypeRef", align 8
  %661 = alloca %"class.HIR::GenericPath", align 8
  %662 = alloca %"struct.HIR::SimplePath", align 8
  %663 = alloca %class.RcString, align 8
  %664 = alloca %"struct.HIR::PathParams", align 8
  %665 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %666 = alloca %struct.Span, align 8
  %667 = alloca %"class.std::function", align 8
  %668 = alloca %class.anon.626, align 8
  %669 = alloca %struct.Span, align 8
  %670 = alloca %"class.std::function", align 8
  %671 = alloca %class.anon.627, align 1
  %672 = alloca %"class.MIR::Terminator", align 8
  %673 = alloca %"struct.MIR::Terminator::Data_Return", align 1
  %674 = alloca %"class.HIR::ItemPath", align 8
  %675 = alloca %"class.std::unique_ptr.537", align 8
  %676 = alloca ptr, align 8
  %677 = alloca %"class.HIR::Path", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 576, ptr %5) #0
  %678 = load ptr, ptr %3, align 8, !tbaa !5
  %679 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_15StateC2ERN3HIR5CrateERK9TransList(ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(944) %678, ptr noundef nonnull align 8 dereferenceable(576) %679)
  %680 = load i32, ptr @gTargetVersion, align 4, !tbaa !9
  %681 = icmp sge i32 %680, 1
  br i1 %681, label %682, label %911

682:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #0
  %683 = load ptr, ptr %4, align 8, !tbaa !5
  %684 = getelementptr inbounds %class.TransList, ptr %683, i32 0, i32 8
  store ptr %684, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #0
  %685 = load ptr, ptr %6, align 8, !tbaa !5
  %686 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %685) #0
  %687 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %7, i32 0, i32 0
  store ptr %686, ptr %687, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #0
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %688) #0
  %690 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %8, i32 0, i32 0
  store ptr %689, ptr %690, align 8
  br label %691

691:                                              ; preds = %708, %682
  %692 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #0
  br i1 %692, label %694, label %693

693:                                              ; preds = %691
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #0
  br label %728

694:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #0
  %695 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #0
  store ptr %695, ptr %9, align 8, !tbaa !5
  %696 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #0
  %697 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %697)
          to label %698 unwind label %710

698:                                              ; preds = %694
  %699 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %696, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %700 unwind label %714

700:                                              ; preds = %698
  %701 = getelementptr inbounds { ptr, i8 }, ptr %13, i32 0, i32 0
  %702 = extractvalue { ptr, i8 } %699, 0
  store ptr %702, ptr %701, align 8
  %703 = getelementptr inbounds { ptr, i8 }, ptr %13, i32 0, i32 1
  %704 = extractvalue { ptr, i8 } %699, 1
  store i8 %704, ptr %703, align 8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  %705 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %14, ptr noundef nonnull align 8 dereferenceable(8) %705)
          to label %706 unwind label %719

706:                                              ; preds = %700
  invoke void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef %14)
          to label %707 unwind label %723

707:                                              ; preds = %706
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #0
  br label %708

708:                                              ; preds = %707
  %709 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #0
  br label %691

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

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

718:                                              ; preds = %714, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  br label %727

719:                                              ; preds = %700
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %11, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %12, align 4
  br label %727

723:                                              ; preds = %706
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %11, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #0
  br label %727

727:                                              ; preds = %723, %719, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #0
  br label %6578

728:                                              ; preds = %693
  br label %729

729:                                              ; preds = %739, %728
  %730 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 3
  %731 = call noundef zeroext i1 @_ZNKSt5dequeIN3HIR7TypeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %730) #0
  %732 = xor i1 %731, true
  br i1 %732, label %733, label %754

733:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #0
  %734 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 3
  %735 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIN3HIR7TypeRefESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %734) #0
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %735)
          to label %736 unwind label %740

736:                                              ; preds = %733
  %737 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 3
  call void @_ZNSt5dequeIN3HIR7TypeRefESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %737) #0
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %738 unwind label %744

738:                                              ; preds = %736
  invoke void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef %16)
          to label %739 unwind label %748

739:                                              ; preds = %738
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  br label %729, !llvm.loop !11

740:                                              ; preds = %733
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %11, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %12, align 4
  br label %753

744:                                              ; preds = %736
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %11, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %12, align 4
  br label %752

748:                                              ; preds = %738
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %11, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #0
  br label %752

752:                                              ; preds = %748, %744
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #0
  br label %753

753:                                              ; preds = %752, %740
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  br label %6578

754:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #0
  %755 = load ptr, ptr %3, align 8, !tbaa !5
  %756 = getelementptr inbounds %"class.HIR::Crate", ptr %755, i32 0, i32 7
  %757 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 5
  %758 = invoke ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %756, ptr noundef nonnull align 8 dereferenceable(8) %757)
          to label %759 unwind label %771

759:                                              ; preds = %754
  %760 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %17, i32 0, i32 0
  store ptr %758, ptr %760, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %761 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 4
  store ptr %761, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #0
  %762 = load ptr, ptr %18, align 8, !tbaa !5
  %763 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %762) #0
  %764 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %19, i32 0, i32 0
  store ptr %763, ptr %764, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %765) #0
  %767 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %20, i32 0, i32 0
  store ptr %766, ptr %767, align 8
  br label %768

768:                                              ; preds = %904, %759
  %769 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #0
  br i1 %769, label %775, label %770

770:                                              ; preds = %768
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %909

771:                                              ; preds = %754
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %11, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %12, align 4
  br label %910

775:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #0
  %776 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #0
  store ptr %776, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  %777 = load ptr, ptr %3, align 8, !tbaa !5
  %778 = getelementptr inbounds %"class.HIR::Crate", ptr %777, i32 0, i32 7
  %779 = call ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %778) #0
  %780 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %22, i32 0, i32 0
  store ptr %779, ptr %780, align 8
  %781 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_5Crate9ImplGroupISt10unique_ptrINS1_9TraitImplESt14default_deleteIS7_EEEEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  br i1 %781, label %782, label %783

782:                                              ; preds = %775
  br label %785

783:                                              ; preds = %775
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.9, i32 noundef 380, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

784:                                              ; No predecessors!
  br label %785

785:                                              ; preds = %784, %782
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #0
  %786 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %24, ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %787 unwind label %812

787:                                              ; preds = %785
  %788 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %788)
          to label %789 unwind label %816

789:                                              ; preds = %787
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %26)
          to label %790 unwind label %820

790:                                              ; preds = %789
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef @.str)
          to label %791 unwind label %824

791:                                              ; preds = %790
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %792 unwind label %828

792:                                              ; preds = %791
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %23, ptr noundef %24, ptr noundef %25, ptr noundef %27, ptr noundef %28)
          to label %793 unwind label %832

793:                                              ; preds = %792
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %30, ptr noundef nonnull align 8 dereferenceable(88) %23) #0
  %795 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %794, ptr noundef %30)
          to label %796 unwind label %840

796:                                              ; preds = %793
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #0
  store ptr %795, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  %797 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_5Crate9ImplGroupISt10unique_ptrINS1_9TraitImplESt14default_deleteIS7_EEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #0
  %798 = getelementptr inbounds %"struct.std::pair.232", ptr %797, i32 0, i32 1
  %799 = load ptr, ptr %21, align 8, !tbaa !5
  %800 = invoke noundef ptr @_ZNK3HIR5Crate9ImplGroupISt10unique_ptrINS_9TraitImplESt14default_deleteIS3_EEE17get_list_for_typeERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %798, ptr noundef nonnull align 8 dereferenceable(8) %799)
          to label %801 unwind label %844

801:                                              ; preds = %796
  store ptr %800, ptr %31, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %801
  %803 = load ptr, ptr %31, align 8, !tbaa !5
  %804 = icmp ne ptr %803, null
  br i1 %804, label %861, label %805

805:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %806 unwind label %848

806:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %807 = getelementptr inbounds %class.anon, ptr %34, i32 0, i32 0
  %808 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %808, ptr %807, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef %33)
          to label %809 unwind label %852

809:                                              ; preds = %806
  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
  %810 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %810, ptr noundef @.str.10)
          to label %811 unwind label %857

811:                                              ; preds = %809
  invoke void @__cxa_throw(ptr %810, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %844

812:                                              ; preds = %785
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %11, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %12, align 4
  br label %908

816:                                              ; preds = %787
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %11, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %12, align 4
  br label %839

820:                                              ; preds = %789
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %11, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %12, align 4
  br label %838

824:                                              ; preds = %790
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %11, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %12, align 4
  br label %837

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

832:                                              ; preds = %792
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %11, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #0
  br label %836

836:                                              ; preds = %832, %828
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #0
  br label %837

837:                                              ; preds = %836, %824
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  br label %838

838:                                              ; preds = %837, %820
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #0
  br label %839

839:                                              ; preds = %838, %816
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  br label %908

840:                                              ; preds = %793
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %11, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #0
  br label %907

844:                                              ; preds = %811, %796
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %11, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %12, align 4
  br label %906

848:                                              ; preds = %805
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %11, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %12, align 4
  br label %856

852:                                              ; preds = %806
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %11, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %12, 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 %856

856:                                              ; preds = %852, %848
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %906

857:                                              ; preds = %809
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %11, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %12, align 4
  call void @__cxa_free_exception(ptr %810) #0
  br label %906

861:                                              ; preds = %802
  br label %862

862:                                              ; preds = %861
  br label %863

863:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #0
  %864 = load ptr, ptr %31, align 8, !tbaa !5
  %865 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %864) #0
  %866 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %865, ptr %866, align 8
  %867 = load ptr, ptr %31, align 8, !tbaa !5
  %868 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %867) #0
  %869 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %38, i32 0, i32 0
  store ptr %868, ptr %869, align 8
  %870 = getelementptr inbounds %class.anon.245, ptr %39, i32 0, i32 0
  %871 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %871, ptr %870, align 8, !tbaa !5
  %872 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  %873 = load ptr, ptr %872, align 8
  %874 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %38, i32 0, i32 0
  %875 = load ptr, ptr %874, align 8
  %876 = getelementptr inbounds %class.anon.245, ptr %39, i32 0, i32 0
  %877 = load ptr, ptr %876, align 8
  %878 = invoke ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS4_EESt6vectorIS7_SaIS7_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_23ET_SJ_SJ_T0_"(ptr %873, ptr %875, ptr %877)
          to label %879 unwind label %889

879:                                              ; preds = %863
  %880 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %878, ptr %880, align 8
  %881 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  %882 = call noundef nonnull align 8 dereferenceable(328) ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %881) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  store ptr %882, ptr %35, align 8, !tbaa !5
  %883 = load ptr, ptr %35, align 8, !tbaa !5
  %884 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %883, i32 0, i32 3
  %885 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %884) #0
  %886 = icmp eq i64 %885, 1
  br i1 %886, label %887, label %888

887:                                              ; preds = %879
  br label %894

888:                                              ; preds = %879
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.9, i32 noundef 390, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

889:                                              ; preds = %863
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %11, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  br label %906

893:                                              ; No predecessors!
  br label %894

894:                                              ; preds = %893, %887
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  %896 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %895, i32 0, i32 3
  %897 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %896) #0
  %898 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.294", ptr %40, i32 0, i32 0
  store ptr %897, ptr %898, align 8
  %899 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #0
  %900 = getelementptr inbounds %"struct.std::pair.295", ptr %899, i32 0, i32 1
  %901 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %900, i32 0, i32 1
  %902 = load ptr, ptr %29, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.TransList_Function, ptr %902, i32 0, i32 1
  store ptr %901, ptr %903, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  br label %904

904:                                              ; preds = %894
  %905 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #0
  br label %768

906:                                              ; preds = %889, %857, %856, %844
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  br label %907

907:                                              ; preds = %906, %840
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #0
  br label %908

908:                                              ; preds = %907, %839, %812
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %910

909:                                              ; preds = %770
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  br label %911

910:                                              ; preds = %908, %771
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  br label %6578

911:                                              ; preds = %909, %2
  %912 = load ptr, ptr %4, align 8, !tbaa !5
  %913 = getelementptr inbounds %class.TransList, ptr %912, i32 0, i32 9
  %914 = call noundef zeroext i1 @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %913) #0
  br i1 %914, label %1280, label %915

915:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %916 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %917 unwind label %931

917:                                              ; preds = %915
  %918 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %916, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef @.str.12)
          to label %919 unwind label %935

919:                                              ; preds = %917
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  store ptr %918, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %class.TransList, ptr %920, i32 0, i32 9
  store ptr %921, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  %922 = load ptr, ptr %43, align 8, !tbaa !5
  %923 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %922) #0
  %924 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %44, i32 0, i32 0
  store ptr %923, ptr %924, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %925 = load ptr, ptr %43, align 8, !tbaa !5
  %926 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %925) #0
  %927 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %45, i32 0, i32 0
  store ptr %926, ptr %927, align 8
  br label %928

928:                                              ; preds = %1266, %919
  %929 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #0
  br i1 %929, label %940, label %930

930:                                              ; preds = %928
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %1278

931:                                              ; preds = %915
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %11, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %12, align 4
  br label %939

935:                                              ; preds = %917
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %11, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %12, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  br label %939

939:                                              ; preds = %935, %931
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  br label %1279

940:                                              ; preds = %928
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #0
  %941 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  store ptr %941, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %48)
          to label %942 unwind label %1052

942:                                              ; preds = %940
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %47, i32 noundef 0, ptr noundef %48)
          to label %943 unwind label %1056

943:                                              ; preds = %942
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #0
  call void @llvm.lifetime.start.p0(i64 96, ptr %49) #0
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %49)
          to label %944 unwind label %1060

944:                                              ; preds = %943
  call void @llvm.lifetime.start.p0(i64 192, ptr %50) #0
  invoke void @_ZN3MIR10BasicBlockC2Ev(ptr noundef nonnull align 8 dereferenceable(192) %50)
          to label %945 unwind label %1064

945:                                              ; preds = %944
  %946 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %50, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %51) #0
  %947 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %52, i32 0, i32 0
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %947)
          to label %948 unwind label %1068

948:                                              ; preds = %945
  store i1 true, ptr %54, align 1
  %949 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %52, i32 0, i32 1
  %950 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %53, i32 0, i32 0
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %950, i32 noundef 0)
          to label %951 unwind label %1072

951:                                              ; preds = %948
  %952 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %53, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %952, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %953 unwind label %1076

953:                                              ; preds = %951
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %949, ptr noundef %53)
          to label %954 unwind label %1080

954:                                              ; preds = %953
  store i1 false, ptr %54, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %51, ptr noundef %52)
          to label %955 unwind label %1084

955:                                              ; preds = %954
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %946, ptr noundef nonnull align 8 dereferenceable(152) %51)
          to label %956 unwind label %1088

956:                                              ; preds = %955
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %51) #0
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %52) #0
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #0
  call void @llvm.lifetime.end.p0(i64 152, ptr %51) #0
  call void @llvm.lifetime.start.p0(i64 168, ptr %55) #0
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %55)
          to label %957 unwind label %1099

957:                                              ; preds = %956
  %958 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %50, i32 0, i32 1
  %959 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %958, ptr noundef nonnull align 8 dereferenceable(168) %55)
          to label %960 unwind label %1103

960:                                              ; preds = %957
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %55) #0
  call void @llvm.lifetime.end.p0(i64 168, ptr %55) #0
  %961 = getelementptr inbounds %"class.MIR::Function", ptr %49, i32 0, i32 2
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %961, ptr noundef nonnull align 8 dereferenceable(192) %50)
          to label %962 unwind label %1108

962:                                              ; preds = %960
  call void @llvm.lifetime.start.p0(i64 352, ptr %57) #0
  %963 = getelementptr inbounds %"class.HIR::GenericParams", ptr %58, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %963, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %963) #0
  %964 = getelementptr inbounds %"class.HIR::GenericParams", ptr %58, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %964, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %964) #0
  %965 = getelementptr inbounds %"class.HIR::GenericParams", ptr %58, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %965, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %965) #0
  %966 = getelementptr inbounds %"class.HIR::GenericParams", ptr %58, i32 0, i32 3
  call void @llvm.memset.p0.i64(ptr align 8 %966, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %966) #0
  call void @llvm.lifetime.start.p0(i64 224, ptr %60) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %61) #0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_selfE)
          to label %967 unwind label %1112

967:                                              ; preds = %962
  invoke void @_ZN3HIR14PatternBindingC2EbNS0_4TypeE8RcStringj(ptr noundef nonnull align 8 dereferenceable(24) %62, i1 noundef zeroext false, i32 noundef 0, ptr noundef %63, i32 noundef 0)
          to label %968 unwind label %1116

968:                                              ; preds = %967
  invoke void @_ZN3HIR7Pattern4Data8make_AnyENS1_8Data_AnyE(ptr dead_on_unwind writable sret(%"class.HIR::Pattern::Data") align 8 %64)
          to label %969 unwind label %1120

969:                                              ; preds = %968
  invoke void @_ZN3HIR7PatternC2ENS_14PatternBindingENS0_4DataE(ptr noundef nonnull align 8 dereferenceable(212) %61, ptr noundef %62, ptr noundef %64)
          to label %970 unwind label %1124

970:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #0
  %971 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %66, ptr noundef nonnull align 8 dereferenceable(8) %971)
          to label %972 unwind label %1128

972:                                              ; preds = %970
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %60, ptr noundef nonnull align 8 dereferenceable(212) %61, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %973 unwind label %1132

973:                                              ; preds = %972
  invoke void @_Z9make_vec1ISt4pairIN3HIR7PatternENS1_7TypeRefEEESt6vectorIT_SaIS6_EEOS6_(ptr dead_on_unwind writable sret(%"class.std::vector.301") align 8 %59, ptr noundef nonnull align 8 dereferenceable(224) %60)
          to label %974 unwind label %1136

974:                                              ; preds = %973
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %975 unwind label %1140

975:                                              ; preds = %974
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %68)
          to label %976 unwind label %1144

976:                                              ; preds = %975
  invoke void @_ZN3HIR8FunctionC2ENS0_8ReceiverENS_13GenericParamsESt6vectorISt4pairINS_7PatternENS_7TypeRefEESaIS7_EES6_NS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(352) %57, i32 noundef 1, ptr noundef %58, ptr noundef %59, ptr noundef %67, ptr noundef %68)
          to label %977 unwind label %1148

977:                                              ; preds = %976
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %68) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #0
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #0
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %60) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %61) #0
  call void @_ZN3HIR7Pattern4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %64) #0
  call void @_ZN3HIR14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %61) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %60) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %58) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #0
  %978 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %979 unwind label %1161

979:                                              ; preds = %977
  invoke void @_ZN3MIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %978, ptr noundef nonnull align 8 dereferenceable(96) %49)
          to label %980 unwind label %1165

980:                                              ; preds = %979
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef %978)
          to label %981 unwind label %1161

981:                                              ; preds = %980
  %982 = getelementptr inbounds %"class.HIR::Function", ptr %57, i32 0, i32 11
  %983 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %982, i32 0, i32 3
  %984 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %983, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %985 unwind label %1169

985:                                              ; preds = %981
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  call void @llvm.lifetime.start.p0(i64 328, ptr %70) #0
  invoke void @_ZN3HIR9TraitImplC2Ev(ptr noundef nonnull align 8 dereferenceable(328) %70)
          to label %986 unwind label %1174

986:                                              ; preds = %985
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #0
  %987 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %71, ptr noundef nonnull align 8 dereferenceable(8) %987)
          to label %988 unwind label %1178

988:                                              ; preds = %986
  %989 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %70, i32 0, i32 2
  %990 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %989, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %991 unwind label %1182

991:                                              ; preds = %988
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #0
  %992 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %70, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 368, ptr %72) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %73, ptr noundef @.str.13)
          to label %993 unwind label %1187

993:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 360, ptr %74) #0
  %994 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %74, i32 0, i32 0
  store i8 0, ptr %994, align 8, !tbaa !36
  %995 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %74, i32 0, i32 1
  invoke void @_ZN3HIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(352) %995, ptr noundef nonnull align 8 dereferenceable(352) %57)
          to label %996 unwind label %1191

996:                                              ; preds = %993
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.426") align 8 %72, ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(360) %74)
          to label %997 unwind label %1195

997:                                              ; preds = %996
  %998 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %992, ptr noundef nonnull align 8 dereferenceable(368) %72)
          to label %999 unwind label %1199

999:                                              ; preds = %997
  %1000 = getelementptr inbounds { ptr, i8 }, ptr %75, i32 0, i32 0
  %1001 = extractvalue { ptr, i8 } %998, 0
  store ptr %1001, ptr %1000, align 8
  %1002 = getelementptr inbounds { ptr, i8 }, ptr %75, i32 0, i32 1
  %1003 = extractvalue { ptr, i8 } %998, 1
  store i8 %1003, ptr %1002, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %72) #0
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %74) #0
  call void @llvm.lifetime.end.p0(i64 360, ptr %74) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  call void @llvm.lifetime.end.p0(i64 368, ptr %72) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #0
  %1004 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 0
  %1005 = load ptr, ptr %1004, align 8, !tbaa !76
  %1006 = getelementptr inbounds %"class.HIR::Crate", ptr %1005, i32 0, i32 7
  %1007 = load ptr, ptr %41, align 8, !tbaa !5
  %1008 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %1006, ptr noundef nonnull align 8 dereferenceable(8) %1007)
          to label %1009 unwind label %1206

1009:                                             ; preds = %999
  %1010 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %70, i32 0, i32 2
  %1011 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR5Crate9ImplGroupISt10unique_ptrINS_9TraitImplESt14default_deleteIS3_EEE21get_list_for_type_mutERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %1008, ptr noundef nonnull align 8 dereferenceable(8) %1010)
          to label %1012 unwind label %1206

1012:                                             ; preds = %1009
  store ptr %1011, ptr %76, align 8, !tbaa !5
  %1013 = load ptr, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  invoke void @_Z15make_unique_ptrIN3HIR9TraitImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.246") align 8 %77, ptr noundef nonnull align 8 dereferenceable(328) %70)
          to label %1014 unwind label %1210

1014:                                             ; preds = %1012
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1013, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %1015 unwind label %1214

1015:                                             ; preds = %1014
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  %1016 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 0
  %1017 = load ptr, ptr %1016, align 8, !tbaa !76
  %1018 = getelementptr inbounds %"class.HIR::Crate", ptr %1017, i32 0, i32 11
  %1019 = load ptr, ptr %41, align 8, !tbaa !5
  %1020 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupIPKNS0_9TraitImplEEESt4lessIS1_ESaISt4pairIKS1_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %1018, ptr noundef nonnull align 8 dereferenceable(8) %1019)
          to label %1021 unwind label %1206

1021:                                             ; preds = %1015
  %1022 = load ptr, ptr %76, align 8, !tbaa !5
  %1023 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1022) #0
  %1024 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1023) #0
  %1025 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %1024, i32 0, i32 2
  %1026 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR5Crate9ImplGroupIPKNS_9TraitImplEE21get_list_for_type_mutERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %1020, ptr noundef nonnull align 8 dereferenceable(8) %1025)
          to label %1027 unwind label %1206

1027:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #0
  %1028 = load ptr, ptr %76, align 8, !tbaa !5
  %1029 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1028) #0
  %1030 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1029) #0
  store ptr %1030, ptr %78, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3HIR9TraitImplESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1026, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %1031 unwind label %1219

1031:                                             ; preds = %1027
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  call void @llvm.lifetime.start.p0(i64 88, ptr %79) #0
  %1032 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(8) %1032)
          to label %1033 unwind label %1223

1033:                                             ; preds = %1031
  %1034 = load ptr, ptr %41, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %1034)
          to label %1035 unwind label %1227

1035:                                             ; preds = %1033
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef %82)
          to label %1036 unwind label %1231

1036:                                             ; preds = %1035
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef @.str.13)
          to label %1037 unwind label %1235

1037:                                             ; preds = %1036
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %1038 unwind label %1239

1038:                                             ; preds = %1037
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %79, ptr noundef %80, ptr noundef %81, ptr noundef %83, ptr noundef %84)
          to label %1039 unwind label %1243

1039:                                             ; preds = %1038
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %86, ptr noundef nonnull align 8 dereferenceable(88) %79) #0
  %1041 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1040, ptr noundef %86)
          to label %1042 unwind label %1251

1042:                                             ; preds = %1039
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %86) #0
  store ptr %1041, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %1043 = load ptr, ptr %76, align 8, !tbaa !5
  %1044 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1043) #0
  %1045 = call noundef nonnull align 8 dereferenceable(328) ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1044) #0
  store ptr %1045, ptr %87, align 8, !tbaa !5
  %1046 = load ptr, ptr %87, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %1046, i32 0, i32 3
  %1048 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %1047) #0
  %1049 = icmp eq i64 %1048, 1
  br i1 %1049, label %1050, label %1051

1050:                                             ; preds = %1042
  br label %1256

1051:                                             ; preds = %1042
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.9, i32 noundef 443, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

1052:                                             ; preds = %940
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %11, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %12, align 4
  br label %1277

1056:                                             ; preds = %942
  %1057 = landingpad { ptr, i32 }
          cleanup
  %1058 = extractvalue { ptr, i32 } %1057, 0
  store ptr %1058, ptr %11, align 8
  %1059 = extractvalue { ptr, i32 } %1057, 1
  store i32 %1059, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #0
  br label %1277

1060:                                             ; preds = %943
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %11, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %12, align 4
  br label %1276

1064:                                             ; preds = %944
  %1065 = landingpad { ptr, i32 }
          cleanup
  %1066 = extractvalue { ptr, i32 } %1065, 0
  store ptr %1066, ptr %11, align 8
  %1067 = extractvalue { ptr, i32 } %1065, 1
  store i32 %1067, ptr %12, align 4
  br label %1275

1068:                                             ; preds = %945
  %1069 = landingpad { ptr, i32 }
          cleanup
  %1070 = extractvalue { ptr, i32 } %1069, 0
  store ptr %1070, ptr %11, align 8
  %1071 = extractvalue { ptr, i32 } %1069, 1
  store i32 %1071, ptr %12, align 4
  br label %1098

1072:                                             ; preds = %948
  %1073 = landingpad { ptr, i32 }
          cleanup
  %1074 = extractvalue { ptr, i32 } %1073, 0
  store ptr %1074, ptr %11, align 8
  %1075 = extractvalue { ptr, i32 } %1073, 1
  store i32 %1075, ptr %12, align 4
  br label %1094

1076:                                             ; preds = %951
  %1077 = landingpad { ptr, i32 }
          cleanup
  %1078 = extractvalue { ptr, i32 } %1077, 0
  store ptr %1078, ptr %11, align 8
  %1079 = extractvalue { ptr, i32 } %1077, 1
  store i32 %1079, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %950) #0
  br label %1094

1080:                                             ; preds = %953
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %11, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %12, align 4
  br label %1093

1084:                                             ; preds = %954
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %11, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %12, align 4
  br label %1092

1088:                                             ; preds = %955
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %11, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %51) #0
  br label %1092

1092:                                             ; preds = %1088, %1084
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %52) #0
  br label %1093

1093:                                             ; preds = %1092, %1080
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #0
  br label %1094

1094:                                             ; preds = %1093, %1076, %1072
  %1095 = load i1, ptr %54, align 1
  br i1 %1095, label %1096, label %1097

1096:                                             ; preds = %1094
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %947) #0
  br label %1097

1097:                                             ; preds = %1096, %1094
  br label %1098

1098:                                             ; preds = %1097, %1068
  call void @llvm.lifetime.end.p0(i64 152, ptr %51) #0
  br label %1274

1099:                                             ; preds = %956
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %11, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %12, align 4
  br label %1107

1103:                                             ; preds = %957
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %11, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %55) #0
  br label %1107

1107:                                             ; preds = %1103, %1099
  call void @llvm.lifetime.end.p0(i64 168, ptr %55) #0
  br label %1274

1108:                                             ; preds = %960
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %11, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %12, align 4
  br label %1274

1112:                                             ; preds = %962
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %11, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %12, align 4
  br label %1160

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

1120:                                             ; preds = %968
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %11, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %12, align 4
  br label %1158

1124:                                             ; preds = %969
  %1125 = landingpad { ptr, i32 }
          cleanup
  %1126 = extractvalue { ptr, i32 } %1125, 0
  store ptr %1126, ptr %11, align 8
  %1127 = extractvalue { ptr, i32 } %1125, 1
  store i32 %1127, ptr %12, align 4
  br label %1157

1128:                                             ; preds = %970
  %1129 = landingpad { ptr, i32 }
          cleanup
  %1130 = extractvalue { ptr, i32 } %1129, 0
  store ptr %1130, ptr %11, align 8
  %1131 = extractvalue { ptr, i32 } %1129, 1
  store i32 %1131, ptr %12, align 4
  br label %1156

1132:                                             ; preds = %972
  %1133 = landingpad { ptr, i32 }
          cleanup
  %1134 = extractvalue { ptr, i32 } %1133, 0
  store ptr %1134, ptr %11, align 8
  %1135 = extractvalue { ptr, i32 } %1133, 1
  store i32 %1135, ptr %12, align 4
  br label %1155

1136:                                             ; preds = %973
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %11, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %12, align 4
  br label %1154

1140:                                             ; preds = %974
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %11, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %12, align 4
  br label %1153

1144:                                             ; preds = %975
  %1145 = landingpad { ptr, i32 }
          cleanup
  %1146 = extractvalue { ptr, i32 } %1145, 0
  store ptr %1146, ptr %11, align 8
  %1147 = extractvalue { ptr, i32 } %1145, 1
  store i32 %1147, ptr %12, align 4
  br label %1152

1148:                                             ; preds = %976
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %11, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %12, align 4
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %68) #0
  br label %1152

1152:                                             ; preds = %1148, %1144
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #0
  br label %1153

1153:                                             ; preds = %1152, %1140
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #0
  br label %1154

1154:                                             ; preds = %1153, %1136
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %60) #0
  br label %1155

1155:                                             ; preds = %1154, %1132
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  br label %1156

1156:                                             ; preds = %1155, %1128
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %61) #0
  br label %1157

1157:                                             ; preds = %1156, %1124
  call void @_ZN3HIR7Pattern4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %64) #0
  br label %1158

1158:                                             ; preds = %1157, %1120
  call void @_ZN3HIR14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #0
  br label %1159

1159:                                             ; preds = %1158, %1116
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #0
  br label %1160

1160:                                             ; preds = %1159, %1112
  call void @llvm.lifetime.end.p0(i64 216, ptr %61) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %60) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %58) #0
  br label %1273

1161:                                             ; preds = %980, %977
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %11, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %12, align 4
  br label %1173

1165:                                             ; preds = %979
  %1166 = landingpad { ptr, i32 }
          cleanup
  %1167 = extractvalue { ptr, i32 } %1166, 0
  store ptr %1167, ptr %11, align 8
  %1168 = extractvalue { ptr, i32 } %1166, 1
  store i32 %1168, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %978, i64 noundef 96) #15
  br label %1173

1169:                                             ; preds = %981
  %1170 = landingpad { ptr, i32 }
          cleanup
  %1171 = extractvalue { ptr, i32 } %1170, 0
  store ptr %1171, ptr %11, align 8
  %1172 = extractvalue { ptr, i32 } %1170, 1
  store i32 %1172, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #0
  br label %1173

1173:                                             ; preds = %1169, %1165, %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  br label %1272

1174:                                             ; preds = %985
  %1175 = landingpad { ptr, i32 }
          cleanup
  %1176 = extractvalue { ptr, i32 } %1175, 0
  store ptr %1176, ptr %11, align 8
  %1177 = extractvalue { ptr, i32 } %1175, 1
  store i32 %1177, ptr %12, align 4
  br label %1271

1178:                                             ; preds = %986
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %11, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %12, align 4
  br label %1186

1182:                                             ; preds = %988
  %1183 = landingpad { ptr, i32 }
          cleanup
  %1184 = extractvalue { ptr, i32 } %1183, 0
  store ptr %1184, ptr %11, align 8
  %1185 = extractvalue { ptr, i32 } %1183, 1
  store i32 %1185, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #0
  br label %1186

1186:                                             ; preds = %1182, %1178
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #0
  br label %1270

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

1191:                                             ; preds = %993
  %1192 = landingpad { ptr, i32 }
          cleanup
  %1193 = extractvalue { ptr, i32 } %1192, 0
  store ptr %1193, ptr %11, align 8
  %1194 = extractvalue { ptr, i32 } %1192, 1
  store i32 %1194, ptr %12, align 4
  br label %1204

1195:                                             ; preds = %996
  %1196 = landingpad { ptr, i32 }
          cleanup
  %1197 = extractvalue { ptr, i32 } %1196, 0
  store ptr %1197, ptr %11, align 8
  %1198 = extractvalue { ptr, i32 } %1196, 1
  store i32 %1198, ptr %12, align 4
  br label %1203

1199:                                             ; preds = %997
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %11, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %12, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %72) #0
  br label %1203

1203:                                             ; preds = %1199, %1195
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %74) #0
  br label %1204

1204:                                             ; preds = %1203, %1191
  call void @llvm.lifetime.end.p0(i64 360, ptr %74) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #0
  br label %1205

1205:                                             ; preds = %1204, %1187
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  call void @llvm.lifetime.end.p0(i64 368, ptr %72) #0
  br label %1270

1206:                                             ; preds = %1021, %1015, %1009, %999
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %11, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %12, align 4
  br label %1269

1210:                                             ; preds = %1012
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %11, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %12, align 4
  br label %1218

1214:                                             ; preds = %1014
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %11, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #0
  br label %1218

1218:                                             ; preds = %1214, %1210
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  br label %1269

1219:                                             ; preds = %1027
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %11, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  br label %1269

1223:                                             ; preds = %1031
  %1224 = landingpad { ptr, i32 }
          cleanup
  %1225 = extractvalue { ptr, i32 } %1224, 0
  store ptr %1225, ptr %11, align 8
  %1226 = extractvalue { ptr, i32 } %1224, 1
  store i32 %1226, ptr %12, align 4
  br label %1268

1227:                                             ; preds = %1033
  %1228 = landingpad { ptr, i32 }
          cleanup
  %1229 = extractvalue { ptr, i32 } %1228, 0
  store ptr %1229, ptr %11, align 8
  %1230 = extractvalue { ptr, i32 } %1228, 1
  store i32 %1230, ptr %12, align 4
  br label %1250

1231:                                             ; preds = %1035
  %1232 = landingpad { ptr, i32 }
          cleanup
  %1233 = extractvalue { ptr, i32 } %1232, 0
  store ptr %1233, ptr %11, align 8
  %1234 = extractvalue { ptr, i32 } %1232, 1
  store i32 %1234, ptr %12, align 4
  br label %1249

1235:                                             ; preds = %1036
  %1236 = landingpad { ptr, i32 }
          cleanup
  %1237 = extractvalue { ptr, i32 } %1236, 0
  store ptr %1237, ptr %11, align 8
  %1238 = extractvalue { ptr, i32 } %1236, 1
  store i32 %1238, ptr %12, align 4
  br label %1248

1239:                                             ; preds = %1037
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %11, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %12, align 4
  br label %1247

1243:                                             ; preds = %1038
  %1244 = landingpad { ptr, i32 }
          cleanup
  %1245 = extractvalue { ptr, i32 } %1244, 0
  store ptr %1245, ptr %11, align 8
  %1246 = extractvalue { ptr, i32 } %1244, 1
  store i32 %1246, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #0
  br label %1247

1247:                                             ; preds = %1243, %1239
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  br label %1248

1248:                                             ; preds = %1247, %1235
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #0
  br label %1249

1249:                                             ; preds = %1248, %1231
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  br label %1250

1250:                                             ; preds = %1249, %1227
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #0
  br label %1268

1251:                                             ; preds = %1039
  %1252 = landingpad { ptr, i32 }
          cleanup
  %1253 = extractvalue { ptr, i32 } %1252, 0
  store ptr %1253, ptr %11, align 8
  %1254 = extractvalue { ptr, i32 } %1252, 1
  store i32 %1254, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %86) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #0
  br label %1268

1255:                                             ; No predecessors!
  br label %1256

1256:                                             ; preds = %1255, %1050
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #0
  %1257 = load ptr, ptr %87, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %1257, i32 0, i32 3
  %1259 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1258) #0
  %1260 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.294", ptr %88, i32 0, i32 0
  store ptr %1259, ptr %1260, align 8
  %1261 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %88) #0
  %1262 = getelementptr inbounds %"struct.std::pair.295", ptr %1261, i32 0, i32 1
  %1263 = getelementptr inbounds %"struct.HIR::TraitImpl::ImplEnt", ptr %1262, i32 0, i32 1
  %1264 = load ptr, ptr %85, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.TransList_Function, ptr %1264, i32 0, i32 1
  store ptr %1263, ptr %1265, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %79) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %70) #0
  call void @llvm.lifetime.end.p0(i64 328, ptr %70) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %57) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %57) #0
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %50) #0
  call void @llvm.lifetime.end.p0(i64 192, ptr %50) #0
  call void @_ZN3MIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %49) #0
  call void @llvm.lifetime.end.p0(i64 96, ptr %49) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  br label %1266

1266:                                             ; preds = %1256
  %1267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  br label %928

1268:                                             ; preds = %1251, %1250, %1223
  call void @llvm.lifetime.end.p0(i64 88, ptr %79) #0
  br label %1269

1269:                                             ; preds = %1268, %1219, %1218, %1206
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  br label %1270

1270:                                             ; preds = %1269, %1205, %1186
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %70) #0
  br label %1271

1271:                                             ; preds = %1270, %1174
  call void @llvm.lifetime.end.p0(i64 328, ptr %70) #0
  br label %1272

1272:                                             ; preds = %1271, %1173
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %57) #0
  br label %1273

1273:                                             ; preds = %1272, %1160
  call void @llvm.lifetime.end.p0(i64 352, ptr %57) #0
  br label %1274

1274:                                             ; preds = %1273, %1108, %1107, %1098
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %50) #0
  br label %1275

1275:                                             ; preds = %1274, %1064
  call void @llvm.lifetime.end.p0(i64 192, ptr %50) #0
  call void @_ZN3MIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %49) #0
  br label %1276

1276:                                             ; preds = %1275, %1060
  call void @llvm.lifetime.end.p0(i64 96, ptr %49) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #0
  br label %1277

1277:                                             ; preds = %1276, %1056, %1052
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %1279

1278:                                             ; preds = %930
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  br label %1280

1279:                                             ; preds = %1277, %939
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  br label %6578

1280:                                             ; preds = %1278, %911
  call void @llvm.lifetime.start.p0(i64 40, ptr %89) #0
  %1281 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1282 unwind label %1307

1282:                                             ; preds = %1280
  %1283 = zext i1 %1281 to i64
  %1284 = select i1 %1281, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 1 dereferenceable(1) %91) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %89, ptr noundef %1284, ptr noundef %90)
          to label %1285 unwind label %1311

1285:                                             ; preds = %1282
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #0
  %1286 = load ptr, ptr %4, align 8, !tbaa !5
  %1287 = getelementptr inbounds %class.TransList, ptr %1286, i32 0, i32 12
  %1288 = load ptr, ptr %4, align 8, !tbaa !5
  %1289 = getelementptr inbounds %class.TransList, ptr %1288, i32 0, i32 12
  %1290 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1289) #0
  %1291 = load ptr, ptr %4, align 8, !tbaa !5
  %1292 = getelementptr inbounds %class.TransList, ptr %1291, i32 0, i32 10
  %1293 = call noundef i64 @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %1292) #0
  %1294 = add i64 %1290, %1293
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %1287, i64 noundef %1294)
          to label %1295 unwind label %1315

1295:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  %1296 = load ptr, ptr %4, align 8, !tbaa !5
  %1297 = getelementptr inbounds %class.TransList, ptr %1296, i32 0, i32 10
  store ptr %1297, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  %1298 = load ptr, ptr %92, align 8, !tbaa !5
  %1299 = call ptr @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1298) #0
  %1300 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.440", ptr %93, i32 0, i32 0
  store ptr %1299, ptr %1300, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #0
  %1301 = load ptr, ptr %92, align 8, !tbaa !5
  %1302 = call ptr @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1301) #0
  %1303 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.440", ptr %94, i32 0, i32 0
  store ptr %1302, ptr %1303, align 8
  br label %1304

1304:                                             ; preds = %2110, %1295
  %1305 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR4PathEES4_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  br i1 %1305, label %1319, label %1306

1306:                                             ; preds = %1304
  store i32 12, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %2187

1307:                                             ; preds = %1280
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %11, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %12, align 4
  br label %2211

1311:                                             ; preds = %1282
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %11, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #0
  br label %2211

1315:                                             ; preds = %1285
  %1316 = landingpad { ptr, i32 }
          cleanup
  %1317 = extractvalue { ptr, i32 } %1316, 0
  store ptr %1317, ptr %11, align 8
  %1318 = extractvalue { ptr, i32 } %1316, 1
  store i32 %1318, ptr %12, align 4
  br label %2210

1319:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #0
  %1320 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR4PathEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  store ptr %1320, ptr %96, align 8, !tbaa !5
  br label %1321

1321:                                             ; preds = %1319
  %1322 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1323 unwind label %1335

1323:                                             ; preds = %1321
  br i1 %1322, label %1324, label %1339

1324:                                             ; preds = %1323
  %1325 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1325, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1327 unwind label %1335

1327:                                             ; preds = %1324
  %1328 = load ptr, ptr %96, align 8, !tbaa !5
  %1329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1326, ptr noundef nonnull align 8 dereferenceable(88) %1328)
          to label %1330 unwind label %1335

1330:                                             ; preds = %1327
  %1331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1329, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1332 unwind label %1335

1332:                                             ; preds = %1330
  %1333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1331, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1334 unwind label %1335

1334:                                             ; preds = %1332
  br label %1339

1335:                                             ; preds = %1332, %1330, %1327, %1324, %1321
  %1336 = landingpad { ptr, i32 }
          cleanup
  %1337 = extractvalue { ptr, i32 } %1336, 0
  store ptr %1337, ptr %11, align 8
  %1338 = extractvalue { ptr, i32 } %1336, 1
  store i32 %1338, ptr %12, align 4
  br label %2186

1339:                                             ; preds = %1334, %1323
  br label %1340

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340
  %1342 = load atomic i8, ptr @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp acquire, align 8
  %1343 = icmp eq i8 %1342, 0
  br i1 %1343, label %1344, label %1350, !prof !115

1344:                                             ; preds = %1341
  %1345 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp) #0
  %1346 = icmp ne i32 %1345, 0
  br i1 %1346, label %1347, label %1350

1347:                                             ; preds = %1344
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1348 unwind label %1400

1348:                                             ; preds = %1347
  %1349 = call i32 @__cxa_atexit(ptr @_ZN4SpanD1Ev, ptr @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp) #0
  br label %1350

1350:                                             ; preds = %1348, %1344, %1341
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #0
  %1351 = load ptr, ptr %96, align 8, !tbaa !5
  %1352 = getelementptr inbounds %"class.HIR::Path", ptr %1351, i32 0, i32 0
  %1353 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1352)
          to label %1354 unwind label %1404

1354:                                             ; preds = %1350
  store ptr %1353, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  %1355 = load ptr, ptr %97, align 8, !tbaa !5
  %1356 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1355, i32 0, i32 1
  store ptr %1356, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1357 = load ptr, ptr %97, align 8, !tbaa !5
  %1358 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1357, i32 0, i32 2
  store ptr %1358, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #0
  %1359 = load ptr, ptr %97, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1359, i32 0, i32 0
  %1361 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1360)
          to label %1362 unwind label %1408

1362:                                             ; preds = %1354
  %1363 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1361)
          to label %1364 unwind label %1408

1364:                                             ; preds = %1362
  store ptr %1363, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #0
  %1365 = load ptr, ptr %3, align 8, !tbaa !5
  %1366 = load ptr, ptr %98, align 8, !tbaa !5
  %1367 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1366, i32 0, i32 0
  %1368 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1365, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %1367)
          to label %1369 unwind label %1412

1369:                                             ; preds = %1364
  store ptr %1368, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #0
  %1370 = load ptr, ptr %101, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"class.HIR::Trait", ptr %1370, i32 0, i32 5
  %1372 = load ptr, ptr %99, align 8, !tbaa !5
  %1373 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %1371, ptr noundef nonnull align 8 dereferenceable(8) %1372)
          to label %1374 unwind label %1416

1374:                                             ; preds = %1369
  %1375 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %1373)
          to label %1376 unwind label %1416

1376:                                             ; preds = %1374
  store ptr %1375, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #0
  %1377 = load ptr, ptr %100, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1377, i32 0, i32 0
  %1379 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1378, i32 0, i32 4
  %1380 = load ptr, ptr %1379, align 8, !tbaa !116
  %1381 = load ptr, ptr %98, align 8, !tbaa !5
  %1382 = load ptr, ptr %99, align 8, !tbaa !5
  %1383 = invoke noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400) %1380, ptr noundef nonnull align 8 dereferenceable(32) %1381, ptr noundef nonnull align 8 dereferenceable(8) %1382)
          to label %1384 unwind label %1420

1384:                                             ; preds = %1376
  store i32 %1383, ptr %103, align 4, !tbaa !113
  br label %1385

1385:                                             ; preds = %1384
  %1386 = load i32, ptr %103, align 4, !tbaa !113
  %1387 = icmp ugt i32 %1386, 0
  br i1 %1387, label %1442, label %1388

1388:                                             ; preds = %1385
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1389 unwind label %1424

1389:                                             ; preds = %1388
  call void @llvm.lifetime.start.p0(i64 24, ptr %106) #0
  %1390 = getelementptr inbounds %class.anon.531, ptr %106, i32 0, i32 0
  %1391 = load ptr, ptr %99, align 8, !tbaa !5
  store ptr %1391, ptr %1390, align 8, !tbaa !5
  %1392 = getelementptr inbounds %class.anon.531, ptr %106, i32 0, i32 1
  %1393 = load ptr, ptr %98, align 8, !tbaa !5
  store ptr %1393, ptr %1392, align 8, !tbaa !5
  %1394 = getelementptr inbounds %class.anon.531, ptr %106, i32 0, i32 2
  %1395 = load ptr, ptr %97, align 8, !tbaa !5
  store ptr %1395, ptr %1394, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(24) %106)
          to label %1396 unwind label %1428

1396:                                             ; preds = %1389
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef %105)
          to label %1397 unwind label %1432

1397:                                             ; preds = %1396
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  %1398 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1398, ptr noundef @.str.10)
          to label %1399 unwind label %1438

1399:                                             ; preds = %1397
  invoke void @__cxa_throw(ptr %1398, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %1420

1400:                                             ; preds = %1347
  %1401 = landingpad { ptr, i32 }
          cleanup
  %1402 = extractvalue { ptr, i32 } %1401, 0
  store ptr %1402, ptr %11, align 8
  %1403 = extractvalue { ptr, i32 } %1401, 1
  store i32 %1403, ptr %12, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp) #0
  br label %2186

1404:                                             ; preds = %1350
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %11, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %12, align 4
  br label %2185

1408:                                             ; preds = %1362, %1354
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %11, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %12, align 4
  br label %2184

1412:                                             ; preds = %1364
  %1413 = landingpad { ptr, i32 }
          cleanup
  %1414 = extractvalue { ptr, i32 } %1413, 0
  store ptr %1414, ptr %11, align 8
  %1415 = extractvalue { ptr, i32 } %1413, 1
  store i32 %1415, ptr %12, align 4
  br label %2183

1416:                                             ; preds = %1374, %1369
  %1417 = landingpad { ptr, i32 }
          cleanup
  %1418 = extractvalue { ptr, i32 } %1417, 0
  store ptr %1418, ptr %11, align 8
  %1419 = extractvalue { ptr, i32 } %1417, 1
  store i32 %1419, ptr %12, align 4
  br label %2182

1420:                                             ; preds = %1399, %1376
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %11, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %12, align 4
  br label %2181

1424:                                             ; preds = %1388
  %1425 = landingpad { ptr, i32 }
          cleanup
  %1426 = extractvalue { ptr, i32 } %1425, 0
  store ptr %1426, ptr %11, align 8
  %1427 = extractvalue { ptr, i32 } %1425, 1
  store i32 %1427, ptr %12, align 4
  br label %1437

1428:                                             ; preds = %1389
  %1429 = landingpad { ptr, i32 }
          cleanup
  %1430 = extractvalue { ptr, i32 } %1429, 0
  store ptr %1430, ptr %11, align 8
  %1431 = extractvalue { ptr, i32 } %1429, 1
  store i32 %1431, ptr %12, align 4
  br label %1436

1432:                                             ; preds = %1396
  %1433 = landingpad { ptr, i32 }
          cleanup
  %1434 = extractvalue { ptr, i32 } %1433, 0
  store ptr %1434, ptr %11, align 8
  %1435 = extractvalue { ptr, i32 } %1433, 1
  store i32 %1435, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  br label %1436

1436:                                             ; preds = %1432, %1428
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  br label %1437

1437:                                             ; preds = %1436, %1424
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  br label %2181

1438:                                             ; preds = %1397
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %11, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1398) #0
  br label %2181

1442:                                             ; preds = %1385
  br label %1443

1443:                                             ; preds = %1442
  br label %1444

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 24, ptr %107) #0
  %1445 = load ptr, ptr %102, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"class.HIR::Function", ptr %1445, i32 0, i32 7
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %107, ptr noundef nonnull align 8 dereferenceable(96) %1446, i32 noundef 1, i1 noundef zeroext true)
          to label %1447 unwind label %1474

1447:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 128, ptr %108) #0
  %1448 = load ptr, ptr %97, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1448, i32 0, i32 0
  %1450 = load ptr, ptr %98, align 8, !tbaa !5
  %1451 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1450, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %108, ptr noundef %1449, ptr noundef %1451, ptr noundef %107, ptr noundef null, ptr noundef null)
          to label %1452 unwind label %1478

1452:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 352, ptr %109) #0
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %109)
          to label %1453 unwind label %1482

1453:                                             ; preds = %1452
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #0
  %1454 = load ptr, ptr %102, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"class.HIR::Function", ptr %1454, i32 0, i32 10
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %110, ptr noundef nonnull align 8 dereferenceable(96) %108, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %1455, i1 noundef zeroext true)
          to label %1456 unwind label %1486

1456:                                             ; preds = %1453
  %1457 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 10
  %1458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1457, ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %1459 unwind label %1490

1459:                                             ; preds = %1456
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #0
  %1460 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %1461 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 10
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1460, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %1461)
          to label %1462 unwind label %1495

1462:                                             ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #0
  %1463 = load ptr, ptr %102, align 8, !tbaa !5
  %1464 = getelementptr inbounds %"class.HIR::Function", ptr %1463, i32 0, i32 8
  store ptr %1464, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #0
  %1465 = load ptr, ptr %111, align 8, !tbaa !5
  %1466 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1465) #0
  %1467 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.532", ptr %112, i32 0, i32 0
  store ptr %1466, ptr %1467, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #0
  %1468 = load ptr, ptr %111, align 8, !tbaa !5
  %1469 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1468) #0
  %1470 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.532", ptr %113, i32 0, i32 0
  store ptr %1469, ptr %1470, align 8
  br label %1471

1471:                                             ; preds = %1513, %1462
  %1472 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  br i1 %1472, label %1499, label %1473

1473:                                             ; preds = %1471
  store i32 18, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  br label %1539

1474:                                             ; preds = %1444
  %1475 = landingpad { ptr, i32 }
          cleanup
  %1476 = extractvalue { ptr, i32 } %1475, 0
  store ptr %1476, ptr %11, align 8
  %1477 = extractvalue { ptr, i32 } %1475, 1
  store i32 %1477, ptr %12, align 4
  br label %2180

1478:                                             ; preds = %1447
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %11, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %12, align 4
  br label %2179

1482:                                             ; preds = %1452
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %11, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %12, align 4
  br label %2178

1486:                                             ; preds = %1453
  %1487 = landingpad { ptr, i32 }
          cleanup
  %1488 = extractvalue { ptr, i32 } %1487, 0
  store ptr %1488, ptr %11, align 8
  %1489 = extractvalue { ptr, i32 } %1487, 1
  store i32 %1489, ptr %12, align 4
  br label %1494

1490:                                             ; preds = %1456
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %11, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #0
  br label %1494

1494:                                             ; preds = %1490, %1486
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #0
  br label %2177

1495:                                             ; preds = %1547, %1459
  %1496 = landingpad { ptr, i32 }
          cleanup
  %1497 = extractvalue { ptr, i32 } %1496, 0
  store ptr %1497, ptr %11, align 8
  %1498 = extractvalue { ptr, i32 } %1496, 1
  store i32 %1498, ptr %12, align 4
  br label %2177

1499:                                             ; preds = %1471
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #0
  %1500 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #0
  store ptr %1500, ptr %114, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %115) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %116) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %116)
          to label %1502 unwind label %1515

1502:                                             ; preds = %1499
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  %1503 = load ptr, ptr %114, align 8, !tbaa !5
  %1504 = getelementptr inbounds %"struct.std::pair.390", ptr %1503, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %117, ptr noundef nonnull align 8 dereferenceable(96) %108, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %1504, i1 noundef zeroext true)
          to label %1505 unwind label %1519

1505:                                             ; preds = %1502
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %115, ptr noundef nonnull align 8 dereferenceable(212) %116, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1506 unwind label %1523

1506:                                             ; preds = %1505
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1501, ptr noundef nonnull align 8 dereferenceable(224) %115)
          to label %1507 unwind label %1527

1507:                                             ; preds = %1506
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %115) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %116) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %116) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %115) #0
  %1508 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %1509 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1510 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1509) #0
  %1511 = getelementptr inbounds %"struct.std::pair.390", ptr %1510, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1508, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %1511)
          to label %1512 unwind label %1534

1512:                                             ; preds = %1507
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  br label %1513

1513:                                             ; preds = %1512
  %1514 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #0
  br label %1471

1515:                                             ; preds = %1499
  %1516 = landingpad { ptr, i32 }
          cleanup
  %1517 = extractvalue { ptr, i32 } %1516, 0
  store ptr %1517, ptr %11, align 8
  %1518 = extractvalue { ptr, i32 } %1516, 1
  store i32 %1518, ptr %12, align 4
  br label %1533

1519:                                             ; preds = %1502
  %1520 = landingpad { ptr, i32 }
          cleanup
  %1521 = extractvalue { ptr, i32 } %1520, 0
  store ptr %1521, ptr %11, align 8
  %1522 = extractvalue { ptr, i32 } %1520, 1
  store i32 %1522, ptr %12, align 4
  br label %1532

1523:                                             ; preds = %1505
  %1524 = landingpad { ptr, i32 }
          cleanup
  %1525 = extractvalue { ptr, i32 } %1524, 0
  store ptr %1525, ptr %11, align 8
  %1526 = extractvalue { ptr, i32 } %1524, 1
  store i32 %1526, ptr %12, align 4
  br label %1531

1527:                                             ; preds = %1506
  %1528 = landingpad { ptr, i32 }
          cleanup
  %1529 = extractvalue { ptr, i32 } %1528, 0
  store ptr %1529, ptr %11, align 8
  %1530 = extractvalue { ptr, i32 } %1528, 1
  store i32 %1530, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %115) #0
  br label %1531

1531:                                             ; preds = %1527, %1523
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  br label %1532

1532:                                             ; preds = %1531, %1519
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %116) #0
  br label %1533

1533:                                             ; preds = %1532, %1515
  call void @llvm.lifetime.end.p0(i64 216, ptr %116) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %115) #0
  br label %1538

1534:                                             ; preds = %1507
  %1535 = landingpad { ptr, i32 }
          cleanup
  %1536 = extractvalue { ptr, i32 } %1535, 0
  store ptr %1536, ptr %11, align 8
  %1537 = extractvalue { ptr, i32 } %1535, 1
  store i32 %1537, ptr %12, align 4
  br label %1538

1538:                                             ; preds = %1534, %1533
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  br label %2177

1539:                                             ; preds = %1473
  br label %1540

1540:                                             ; preds = %1539
  %1541 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1542 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1541) #0
  br i1 %1542, label %1543, label %1561

1543:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1544 unwind label %1548

1544:                                             ; preds = %1543
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 1 dereferenceable(1) %120) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef %119)
          to label %1545 unwind label %1552

1545:                                             ; preds = %1544
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  %1546 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1546, ptr noundef @.str.10)
          to label %1547 unwind label %1557

1547:                                             ; preds = %1545
  invoke void @__cxa_throw(ptr %1546, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %1495

1548:                                             ; preds = %1543
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %11, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %12, align 4
  br label %1556

1552:                                             ; preds = %1544
  %1553 = landingpad { ptr, i32 }
          cleanup
  %1554 = extractvalue { ptr, i32 } %1553, 0
  store ptr %1554, ptr %11, align 8
  %1555 = extractvalue { ptr, i32 } %1553, 1
  store i32 %1555, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  br label %1556

1556:                                             ; preds = %1552, %1548
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  br label %2177

1557:                                             ; preds = %1545
  %1558 = landingpad { ptr, i32 }
          cleanup
  %1559 = extractvalue { ptr, i32 } %1558, 0
  store ptr %1559, ptr %11, align 8
  %1560 = extractvalue { ptr, i32 } %1558, 1
  store i32 %1560, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1546) #0
  br label %2177

1561:                                             ; preds = %1540
  br label %1562

1562:                                             ; preds = %1561
  br label %1563

1563:                                             ; preds = %1562
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #0
  %1564 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %1565 unwind label %1582

1565:                                             ; preds = %1563
  call void @llvm.memset.p0.i64(ptr align 16 %1564, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1564)
          to label %1566 unwind label %1586

1566:                                             ; preds = %1565
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef %1564)
          to label %1567 unwind label %1582

1567:                                             ; preds = %1566
  %1568 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 11
  %1569 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %1568, i32 0, i32 3
  %1570 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1569, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1571 unwind label %1590

1571:                                             ; preds = %1567
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %122) #0
  %1572 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 11
  %1573 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %1572, i32 0, i32 3
  %1574 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1573)
          to label %1575 unwind label %1595

1575:                                             ; preds = %1571
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(96) %1574)
          to label %1576 unwind label %1595

1576:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #0
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %123, i32 noundef 0)
          to label %1577 unwind label %1599

1577:                                             ; preds = %1576
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #0
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1578 unwind label %1603

1578:                                             ; preds = %1577
  %1579 = load ptr, ptr %102, align 8, !tbaa !5
  %1580 = getelementptr inbounds %"class.HIR::Function", ptr %1579, i32 0, i32 2
  %1581 = load i32, ptr %1580, align 8, !tbaa !139
  switch i32 %1581, label %1940 [
    i32 1, label %1607
    i32 2, label %1705
    i32 3, label %1705
    i32 4, label %1705
    i32 5, label %1824
  ]

1582:                                             ; preds = %1566, %1563
  %1583 = landingpad { ptr, i32 }
          cleanup
  %1584 = extractvalue { ptr, i32 } %1583, 0
  store ptr %1584, ptr %11, align 8
  %1585 = extractvalue { ptr, i32 } %1583, 1
  store i32 %1585, ptr %12, align 4
  br label %1594

1586:                                             ; preds = %1565
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %11, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1564, i64 noundef 96) #15
  br label %1594

1590:                                             ; preds = %1567
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %11, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  br label %1594

1594:                                             ; preds = %1590, %1586, %1582
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #0
  br label %2177

1595:                                             ; preds = %1575, %1571
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %11, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %12, align 4
  br label %2176

1599:                                             ; preds = %1576
  %1600 = landingpad { ptr, i32 }
          cleanup
  %1601 = extractvalue { ptr, i32 } %1600, 0
  store ptr %1601, ptr %11, align 8
  %1602 = extractvalue { ptr, i32 } %1600, 1
  store i32 %1602, ptr %12, align 4
  br label %2175

1603:                                             ; preds = %1577
  %1604 = landingpad { ptr, i32 }
          cleanup
  %1605 = extractvalue { ptr, i32 } %1604, 0
  store ptr %1605, ptr %11, align 8
  %1606 = extractvalue { ptr, i32 } %1604, 1
  store i32 %1606, ptr %12, align 4
  br label %2174

1607:                                             ; preds = %1578
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #0
  %1608 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1609 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1608) #0
  %1610 = getelementptr inbounds %"struct.std::pair.390", ptr %1609, i32 0, i32 1
  store ptr %1610, ptr %125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #0
  %1611 = load ptr, ptr %125, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %1611)
          to label %1612 unwind label %1650

1612:                                             ; preds = %1607
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %126, i32 noundef 2, ptr noundef %127)
          to label %1613 unwind label %1654

1613:                                             ; preds = %1612
  %1614 = load ptr, ptr %125, align 8, !tbaa !5
  %1615 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1614, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1616 unwind label %1658

1616:                                             ; preds = %1613
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %130)
          to label %1617 unwind label %1664

1617:                                             ; preds = %1616
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %129, i32 noundef 2, ptr noundef %130)
          to label %1618 unwind label %1668

1618:                                             ; preds = %1617
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %128, ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %129)
          to label %1619 unwind label %1672

1619:                                             ; preds = %1618
  %1620 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1621 unwind label %1676

1621:                                             ; preds = %1619
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %131, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1622 unwind label %1683

1622:                                             ; preds = %1621
  %1623 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %133, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %1623, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %1624 unwind label %1687

1624:                                             ; preds = %1622
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %132, ptr noundef %133)
          to label %1625 unwind label %1691

1625:                                             ; preds = %1624
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %131, ptr noundef %132)
          to label %1626 unwind label %1695

1626:                                             ; preds = %1625
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %132) #0
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #0
  br label %1627

1627:                                             ; preds = %1626
  %1628 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1629 unwind label %1683

1629:                                             ; preds = %1627
  br i1 %1628, label %1630, label %1701

1630:                                             ; preds = %1629
  %1631 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1631, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1633 unwind label %1683

1633:                                             ; preds = %1630
  %1634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1632, ptr noundef @.str.14)
          to label %1635 unwind label %1683

1635:                                             ; preds = %1633
  %1636 = load ptr, ptr %98, align 8, !tbaa !5
  %1637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1634, ptr noundef nonnull align 8 dereferenceable(32) %1636)
          to label %1638 unwind label %1683

1638:                                             ; preds = %1635
  %1639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1637, ptr noundef @.str.15)
          to label %1640 unwind label %1683

1640:                                             ; preds = %1638
  %1641 = load ptr, ptr %99, align 8, !tbaa !5
  %1642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1639, ptr noundef nonnull align 8 dereferenceable(8) %1641)
          to label %1643 unwind label %1683

1643:                                             ; preds = %1640
  %1644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1642, ptr noundef @.str.16)
          to label %1645 unwind label %1683

1645:                                             ; preds = %1643
  %1646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1644, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1647 unwind label %1683

1647:                                             ; preds = %1645
  %1648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1646, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1649 unwind label %1683

1649:                                             ; preds = %1647
  br label %1701

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

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

1658:                                             ; preds = %1613
  %1659 = landingpad { ptr, i32 }
          cleanup
  %1660 = extractvalue { ptr, i32 } %1659, 0
  store ptr %1660, ptr %11, align 8
  %1661 = extractvalue { ptr, i32 } %1659, 1
  store i32 %1661, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #0
  br label %1662

1662:                                             ; preds = %1658, %1654
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  br label %1663

1663:                                             ; preds = %1662, %1650
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  br label %1704

1664:                                             ; preds = %1616
  %1665 = landingpad { ptr, i32 }
          cleanup
  %1666 = extractvalue { ptr, i32 } %1665, 0
  store ptr %1666, ptr %11, align 8
  %1667 = extractvalue { ptr, i32 } %1665, 1
  store i32 %1667, ptr %12, align 4
  br label %1682

1668:                                             ; preds = %1617
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %11, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %12, align 4
  br label %1681

1672:                                             ; preds = %1618
  %1673 = landingpad { ptr, i32 }
          cleanup
  %1674 = extractvalue { ptr, i32 } %1673, 0
  store ptr %1674, ptr %11, align 8
  %1675 = extractvalue { ptr, i32 } %1673, 1
  store i32 %1675, ptr %12, align 4
  br label %1680

1676:                                             ; preds = %1619
  %1677 = landingpad { ptr, i32 }
          cleanup
  %1678 = extractvalue { ptr, i32 } %1677, 0
  store ptr %1678, ptr %11, align 8
  %1679 = extractvalue { ptr, i32 } %1677, 1
  store i32 %1679, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #0
  br label %1680

1680:                                             ; preds = %1676, %1672
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  br label %1681

1681:                                             ; preds = %1680, %1668
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #0
  br label %1682

1682:                                             ; preds = %1681, %1664
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #0
  br label %1704

1683:                                             ; preds = %1647, %1645, %1643, %1640, %1638, %1635, %1633, %1630, %1627, %1621
  %1684 = landingpad { ptr, i32 }
          cleanup
  %1685 = extractvalue { ptr, i32 } %1684, 0
  store ptr %1685, ptr %11, align 8
  %1686 = extractvalue { ptr, i32 } %1684, 1
  store i32 %1686, ptr %12, align 4
  br label %1704

1687:                                             ; preds = %1622
  %1688 = landingpad { ptr, i32 }
          cleanup
  %1689 = extractvalue { ptr, i32 } %1688, 0
  store ptr %1689, ptr %11, align 8
  %1690 = extractvalue { ptr, i32 } %1688, 1
  store i32 %1690, ptr %12, align 4
  br label %1700

1691:                                             ; preds = %1624
  %1692 = landingpad { ptr, i32 }
          cleanup
  %1693 = extractvalue { ptr, i32 } %1692, 0
  store ptr %1693, ptr %11, align 8
  %1694 = extractvalue { ptr, i32 } %1692, 1
  store i32 %1694, ptr %12, align 4
  br label %1699

1695:                                             ; preds = %1625
  %1696 = landingpad { ptr, i32 }
          cleanup
  %1697 = extractvalue { ptr, i32 } %1696, 0
  store ptr %1697, ptr %11, align 8
  %1698 = extractvalue { ptr, i32 } %1696, 1
  store i32 %1698, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %132) #0
  br label %1699

1699:                                             ; preds = %1695, %1691
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #0
  br label %1700

1700:                                             ; preds = %1699, %1687
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #0
  br label %1704

1701:                                             ; preds = %1649, %1629
  br label %1702

1702:                                             ; preds = %1701
  br label %1703

1703:                                             ; preds = %1702
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  br label %1978

1704:                                             ; preds = %1700, %1683, %1682, %1663
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  br label %2173

1705:                                             ; preds = %1578, %1578, %1578
  br label %1706

1706:                                             ; preds = %1705
  %1707 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1708 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1707) #0
  %1709 = getelementptr inbounds %"struct.std::pair.390", ptr %1708, i32 0, i32 1
  %1710 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1709)
          to label %1711 unwind label %1720

1711:                                             ; preds = %1706
  %1712 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1710)
          to label %1713 unwind label %1720

1713:                                             ; preds = %1711
  br i1 %1712, label %1737, label %1714

1714:                                             ; preds = %1713
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1715 unwind label %1724

1715:                                             ; preds = %1714
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #0
  %1716 = getelementptr inbounds %class.anon.535, ptr %136, i32 0, i32 0
  store ptr %109, ptr %1716, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(8) %136) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef %135)
          to label %1717 unwind label %1728

1717:                                             ; preds = %1715
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #0
  %1718 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1718, ptr noundef @.str.10)
          to label %1719 unwind label %1733

1719:                                             ; preds = %1717
  invoke void @__cxa_throw(ptr %1718, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %1720

1720:                                             ; preds = %1845, %1843, %1841, %1838, %1836, %1833, %1831, %1828, %1825, %1719, %1711, %1706
  %1721 = landingpad { ptr, i32 }
          cleanup
  %1722 = extractvalue { ptr, i32 } %1721, 0
  store ptr %1722, ptr %11, align 8
  %1723 = extractvalue { ptr, i32 } %1721, 1
  store i32 %1723, ptr %12, align 4
  br label %2173

1724:                                             ; preds = %1714
  %1725 = landingpad { ptr, i32 }
          cleanup
  %1726 = extractvalue { ptr, i32 } %1725, 0
  store ptr %1726, ptr %11, align 8
  %1727 = extractvalue { ptr, i32 } %1725, 1
  store i32 %1727, ptr %12, align 4
  br label %1732

1728:                                             ; preds = %1715
  %1729 = landingpad { ptr, i32 }
          cleanup
  %1730 = extractvalue { ptr, i32 } %1729, 0
  store ptr %1730, ptr %11, align 8
  %1731 = extractvalue { ptr, i32 } %1729, 1
  store i32 %1731, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #0
  br label %1732

1732:                                             ; preds = %1728, %1724
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #0
  br label %2173

1733:                                             ; preds = %1717
  %1734 = landingpad { ptr, i32 }
          cleanup
  %1735 = extractvalue { ptr, i32 } %1734, 0
  store ptr %1735, ptr %11, align 8
  %1736 = extractvalue { ptr, i32 } %1734, 1
  store i32 %1736, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1718) #0
  br label %2173

1737:                                             ; preds = %1713
  br label %1738

1738:                                             ; preds = %1737
  br label %1739

1739:                                             ; preds = %1738
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #0
  %1740 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1741 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1740) #0
  %1742 = getelementptr inbounds %"struct.std::pair.390", ptr %1741, i32 0, i32 1
  %1743 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1742)
          to label %1744 unwind label %1772

1744:                                             ; preds = %1739
  %1745 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1743)
          to label %1746 unwind label %1772

1746:                                             ; preds = %1744
  %1747 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1745, i32 0, i32 1
  %1748 = load i32, ptr %1747, align 4, !tbaa !140
  store i32 %1748, ptr %137, align 4, !tbaa !143
  br label %1749

1749:                                             ; preds = %1746
  %1750 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1751 unwind label %1772

1751:                                             ; preds = %1749
  br i1 %1750, label %1752, label %1776

1752:                                             ; preds = %1751
  %1753 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1753, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1755 unwind label %1772

1755:                                             ; preds = %1752
  %1756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1754, ptr noundef @.str.14)
          to label %1757 unwind label %1772

1757:                                             ; preds = %1755
  %1758 = load ptr, ptr %98, align 8, !tbaa !5
  %1759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1756, ptr noundef nonnull align 8 dereferenceable(32) %1758)
          to label %1760 unwind label %1772

1760:                                             ; preds = %1757
  %1761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1759, ptr noundef @.str.15)
          to label %1762 unwind label %1772

1762:                                             ; preds = %1760
  %1763 = load ptr, ptr %99, align 8, !tbaa !5
  %1764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1761, ptr noundef nonnull align 8 dereferenceable(8) %1763)
          to label %1765 unwind label %1772

1765:                                             ; preds = %1762
  %1766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1764, ptr noundef @.str.17)
          to label %1767 unwind label %1772

1767:                                             ; preds = %1765
  %1768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1766, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1769 unwind label %1772

1769:                                             ; preds = %1767
  %1770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1768, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1771 unwind label %1772

1771:                                             ; preds = %1769
  br label %1776

1772:                                             ; preds = %1784, %1769, %1767, %1765, %1762, %1760, %1757, %1755, %1752, %1749, %1744, %1739
  %1773 = landingpad { ptr, i32 }
          cleanup
  %1774 = extractvalue { ptr, i32 } %1773, 0
  store ptr %1774, ptr %11, align 8
  %1775 = extractvalue { ptr, i32 } %1773, 1
  store i32 %1775, ptr %12, align 4
  br label %1823

1776:                                             ; preds = %1771, %1751
  br label %1777

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #0
  %1779 = load i32, ptr %137, align 4, !tbaa !143
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %140)
          to label %1780 unwind label %1790

1780:                                             ; preds = %1778
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %139, i32 noundef %1779, ptr noundef %140)
          to label %1781 unwind label %1794

1781:                                             ; preds = %1780
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %138, ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %139)
          to label %1782 unwind label %1798

1782:                                             ; preds = %1781
  %1783 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(32) %138)
          to label %1784 unwind label %1802

1784:                                             ; preds = %1782
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %141, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1785 unwind label %1772

1785:                                             ; preds = %1784
  %1786 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %143, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %1786, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %1787 unwind label %1809

1787:                                             ; preds = %1785
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %142, ptr noundef %143)
          to label %1788 unwind label %1813

1788:                                             ; preds = %1787
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %141, ptr noundef %142)
          to label %1789 unwind label %1817

1789:                                             ; preds = %1788
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %142) #0
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #0
  br label %1978

1790:                                             ; preds = %1778
  %1791 = landingpad { ptr, i32 }
          cleanup
  %1792 = extractvalue { ptr, i32 } %1791, 0
  store ptr %1792, ptr %11, align 8
  %1793 = extractvalue { ptr, i32 } %1791, 1
  store i32 %1793, ptr %12, align 4
  br label %1808

1794:                                             ; preds = %1780
  %1795 = landingpad { ptr, i32 }
          cleanup
  %1796 = extractvalue { ptr, i32 } %1795, 0
  store ptr %1796, ptr %11, align 8
  %1797 = extractvalue { ptr, i32 } %1795, 1
  store i32 %1797, ptr %12, align 4
  br label %1807

1798:                                             ; preds = %1781
  %1799 = landingpad { ptr, i32 }
          cleanup
  %1800 = extractvalue { ptr, i32 } %1799, 0
  store ptr %1800, ptr %11, align 8
  %1801 = extractvalue { ptr, i32 } %1799, 1
  store i32 %1801, ptr %12, align 4
  br label %1806

1802:                                             ; preds = %1782
  %1803 = landingpad { ptr, i32 }
          cleanup
  %1804 = extractvalue { ptr, i32 } %1803, 0
  store ptr %1804, ptr %11, align 8
  %1805 = extractvalue { ptr, i32 } %1803, 1
  store i32 %1805, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #0
  br label %1806

1806:                                             ; preds = %1802, %1798
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  br label %1807

1807:                                             ; preds = %1806, %1794
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #0
  br label %1808

1808:                                             ; preds = %1807, %1790
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #0
  br label %1823

1809:                                             ; preds = %1785
  %1810 = landingpad { ptr, i32 }
          cleanup
  %1811 = extractvalue { ptr, i32 } %1810, 0
  store ptr %1811, ptr %11, align 8
  %1812 = extractvalue { ptr, i32 } %1810, 1
  store i32 %1812, ptr %12, align 4
  br label %1822

1813:                                             ; preds = %1787
  %1814 = landingpad { ptr, i32 }
          cleanup
  %1815 = extractvalue { ptr, i32 } %1814, 0
  store ptr %1815, ptr %11, align 8
  %1816 = extractvalue { ptr, i32 } %1814, 1
  store i32 %1816, ptr %12, align 4
  br label %1821

1817:                                             ; preds = %1788
  %1818 = landingpad { ptr, i32 }
          cleanup
  %1819 = extractvalue { ptr, i32 } %1818, 0
  store ptr %1819, ptr %11, align 8
  %1820 = extractvalue { ptr, i32 } %1818, 1
  store i32 %1820, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %142) #0
  br label %1821

1821:                                             ; preds = %1817, %1813
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #0
  br label %1822

1822:                                             ; preds = %1821, %1809
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #0
  br label %1823

1823:                                             ; preds = %1822, %1808, %1772
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #0
  br label %2173

1824:                                             ; preds = %1578
  br label %1825

1825:                                             ; preds = %1824
  %1826 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1827 unwind label %1720

1827:                                             ; preds = %1825
  br i1 %1826, label %1828, label %1848

1828:                                             ; preds = %1827
  %1829 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1830 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1829, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1831 unwind label %1720

1831:                                             ; preds = %1828
  %1832 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1830, ptr noundef @.str.14)
          to label %1833 unwind label %1720

1833:                                             ; preds = %1831
  %1834 = load ptr, ptr %98, align 8, !tbaa !5
  %1835 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1832, ptr noundef nonnull align 8 dereferenceable(32) %1834)
          to label %1836 unwind label %1720

1836:                                             ; preds = %1833
  %1837 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1835, ptr noundef @.str.15)
          to label %1838 unwind label %1720

1838:                                             ; preds = %1836
  %1839 = load ptr, ptr %99, align 8, !tbaa !5
  %1840 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1837, ptr noundef nonnull align 8 dereferenceable(8) %1839)
          to label %1841 unwind label %1720

1841:                                             ; preds = %1838
  %1842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1840, ptr noundef @.str.18)
          to label %1843 unwind label %1720

1843:                                             ; preds = %1841
  %1844 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1842, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1845 unwind label %1720

1845:                                             ; preds = %1843
  %1846 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1844, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1847 unwind label %1720

1847:                                             ; preds = %1845
  br label %1848

1848:                                             ; preds = %1847, %1827
  br label %1849

1849:                                             ; preds = %1848
  br label %1850

1850:                                             ; preds = %1849
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #0
  %1851 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1852 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1851) #0
  %1853 = getelementptr inbounds %"struct.std::pair.390", ptr %1852, i32 0, i32 1
  %1854 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1853)
          to label %1855 unwind label %1887

1855:                                             ; preds = %1850
  %1856 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1854)
          to label %1857 unwind label %1887

1857:                                             ; preds = %1855
  %1858 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1856, i32 0, i32 0
  %1859 = getelementptr inbounds %"class.HIR::Path", ptr %1858, i32 0, i32 0
  %1860 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1859)
          to label %1861 unwind label %1887

1861:                                             ; preds = %1857
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %144, ptr noundef nonnull align 8 dereferenceable(32) %1860)
          to label %1862 unwind label %1887

1862:                                             ; preds = %1861
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %145)
          to label %1863 unwind label %1891

1863:                                             ; preds = %1862
  %1864 = getelementptr inbounds %"class.HIR::GenericPath", ptr %144, i32 0, i32 1
  %1865 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1864, i32 0, i32 1
  %1866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1865, i64 noundef 0)
          to label %1867 unwind label %1895

1867:                                             ; preds = %1863
  %1868 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1866, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1869 unwind label %1895

1869:                                             ; preds = %1867
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %148, ptr noundef nonnull align 8 dereferenceable(32) %144)
          to label %1870 unwind label %1900

1870:                                             ; preds = %1869
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %147, ptr noundef %148)
          to label %1871 unwind label %1904

1871:                                             ; preds = %1870
  %1872 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %1873 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1872) #0
  %1874 = getelementptr inbounds %"struct.std::pair.390", ptr %1873, i32 0, i32 1
  %1875 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1874)
          to label %1876 unwind label %1908

1876:                                             ; preds = %1871
  %1877 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1875)
          to label %1878 unwind label %1908

1878:                                             ; preds = %1876
  %1879 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1877, i32 0, i32 1
  invoke void @_ZNK3HIR15TypePathBinding5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %149, ptr noundef nonnull align 8 dereferenceable(16) %1879)
          to label %1880 unwind label %1908

1880:                                             ; preds = %1878
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %146, ptr noundef %147, ptr noundef %149)
          to label %1881 unwind label %1912

1881:                                             ; preds = %1880
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %147) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %150) #0
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %146)
          to label %1882 unwind label %1918

1882:                                             ; preds = %1881
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %152, i32 noundef 0)
          to label %1883 unwind label %1922

1883:                                             ; preds = %1882
  invoke void @_ZN12_GLOBAL__N_112get_unit_ptrERK4SpanRNS_7BuilderEN3HIR7TypeRefEN3MIR6LValueERS8_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %150, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %151, ptr noundef %152, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %1884 unwind label %1926

1884:                                             ; preds = %1883
  %1885 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(32) %150)
          to label %1886 unwind label %1930

1886:                                             ; preds = %1884
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #0
  br label %1978

1887:                                             ; preds = %1861, %1857, %1855, %1850
  %1888 = landingpad { ptr, i32 }
          cleanup
  %1889 = extractvalue { ptr, i32 } %1888, 0
  store ptr %1889, ptr %11, align 8
  %1890 = extractvalue { ptr, i32 } %1888, 1
  store i32 %1890, ptr %12, align 4
  br label %1939

1891:                                             ; preds = %1862
  %1892 = landingpad { ptr, i32 }
          cleanup
  %1893 = extractvalue { ptr, i32 } %1892, 0
  store ptr %1893, ptr %11, align 8
  %1894 = extractvalue { ptr, i32 } %1892, 1
  store i32 %1894, ptr %12, align 4
  br label %1899

1895:                                             ; preds = %1867, %1863
  %1896 = landingpad { ptr, i32 }
          cleanup
  %1897 = extractvalue { ptr, i32 } %1896, 0
  store ptr %1897, ptr %11, align 8
  %1898 = extractvalue { ptr, i32 } %1896, 1
  store i32 %1898, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #0
  br label %1899

1899:                                             ; preds = %1895, %1891
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  br label %1938

1900:                                             ; preds = %1869
  %1901 = landingpad { ptr, i32 }
          cleanup
  %1902 = extractvalue { ptr, i32 } %1901, 0
  store ptr %1902, ptr %11, align 8
  %1903 = extractvalue { ptr, i32 } %1901, 1
  store i32 %1903, ptr %12, align 4
  br label %1937

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

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

1912:                                             ; preds = %1880
  %1913 = landingpad { ptr, i32 }
          cleanup
  %1914 = extractvalue { ptr, i32 } %1913, 0
  store ptr %1914, ptr %11, align 8
  %1915 = extractvalue { ptr, i32 } %1913, 1
  store i32 %1915, ptr %12, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #0
  br label %1916

1916:                                             ; preds = %1912, %1908
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %147) #0
  br label %1917

1917:                                             ; preds = %1916, %1904
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #0
  br label %1937

1918:                                             ; preds = %1881
  %1919 = landingpad { ptr, i32 }
          cleanup
  %1920 = extractvalue { ptr, i32 } %1919, 0
  store ptr %1920, ptr %11, align 8
  %1921 = extractvalue { ptr, i32 } %1919, 1
  store i32 %1921, ptr %12, align 4
  br label %1936

1922:                                             ; preds = %1882
  %1923 = landingpad { ptr, i32 }
          cleanup
  %1924 = extractvalue { ptr, i32 } %1923, 0
  store ptr %1924, ptr %11, align 8
  %1925 = extractvalue { ptr, i32 } %1923, 1
  store i32 %1925, ptr %12, align 4
  br label %1935

1926:                                             ; preds = %1883
  %1927 = landingpad { ptr, i32 }
          cleanup
  %1928 = extractvalue { ptr, i32 } %1927, 0
  store ptr %1928, ptr %11, align 8
  %1929 = extractvalue { ptr, i32 } %1927, 1
  store i32 %1929, ptr %12, align 4
  br label %1934

1930:                                             ; preds = %1884
  %1931 = landingpad { ptr, i32 }
          cleanup
  %1932 = extractvalue { ptr, i32 } %1931, 0
  store ptr %1932, ptr %11, align 8
  %1933 = extractvalue { ptr, i32 } %1931, 1
  store i32 %1933, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #0
  br label %1934

1934:                                             ; preds = %1930, %1926
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #0
  br label %1935

1935:                                             ; preds = %1934, %1922
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #0
  br label %1936

1936:                                             ; preds = %1935, %1918
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #0
  br label %1937

1937:                                             ; preds = %1936, %1917, %1900
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  br label %1938

1938:                                             ; preds = %1937, %1899
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #0
  br label %1939

1939:                                             ; preds = %1938, %1887
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #0
  br label %2173

1940:                                             ; preds = %1578
  br label %1941

1941:                                             ; preds = %1940
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #0
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1942 unwind label %1953

1942:                                             ; preds = %1941
  call void @llvm.lifetime.start.p0(i64 32, ptr %156) #0
  %1943 = getelementptr inbounds %class.anon.536, ptr %156, i32 0, i32 0
  store ptr %153, ptr %1943, align 8, !tbaa !5
  %1944 = getelementptr inbounds %class.anon.536, ptr %156, i32 0, i32 1
  %1945 = load ptr, ptr %98, align 8, !tbaa !5
  store ptr %1945, ptr %1944, align 8, !tbaa !5
  %1946 = getelementptr inbounds %class.anon.536, ptr %156, i32 0, i32 2
  %1947 = load ptr, ptr %99, align 8, !tbaa !5
  store ptr %1947, ptr %1946, align 8, !tbaa !5
  %1948 = getelementptr inbounds %class.anon.536, ptr %156, i32 0, i32 3
  store ptr %109, ptr %1948, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(32) %156)
          to label %1949 unwind label %1957

1949:                                             ; preds = %1942
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef %155)
          to label %1950 unwind label %1961

1950:                                             ; preds = %1949
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  %1951 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1951, ptr noundef @.str.19)
          to label %1952 unwind label %1967

1952:                                             ; preds = %1950
  invoke void @__cxa_throw(ptr %1951, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %1971

1953:                                             ; preds = %1941
  %1954 = landingpad { ptr, i32 }
          cleanup
  %1955 = extractvalue { ptr, i32 } %1954, 0
  store ptr %1955, ptr %11, align 8
  %1956 = extractvalue { ptr, i32 } %1954, 1
  store i32 %1956, ptr %12, align 4
  br label %1966

1957:                                             ; preds = %1942
  %1958 = landingpad { ptr, i32 }
          cleanup
  %1959 = extractvalue { ptr, i32 } %1958, 0
  store ptr %1959, ptr %11, align 8
  %1960 = extractvalue { ptr, i32 } %1958, 1
  store i32 %1960, ptr %12, align 4
  br label %1965

1961:                                             ; preds = %1949
  %1962 = landingpad { ptr, i32 }
          cleanup
  %1963 = extractvalue { ptr, i32 } %1962, 0
  store ptr %1963, ptr %11, align 8
  %1964 = extractvalue { ptr, i32 } %1962, 1
  store i32 %1964, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #0
  br label %1965

1965:                                             ; preds = %1961, %1957
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  br label %1966

1966:                                             ; preds = %1965, %1953
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  br label %1975

1967:                                             ; preds = %1950
  %1968 = landingpad { ptr, i32 }
          cleanup
  %1969 = extractvalue { ptr, i32 } %1968, 0
  store ptr %1969, ptr %11, align 8
  %1970 = extractvalue { ptr, i32 } %1968, 1
  store i32 %1970, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1951) #0
  br label %1975

1971:                                             ; preds = %1952
  %1972 = landingpad { ptr, i32 }
          cleanup
  %1973 = extractvalue { ptr, i32 } %1972, 0
  store ptr %1973, ptr %11, align 8
  %1974 = extractvalue { ptr, i32 } %1972, 1
  store i32 %1974, ptr %12, align 4
  br label %1975

1975:                                             ; preds = %1971, %1967, %1966
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  br label %2173

1976:                                             ; No predecessors!
  br label %1977

1977:                                             ; preds = %1976
  br label %1978

1978:                                             ; preds = %1977, %1886, %1789, %1703
  call void @llvm.lifetime.start.p0(i64 32, ptr %157) #0
  %1979 = load ptr, ptr %100, align 8, !tbaa !5
  %1980 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1979, i32 0, i32 0
  %1981 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1980, i32 0, i32 4
  %1982 = load ptr, ptr %1981, align 8, !tbaa !116
  %1983 = load ptr, ptr %3, align 8, !tbaa !5
  %1984 = load ptr, ptr %100, align 8, !tbaa !5
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %159, ptr noundef nonnull align 8 dereferenceable(400) %1982, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(944) %1983, ptr noundef nonnull align 8 dereferenceable(172) %1984)
          to label %1985 unwind label %2003

1985:                                             ; preds = %1978
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %158, i32 noundef 0, ptr noundef %159)
          to label %1986 unwind label %2007

1986:                                             ; preds = %1985
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %157, ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %158)
          to label %1987 unwind label %2011

1987:                                             ; preds = %1986
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %160, ptr noundef nonnull align 8 dereferenceable(32) %157)
          to label %1988 unwind label %2016

1988:                                             ; preds = %1987
  %1989 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %162, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1989, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %1990 unwind label %2020

1990:                                             ; preds = %1988
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %161, ptr noundef %162)
          to label %1991 unwind label %2024

1991:                                             ; preds = %1990
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %160, ptr noundef %161)
          to label %1992 unwind label %2028

1992:                                             ; preds = %1991
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %161) #0
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %163) #0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %164) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1993 unwind label %2034

1993:                                             ; preds = %1992
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %164, ptr noundef %165)
          to label %1994 unwind label %2038

1994:                                             ; preds = %1993
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(48) %164)
          to label %1995 unwind label %2042

1995:                                             ; preds = %1994
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %164) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %164) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #0
  store i64 1, ptr %166, align 8, !tbaa !144
  br label %1996

1996:                                             ; preds = %2054, %1995
  %1997 = load i64, ptr %166, align 8, !tbaa !144
  %1998 = load ptr, ptr %102, align 8, !tbaa !5
  %1999 = getelementptr inbounds %"class.HIR::Function", ptr %1998, i32 0, i32 8
  %2000 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1999) #0
  %2001 = icmp ult i64 %1997, %2000
  br i1 %2001, label %2048, label %2002

2002:                                             ; preds = %1996
  store i32 33, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #0
  br label %2071

2003:                                             ; preds = %1978
  %2004 = landingpad { ptr, i32 }
          cleanup
  %2005 = extractvalue { ptr, i32 } %2004, 0
  store ptr %2005, ptr %11, align 8
  %2006 = extractvalue { ptr, i32 } %2004, 1
  store i32 %2006, ptr %12, align 4
  br label %2172

2007:                                             ; preds = %1985
  %2008 = landingpad { ptr, i32 }
          cleanup
  %2009 = extractvalue { ptr, i32 } %2008, 0
  store ptr %2009, ptr %11, align 8
  %2010 = extractvalue { ptr, i32 } %2008, 1
  store i32 %2010, ptr %12, align 4
  br label %2015

2011:                                             ; preds = %1986
  %2012 = landingpad { ptr, i32 }
          cleanup
  %2013 = extractvalue { ptr, i32 } %2012, 0
  store ptr %2013, ptr %11, align 8
  %2014 = extractvalue { ptr, i32 } %2012, 1
  store i32 %2014, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #0
  br label %2015

2015:                                             ; preds = %2011, %2007
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #0
  br label %2172

2016:                                             ; preds = %1987
  %2017 = landingpad { ptr, i32 }
          cleanup
  %2018 = extractvalue { ptr, i32 } %2017, 0
  store ptr %2018, ptr %11, align 8
  %2019 = extractvalue { ptr, i32 } %2017, 1
  store i32 %2019, ptr %12, align 4
  br label %2171

2020:                                             ; preds = %1988
  %2021 = landingpad { ptr, i32 }
          cleanup
  %2022 = extractvalue { ptr, i32 } %2021, 0
  store ptr %2022, ptr %11, align 8
  %2023 = extractvalue { ptr, i32 } %2021, 1
  store i32 %2023, ptr %12, align 4
  br label %2033

2024:                                             ; preds = %1990
  %2025 = landingpad { ptr, i32 }
          cleanup
  %2026 = extractvalue { ptr, i32 } %2025, 0
  store ptr %2026, ptr %11, align 8
  %2027 = extractvalue { ptr, i32 } %2025, 1
  store i32 %2027, ptr %12, align 4
  br label %2032

2028:                                             ; preds = %1991
  %2029 = landingpad { ptr, i32 }
          cleanup
  %2030 = extractvalue { ptr, i32 } %2029, 0
  store ptr %2030, ptr %11, align 8
  %2031 = extractvalue { ptr, i32 } %2029, 1
  store i32 %2031, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %161) #0
  br label %2032

2032:                                             ; preds = %2028, %2024
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #0
  br label %2033

2033:                                             ; preds = %2032, %2020
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #0
  br label %2171

2034:                                             ; preds = %1992
  %2035 = landingpad { ptr, i32 }
          cleanup
  %2036 = extractvalue { ptr, i32 } %2035, 0
  store ptr %2036, ptr %11, align 8
  %2037 = extractvalue { ptr, i32 } %2035, 1
  store i32 %2037, ptr %12, align 4
  br label %2047

2038:                                             ; preds = %1993
  %2039 = landingpad { ptr, i32 }
          cleanup
  %2040 = extractvalue { ptr, i32 } %2039, 0
  store ptr %2040, ptr %11, align 8
  %2041 = extractvalue { ptr, i32 } %2039, 1
  store i32 %2041, ptr %12, align 4
  br label %2046

2042:                                             ; preds = %1994
  %2043 = landingpad { ptr, i32 }
          cleanup
  %2044 = extractvalue { ptr, i32 } %2043, 0
  store ptr %2044, ptr %11, align 8
  %2045 = extractvalue { ptr, i32 } %2043, 1
  store i32 %2045, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %164) #0
  br label %2046

2046:                                             ; preds = %2042, %2038
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #0
  br label %2047

2047:                                             ; preds = %2046, %2034
  call void @llvm.lifetime.end.p0(i64 48, ptr %164) #0
  br label %2170

2048:                                             ; preds = %1996
  call void @llvm.lifetime.start.p0(i64 48, ptr %167) #0
  %2049 = load i64, ptr %166, align 8, !tbaa !144
  %2050 = trunc i64 %2049 to i32
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %168, i32 noundef %2050)
          to label %2051 unwind label %2057

2051:                                             ; preds = %2048
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef %168)
          to label %2052 unwind label %2061

2052:                                             ; preds = %2051
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(48) %167)
          to label %2053 unwind label %2065

2053:                                             ; preds = %2052
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %167) #0
  br label %2054

2054:                                             ; preds = %2053
  %2055 = load i64, ptr %166, align 8, !tbaa !144
  %2056 = add i64 %2055, 1
  store i64 %2056, ptr %166, align 8, !tbaa !144
  br label %1996, !llvm.loop !145

2057:                                             ; preds = %2048
  %2058 = landingpad { ptr, i32 }
          cleanup
  %2059 = extractvalue { ptr, i32 } %2058, 0
  store ptr %2059, ptr %11, align 8
  %2060 = extractvalue { ptr, i32 } %2058, 1
  store i32 %2060, ptr %12, align 4
  br label %2070

2061:                                             ; preds = %2051
  %2062 = landingpad { ptr, i32 }
          cleanup
  %2063 = extractvalue { ptr, i32 } %2062, 0
  store ptr %2063, ptr %11, align 8
  %2064 = extractvalue { ptr, i32 } %2062, 1
  store i32 %2064, ptr %12, align 4
  br label %2069

2065:                                             ; preds = %2052
  %2066 = landingpad { ptr, i32 }
          cleanup
  %2067 = extractvalue { ptr, i32 } %2066, 0
  store ptr %2067, ptr %11, align 8
  %2068 = extractvalue { ptr, i32 } %2066, 1
  store i32 %2068, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #0
  br label %2069

2069:                                             ; preds = %2065, %2061
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #0
  br label %2070

2070:                                             ; preds = %2069, %2057
  call void @llvm.lifetime.end.p0(i64 48, ptr %167) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #0
  br label %2170

2071:                                             ; preds = %2002
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %169)
          to label %2072 unwind label %2112

2072:                                             ; preds = %2071
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef nonnull align 8 dereferenceable(32) %157)
          to label %2073 unwind label %2116

2073:                                             ; preds = %2072
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %172, ptr noundef %173)
          to label %2074 unwind label %2120

2074:                                             ; preds = %2073
  %2075 = load i32, ptr %103, align 4, !tbaa !113
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %171, ptr noundef %172, i32 noundef %2075)
          to label %2076 unwind label %2124

2076:                                             ; preds = %2074
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %170, ptr noundef %171)
          to label %2077 unwind label %2128

2077:                                             ; preds = %2076
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull align 8 dereferenceable(24) %163) #0
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %169, ptr noundef %170, ptr noundef %174, i32 noundef 1, i32 noundef 2)
          to label %2078 unwind label %2132

2078:                                             ; preds = %2077
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %174) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %170) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %122)
          to label %2079 unwind label %2112

2079:                                             ; preds = %2078
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %175)
          to label %2080 unwind label %2112

2080:                                             ; preds = %2079
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %175)
          to label %2081 unwind label %2140

2081:                                             ; preds = %2080
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %175) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %122)
          to label %2082 unwind label %2112

2082:                                             ; preds = %2081
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %177)
          to label %2083 unwind label %2112

2083:                                             ; preds = %2082
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef %177)
          to label %2084 unwind label %2144

2084:                                             ; preds = %2083
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %177) #0
  %2085 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %179) #0
  %2086 = load ptr, ptr %96, align 8, !tbaa !5
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %179, ptr noundef nonnull align 8 dereferenceable(88) %2086)
          to label %2087 unwind label %2148

2087:                                             ; preds = %2084
  %2088 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 11
  %2089 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2088, i32 0, i32 3
  %2090 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2089)
          to label %2091 unwind label %2148

2091:                                             ; preds = %2087
  %2092 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 8
  %2093 = getelementptr inbounds %"class.HIR::Function", ptr %109, i32 0, i32 10
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %2085, ptr noundef nonnull align 8 dereferenceable(56) %179, ptr noundef nonnull align 8 dereferenceable(96) %2090, ptr noundef nonnull align 8 dereferenceable(24) %2092, ptr noundef nonnull align 8 dereferenceable(8) %2093)
          to label %2094 unwind label %2148

2094:                                             ; preds = %2091
  call void @llvm.lifetime.end.p0(i64 56, ptr %179) #0
  %2095 = load ptr, ptr %4, align 8, !tbaa !5
  %2096 = getelementptr inbounds %class.TransList, ptr %2095, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #0
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.537") align 8 %180, ptr noundef nonnull align 8 dereferenceable(352) %109)
          to label %2097 unwind label %2152

2097:                                             ; preds = %2094
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %2096, ptr noundef nonnull align 8 dereferenceable(8) %180)
          to label %2098 unwind label %2156

2098:                                             ; preds = %2097
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #0
  %2099 = load ptr, ptr %4, align 8, !tbaa !5
  %2100 = load ptr, ptr %96, align 8, !tbaa !5
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %182, ptr noundef nonnull align 8 dereferenceable(88) %2100)
          to label %2101 unwind label %2161

2101:                                             ; preds = %2098
  %2102 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %2099, ptr noundef %182)
          to label %2103 unwind label %2165

2103:                                             ; preds = %2101
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %182) #0
  store ptr %2102, ptr %181, align 8, !tbaa !5
  %2104 = load ptr, ptr %4, align 8, !tbaa !5
  %2105 = getelementptr inbounds %class.TransList, ptr %2104, i32 0, i32 12
  %2106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2105) #0
  %2107 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2106) #0
  %2108 = load ptr, ptr %181, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.TransList_Function, ptr %2108, i32 0, i32 1
  store ptr %2107, ptr %2109, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %163) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %122) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %122) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %109) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %109) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %108) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %108) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %107) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  br label %2110

2110:                                             ; preds = %2103
  %2111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR4PathEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  br label %1304

2112:                                             ; preds = %2082, %2081, %2079, %2078, %2071
  %2113 = landingpad { ptr, i32 }
          cleanup
  %2114 = extractvalue { ptr, i32 } %2113, 0
  store ptr %2114, ptr %11, align 8
  %2115 = extractvalue { ptr, i32 } %2113, 1
  store i32 %2115, ptr %12, align 4
  br label %2170

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

2120:                                             ; preds = %2073
  %2121 = landingpad { ptr, i32 }
          cleanup
  %2122 = extractvalue { ptr, i32 } %2121, 0
  store ptr %2122, ptr %11, align 8
  %2123 = extractvalue { ptr, i32 } %2121, 1
  store i32 %2123, ptr %12, align 4
  br label %2138

2124:                                             ; preds = %2074
  %2125 = landingpad { ptr, i32 }
          cleanup
  %2126 = extractvalue { ptr, i32 } %2125, 0
  store ptr %2126, ptr %11, align 8
  %2127 = extractvalue { ptr, i32 } %2125, 1
  store i32 %2127, ptr %12, align 4
  br label %2137

2128:                                             ; preds = %2076
  %2129 = landingpad { ptr, i32 }
          cleanup
  %2130 = extractvalue { ptr, i32 } %2129, 0
  store ptr %2130, ptr %11, align 8
  %2131 = extractvalue { ptr, i32 } %2129, 1
  store i32 %2131, ptr %12, align 4
  br label %2136

2132:                                             ; preds = %2077
  %2133 = landingpad { ptr, i32 }
          cleanup
  %2134 = extractvalue { ptr, i32 } %2133, 0
  store ptr %2134, ptr %11, align 8
  %2135 = extractvalue { ptr, i32 } %2133, 1
  store i32 %2135, ptr %12, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %174) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %170) #0
  br label %2136

2136:                                             ; preds = %2132, %2128
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #0
  br label %2137

2137:                                             ; preds = %2136, %2124
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #0
  br label %2138

2138:                                             ; preds = %2137, %2120
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #0
  br label %2139

2139:                                             ; preds = %2138, %2116
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #0
  br label %2170

2140:                                             ; preds = %2080
  %2141 = landingpad { ptr, i32 }
          cleanup
  %2142 = extractvalue { ptr, i32 } %2141, 0
  store ptr %2142, ptr %11, align 8
  %2143 = extractvalue { ptr, i32 } %2141, 1
  store i32 %2143, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %175) #0
  br label %2170

2144:                                             ; preds = %2083
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %11, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %177) #0
  br label %2170

2148:                                             ; preds = %2091, %2087, %2084
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %11, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %179) #0
  br label %2170

2152:                                             ; preds = %2094
  %2153 = landingpad { ptr, i32 }
          cleanup
  %2154 = extractvalue { ptr, i32 } %2153, 0
  store ptr %2154, ptr %11, align 8
  %2155 = extractvalue { ptr, i32 } %2153, 1
  store i32 %2155, ptr %12, align 4
  br label %2160

2156:                                             ; preds = %2097
  %2157 = landingpad { ptr, i32 }
          cleanup
  %2158 = extractvalue { ptr, i32 } %2157, 0
  store ptr %2158, ptr %11, align 8
  %2159 = extractvalue { ptr, i32 } %2157, 1
  store i32 %2159, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #0
  br label %2160

2160:                                             ; preds = %2156, %2152
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  br label %2170

2161:                                             ; preds = %2098
  %2162 = landingpad { ptr, i32 }
          cleanup
  %2163 = extractvalue { ptr, i32 } %2162, 0
  store ptr %2163, ptr %11, align 8
  %2164 = extractvalue { ptr, i32 } %2162, 1
  store i32 %2164, ptr %12, align 4
  br label %2169

2165:                                             ; preds = %2101
  %2166 = landingpad { ptr, i32 }
          cleanup
  %2167 = extractvalue { ptr, i32 } %2166, 0
  store ptr %2167, ptr %11, align 8
  %2168 = extractvalue { ptr, i32 } %2166, 1
  store i32 %2168, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %182) #0
  br label %2169

2169:                                             ; preds = %2165, %2161
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #0
  br label %2170

2170:                                             ; preds = %2169, %2160, %2148, %2144, %2140, %2139, %2112, %2070, %2047
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %163) #0
  br label %2171

2171:                                             ; preds = %2170, %2033, %2016
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #0
  br label %2172

2172:                                             ; preds = %2171, %2015, %2003
  call void @llvm.lifetime.end.p0(i64 32, ptr %157) #0
  br label %2173

2173:                                             ; preds = %2172, %1975, %1939, %1823, %1733, %1732, %1720, %1704
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #0
  br label %2174

2174:                                             ; preds = %2173, %1603
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #0
  br label %2175

2175:                                             ; preds = %2174, %1599
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %122) #0
  br label %2176

2176:                                             ; preds = %2175, %1595
  call void @llvm.lifetime.end.p0(i64 48, ptr %122) #0
  br label %2177

2177:                                             ; preds = %2176, %1594, %1557, %1556, %1538, %1495, %1494
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %109) #0
  br label %2178

2178:                                             ; preds = %2177, %1482
  call void @llvm.lifetime.end.p0(i64 352, ptr %109) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %108) #0
  br label %2179

2179:                                             ; preds = %2178, %1478
  call void @llvm.lifetime.end.p0(i64 128, ptr %108) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #0
  br label %2180

2180:                                             ; preds = %2179, %1474
  call void @llvm.lifetime.end.p0(i64 24, ptr %107) #0
  br label %2181

2181:                                             ; preds = %2180, %1438, %1437, %1420
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #0
  br label %2182

2182:                                             ; preds = %2181, %1416
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %2183

2183:                                             ; preds = %2182, %1412
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %2184

2184:                                             ; preds = %2183, %1408
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %2185

2185:                                             ; preds = %2184, %1404
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  br label %2186

2186:                                             ; preds = %2185, %1400, %1335
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %2210

2187:                                             ; preds = %1306
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %89) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %89) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %183) #0
  %2188 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2189 unwind label %2212

2189:                                             ; preds = %2187
  %2190 = zext i1 %2188 to i64
  %2191 = select i1 %2188, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %184, ptr noundef nonnull align 1 dereferenceable(1) %185) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %183, ptr noundef %2191, ptr noundef %184)
          to label %2192 unwind label %2216

2192:                                             ; preds = %2189
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #0
  %2193 = load ptr, ptr %4, align 8, !tbaa !5
  %2194 = getelementptr inbounds %class.TransList, ptr %2193, i32 0, i32 11
  %2195 = load ptr, ptr %4, align 8, !tbaa !5
  %2196 = getelementptr inbounds %class.TransList, ptr %2195, i32 0, i32 4
  %2197 = call noundef i64 @_ZNKSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %2196) #0
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %2194, i64 noundef %2197)
          to label %2198 unwind label %2220

2198:                                             ; preds = %2192
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #0
  %2199 = load ptr, ptr %4, align 8, !tbaa !5
  %2200 = getelementptr inbounds %class.TransList, ptr %2199, i32 0, i32 4
  store ptr %2200, ptr %186, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #0
  %2201 = load ptr, ptr %186, align 8, !tbaa !5
  %2202 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %2201) #0
  %2203 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %187, i32 0, i32 0
  store ptr %2202, ptr %2203, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #0
  %2204 = load ptr, ptr %186, align 8, !tbaa !5
  %2205 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %2204) #0
  %2206 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %188, i32 0, i32 0
  store ptr %2205, ptr %2206, align 8
  br label %2207

2207:                                             ; preds = %3054, %2198
  %2208 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %188) #0
  br i1 %2208, label %2224, label %2209

2209:                                             ; preds = %2207
  store i32 36, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #0
  br label %3061

2210:                                             ; preds = %2186, %1315
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %89) #0
  br label %2211

2211:                                             ; preds = %2210, %1311, %1307
  call void @llvm.lifetime.end.p0(i64 40, ptr %89) #0
  br label %6578

2212:                                             ; preds = %2187
  %2213 = landingpad { ptr, i32 }
          cleanup
  %2214 = extractvalue { ptr, i32 } %2213, 0
  store ptr %2214, ptr %11, align 8
  %2215 = extractvalue { ptr, i32 } %2213, 1
  store i32 %2215, ptr %12, align 4
  br label %4608

2216:                                             ; preds = %2189
  %2217 = landingpad { ptr, i32 }
          cleanup
  %2218 = extractvalue { ptr, i32 } %2217, 0
  store ptr %2218, ptr %11, align 8
  %2219 = extractvalue { ptr, i32 } %2217, 1
  store i32 %2219, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #0
  br label %4608

2220:                                             ; preds = %2192
  %2221 = landingpad { ptr, i32 }
          cleanup
  %2222 = extractvalue { ptr, i32 } %2221, 0
  store ptr %2222, ptr %11, align 8
  %2223 = extractvalue { ptr, i32 } %2221, 1
  store i32 %2223, ptr %12, align 4
  br label %4607

2224:                                             ; preds = %2207
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #0
  %2225 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %187) #0
  store ptr %2225, ptr %189, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %2226 unwind label %2267

2226:                                             ; preds = %2224
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #0
  %2227 = load ptr, ptr %189, align 8, !tbaa !5
  %2228 = getelementptr inbounds %"struct.std::pair.548", ptr %2227, i32 0, i32 0
  store ptr %2228, ptr %191, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #0
  %2229 = load ptr, ptr %191, align 8, !tbaa !5
  %2230 = getelementptr inbounds %"class.HIR::Path", ptr %2229, i32 0, i32 0
  %2231 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2230)
          to label %2232 unwind label %2271

2232:                                             ; preds = %2226
  %2233 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2231, i32 0, i32 1
  store ptr %2233, ptr %192, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #0
  %2234 = load ptr, ptr %191, align 8, !tbaa !5
  %2235 = getelementptr inbounds %"class.HIR::Path", ptr %2234, i32 0, i32 0
  %2236 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2235)
          to label %2237 unwind label %2275

2237:                                             ; preds = %2232
  %2238 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2236, i32 0, i32 0
  store ptr %2238, ptr %193, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 72, ptr %194) #0
  %2239 = getelementptr inbounds %struct.anon, ptr %194, i32 0, i32 0
  store ptr @.str.20, ptr %2239, align 8, !tbaa !146
  %2240 = getelementptr inbounds %struct.anon, ptr %194, i32 0, i32 1
  %2241 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2242 = getelementptr inbounds i8, ptr %2241, i64 8
  %2243 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2242, i32 0, i32 10
  store ptr %2243, ptr %2240, align 8, !tbaa !148
  %2244 = getelementptr inbounds %struct.anon, ptr %194, i32 0, i32 2
  store i32 0, ptr %2244, align 8, !tbaa !149
  %2245 = getelementptr inbounds %struct.anon, ptr %194, i64 1
  %2246 = getelementptr inbounds %struct.anon, ptr %2245, i32 0, i32 0
  store ptr @.str.21, ptr %2246, align 8, !tbaa !146
  %2247 = getelementptr inbounds %struct.anon, ptr %2245, i32 0, i32 1
  %2248 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2249 = getelementptr inbounds i8, ptr %2248, i64 8
  %2250 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2249, i32 0, i32 11
  store ptr %2250, ptr %2247, align 8, !tbaa !148
  %2251 = getelementptr inbounds %struct.anon, ptr %2245, i32 0, i32 2
  store i32 1, ptr %2251, align 8, !tbaa !149
  %2252 = getelementptr inbounds %struct.anon, ptr %194, i64 2
  %2253 = getelementptr inbounds %struct.anon, ptr %2252, i32 0, i32 0
  store ptr @.str.22, ptr %2253, align 8, !tbaa !146
  %2254 = getelementptr inbounds %struct.anon, ptr %2252, i32 0, i32 1
  %2255 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2256 = getelementptr inbounds i8, ptr %2255, i64 8
  %2257 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2256, i32 0, i32 12
  store ptr %2257, ptr %2254, align 8, !tbaa !148
  %2258 = getelementptr inbounds %struct.anon, ptr %2252, i32 0, i32 2
  store i32 2, ptr %2258, align 8, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #0
  %2259 = load ptr, ptr %192, align 8, !tbaa !5
  %2260 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2259, i32 0, i32 0
  %2261 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2262 = getelementptr inbounds i8, ptr %2261, i64 8
  %2263 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2262, i32 0, i32 10
  %2264 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2260, ptr noundef nonnull align 8 dereferenceable(8) %2263)
          to label %2265 unwind label %2279

2265:                                             ; preds = %2237
  br i1 %2264, label %2266, label %2283

2266:                                             ; preds = %2265
  store i64 0, ptr %195, align 8, !tbaa !144
  br label %2307

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

2271:                                             ; preds = %2226
  %2272 = landingpad { ptr, i32 }
          cleanup
  %2273 = extractvalue { ptr, i32 } %2272, 0
  store ptr %2273, ptr %11, align 8
  %2274 = extractvalue { ptr, i32 } %2272, 1
  store i32 %2274, ptr %12, align 4
  br label %3059

2275:                                             ; preds = %2232
  %2276 = landingpad { ptr, i32 }
          cleanup
  %2277 = extractvalue { ptr, i32 } %2276, 0
  store ptr %2277, ptr %11, align 8
  %2278 = extractvalue { ptr, i32 } %2276, 1
  store i32 %2278, ptr %12, align 4
  br label %3058

2279:                                             ; preds = %2295, %2283, %2237
  %2280 = landingpad { ptr, i32 }
          cleanup
  %2281 = extractvalue { ptr, i32 } %2280, 0
  store ptr %2281, ptr %11, align 8
  %2282 = extractvalue { ptr, i32 } %2280, 1
  store i32 %2282, ptr %12, align 4
  br label %3057

2283:                                             ; preds = %2265
  %2284 = load ptr, ptr %192, align 8, !tbaa !5
  %2285 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2284, i32 0, i32 0
  %2286 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2287 = getelementptr inbounds i8, ptr %2286, i64 8
  %2288 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2287, i32 0, i32 11
  %2289 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2285, ptr noundef nonnull align 8 dereferenceable(8) %2288)
          to label %2290 unwind label %2279

2290:                                             ; preds = %2283
  br i1 %2289, label %2291, label %2292

2291:                                             ; preds = %2290
  store i64 1, ptr %195, align 8, !tbaa !144
  br label %2306

2292:                                             ; preds = %2290
  %2293 = load i32, ptr @gTargetVersion, align 4, !tbaa !9
  %2294 = icmp sge i32 %2293, 2
  br i1 %2294, label %2295, label %2304

2295:                                             ; preds = %2292
  %2296 = load ptr, ptr %192, align 8, !tbaa !5
  %2297 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2296, i32 0, i32 0
  %2298 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %2299 = getelementptr inbounds i8, ptr %2298, i64 8
  %2300 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2299, i32 0, i32 12
  %2301 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2297, ptr noundef nonnull align 8 dereferenceable(8) %2300)
          to label %2302 unwind label %2279

2302:                                             ; preds = %2295
  br i1 %2301, label %2303, label %2304

2303:                                             ; preds = %2302
  store i64 2, ptr %195, align 8, !tbaa !144
  br label %2305

2304:                                             ; preds = %2302, %2292
  store i64 3, ptr %195, align 8, !tbaa !144
  br label %2305

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

2306:                                             ; preds = %2305, %2291
  br label %2307

2307:                                             ; preds = %2306, %2266
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #0
  %2308 = load ptr, ptr %193, align 8, !tbaa !5
  %2309 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2308)
          to label %2310 unwind label %2366

2310:                                             ; preds = %2307
  %2311 = invoke noundef ptr @_ZNK3HIR8TypeData17opt_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2309)
          to label %2312 unwind label %2366

2312:                                             ; preds = %2310
  store ptr %2311, ptr %196, align 8, !tbaa !5
  %2313 = load ptr, ptr %196, align 8, !tbaa !5
  %2314 = icmp ne ptr %2313, null
  br i1 %2314, label %2315, label %2671

2315:                                             ; preds = %2312
  br label %2316

2316:                                             ; preds = %2664, %2315
  %2317 = load i64, ptr %195, align 8, !tbaa !144
  %2318 = icmp ult i64 %2317, 3
  br i1 %2318, label %2319, label %2670

2319:                                             ; preds = %2316
  call void @llvm.lifetime.start.p0(i64 1, ptr %197) #0
  %2320 = load i64, ptr %195, align 8, !tbaa !144
  %2321 = icmp eq i64 %2320, 2
  %2322 = zext i1 %2321 to i8
  store i8 %2322, ptr %197, align 1, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #0
  %2323 = load i64, ptr %195, align 8, !tbaa !144
  %2324 = getelementptr inbounds [3 x %struct.anon], ptr %194, i64 0, i64 %2323
  store ptr %2324, ptr %198, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %199) #0
  %2325 = load ptr, ptr %191, align 8, !tbaa !5
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %199, ptr noundef nonnull align 8 dereferenceable(88) %2325)
          to label %2326 unwind label %2370

2326:                                             ; preds = %2319
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #0
  %2327 = load ptr, ptr %198, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.anon, ptr %2327, i32 0, i32 0
  %2329 = load ptr, ptr %2328, align 8, !tbaa !146
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef %2329)
          to label %2330 unwind label %2374

2330:                                             ; preds = %2326
  %2331 = getelementptr inbounds %"class.HIR::Path", ptr %199, i32 0, i32 0
  %2332 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2331)
          to label %2333 unwind label %2378

2333:                                             ; preds = %2330
  %2334 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2332, i32 0, i32 2
  %2335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %2334, ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %2336 unwind label %2378

2336:                                             ; preds = %2333
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #0
  %2337 = load ptr, ptr %198, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.anon, ptr %2337, i32 0, i32 1
  %2339 = load ptr, ptr %2338, align 8, !tbaa !148
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %201, ptr noundef nonnull align 8 dereferenceable(8) %2339)
          to label %2340 unwind label %2383

2340:                                             ; preds = %2336
  %2341 = getelementptr inbounds %"class.HIR::Path", ptr %199, i32 0, i32 0
  %2342 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2341)
          to label %2343 unwind label %2387

2343:                                             ; preds = %2340
  %2344 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2342, i32 0, i32 1
  %2345 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2344, i32 0, i32 0
  %2346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR10SimplePathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2345, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %2347 unwind label %2387

2347:                                             ; preds = %2343
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #0
  %2348 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %203, ptr noundef nonnull align 8 dereferenceable(88) %199) #0
  %2349 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %2348, ptr noundef %203)
          to label %2350 unwind label %2392

2350:                                             ; preds = %2347
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %203) #0
  store ptr %2349, ptr %202, align 8, !tbaa !5
  %2351 = load ptr, ptr %202, align 8, !tbaa !5
  %2352 = icmp ne ptr %2351, null
  br i1 %2352, label %2353, label %2663

2353:                                             ; preds = %2350
  call void @llvm.lifetime.start.p0(i64 144, ptr %204) #0
  %2354 = load ptr, ptr %196, align 8, !tbaa !5
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %204, ptr noundef nonnull align 8 dereferenceable(112) %2354, ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %2355 unwind label %2396

2355:                                             ; preds = %2353
  call void @llvm.lifetime.start.p0(i64 24, ptr %205) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #0
  %2356 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %204, i32 0, i32 5
  store ptr %2356, ptr %206, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #0
  %2357 = load ptr, ptr %206, align 8, !tbaa !5
  %2358 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2357) #0
  %2359 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.550", ptr %207, i32 0, i32 0
  store ptr %2358, ptr %2359, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #0
  %2360 = load ptr, ptr %206, align 8, !tbaa !5
  %2361 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2360) #0
  %2362 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.550", ptr %208, i32 0, i32 0
  store ptr %2361, ptr %2362, align 8
  br label %2363

2363:                                             ; preds = %2405, %2355
  %2364 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %208) #0
  br i1 %2364, label %2400, label %2365

2365:                                             ; preds = %2363
  store i32 41, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  br label %2416

2366:                                             ; preds = %2310, %2307
  %2367 = landingpad { ptr, i32 }
          cleanup
  %2368 = extractvalue { ptr, i32 } %2367, 0
  store ptr %2368, ptr %11, align 8
  %2369 = extractvalue { ptr, i32 } %2367, 1
  store i32 %2369, ptr %12, align 4
  br label %3056

2370:                                             ; preds = %2319
  %2371 = landingpad { ptr, i32 }
          cleanup
  %2372 = extractvalue { ptr, i32 } %2371, 0
  store ptr %2372, ptr %11, align 8
  %2373 = extractvalue { ptr, i32 } %2371, 1
  store i32 %2373, ptr %12, align 4
  br label %2669

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

2378:                                             ; preds = %2333, %2330
  %2379 = landingpad { ptr, i32 }
          cleanup
  %2380 = extractvalue { ptr, i32 } %2379, 0
  store ptr %2380, ptr %11, align 8
  %2381 = extractvalue { ptr, i32 } %2379, 1
  store i32 %2381, ptr %12, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #0
  br label %2382

2382:                                             ; preds = %2378, %2374
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #0
  br label %2668

2383:                                             ; preds = %2336
  %2384 = landingpad { ptr, i32 }
          cleanup
  %2385 = extractvalue { ptr, i32 } %2384, 0
  store ptr %2385, ptr %11, align 8
  %2386 = extractvalue { ptr, i32 } %2384, 1
  store i32 %2386, ptr %12, align 4
  br label %2391

2387:                                             ; preds = %2343, %2340
  %2388 = landingpad { ptr, i32 }
          cleanup
  %2389 = extractvalue { ptr, i32 } %2388, 0
  store ptr %2389, ptr %11, align 8
  %2390 = extractvalue { ptr, i32 } %2388, 1
  store i32 %2390, ptr %12, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #0
  br label %2391

2391:                                             ; preds = %2387, %2383
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  br label %2668

2392:                                             ; preds = %2347
  %2393 = landingpad { ptr, i32 }
          cleanup
  %2394 = extractvalue { ptr, i32 } %2393, 0
  store ptr %2394, ptr %11, align 8
  %2395 = extractvalue { ptr, i32 } %2393, 1
  store i32 %2395, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %203) #0
  br label %2667

2396:                                             ; preds = %2353
  %2397 = landingpad { ptr, i32 }
          cleanup
  %2398 = extractvalue { ptr, i32 } %2397, 0
  store ptr %2398, ptr %11, align 8
  %2399 = extractvalue { ptr, i32 } %2397, 1
  store i32 %2399, ptr %12, align 4
  br label %2662

2400:                                             ; preds = %2363
  call void @llvm.lifetime.start.p0(i64 8, ptr %209) #0
  %2401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %207) #0
  store ptr %2401, ptr %209, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #0
  %2402 = load ptr, ptr %209, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %210, ptr noundef nonnull align 8 dereferenceable(8) %2402)
          to label %2403 unwind label %2407

2403:                                             ; preds = %2400
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %2404 unwind label %2411

2404:                                             ; preds = %2403
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #0
  br label %2405

2405:                                             ; preds = %2404
  %2406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %207) #0
  br label %2363

2407:                                             ; preds = %2400
  %2408 = landingpad { ptr, i32 }
          cleanup
  %2409 = extractvalue { ptr, i32 } %2408, 0
  store ptr %2409, ptr %11, align 8
  %2410 = extractvalue { ptr, i32 } %2408, 1
  store i32 %2410, ptr %12, align 4
  br label %2415

2411:                                             ; preds = %2403
  %2412 = landingpad { ptr, i32 }
          cleanup
  %2413 = extractvalue { ptr, i32 } %2412, 0
  store ptr %2413, ptr %11, align 8
  %2414 = extractvalue { ptr, i32 } %2412, 1
  store i32 %2414, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #0
  br label %2415

2415:                                             ; preds = %2411, %2407
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  br label %2661

2416:                                             ; preds = %2365
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef %212)
          to label %2417 unwind label %2471

2417:                                             ; preds = %2416
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #0
  %2418 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2418, ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %2419 unwind label %2475

2419:                                             ; preds = %2417
  call void @llvm.lifetime.start.p0(i64 352, ptr %213) #0
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %213)
          to label %2420 unwind label %2479

2420:                                             ; preds = %2419
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #0
  %2421 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %204, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %214, ptr noundef nonnull align 8 dereferenceable(8) %2421)
          to label %2422 unwind label %2483

2422:                                             ; preds = %2420
  %2423 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 10
  %2424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2423, ptr noundef nonnull align 8 dereferenceable(8) %214)
          to label %2425 unwind label %2487

2425:                                             ; preds = %2422
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #0
  %2426 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2426, ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %2427 unwind label %2492

2427:                                             ; preds = %2425
  %2428 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %215) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %216) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %216)
          to label %2429 unwind label %2496

2429:                                             ; preds = %2427
  call void @llvm.lifetime.start.p0(i64 8, ptr %217) #0
  %2430 = load i8, ptr %197, align 1, !tbaa !150, !range !151, !noundef !152
  %2431 = trunc i8 %2430 to i1
  store i1 false, ptr %219, align 1
  br i1 %2431, label %2439, label %2432

2432:                                             ; preds = %2429
  %2433 = load ptr, ptr %198, align 8, !tbaa !5
  %2434 = getelementptr inbounds %struct.anon, ptr %2433, i32 0, i32 2
  %2435 = load i32, ptr %2434, align 8, !tbaa !149
  %2436 = load ptr, ptr %193, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %218, ptr noundef nonnull align 8 dereferenceable(8) %2436)
          to label %2437 unwind label %2500

2437:                                             ; preds = %2432
  store i1 true, ptr %219, align 1
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %217, i32 noundef %2435, ptr noundef %218)
          to label %2438 unwind label %2504

2438:                                             ; preds = %2437
  br label %2442

2439:                                             ; preds = %2429
  %2440 = load ptr, ptr %193, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %217, ptr noundef nonnull align 8 dereferenceable(8) %2440)
          to label %2441 unwind label %2504

2441:                                             ; preds = %2439
  br label %2442

2442:                                             ; preds = %2441, %2438
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %215, ptr noundef nonnull align 8 dereferenceable(212) %216, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %2443 unwind label %2508

2443:                                             ; preds = %2442
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2428, ptr noundef nonnull align 8 dereferenceable(224) %215)
          to label %2444 unwind label %2512

2444:                                             ; preds = %2443
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %215) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #0
  %2445 = load i1, ptr %219, align 1
  br i1 %2445, label %2446, label %2447

2446:                                             ; preds = %2444
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #0
  br label %2447

2447:                                             ; preds = %2446, %2444
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %216) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %216) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %215) #0
  %2448 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %220) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %221) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %221)
          to label %2449 unwind label %2523

2449:                                             ; preds = %2447
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %220, ptr noundef nonnull align 8 dereferenceable(212) %221, ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %2450 unwind label %2527

2450:                                             ; preds = %2449
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2448, ptr noundef nonnull align 8 dereferenceable(224) %220)
          to label %2451 unwind label %2531

2451:                                             ; preds = %2450
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %220) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %221) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %221) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %220) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #0
  %2452 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %2453 unwind label %2537

2453:                                             ; preds = %2451
  call void @llvm.memset.p0.i64(ptr align 16 %2452, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %2452)
          to label %2454 unwind label %2541

2454:                                             ; preds = %2453
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef %2452)
          to label %2455 unwind label %2537

2455:                                             ; preds = %2454
  %2456 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 11
  %2457 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2456, i32 0, i32 3
  %2458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2457, ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %2459 unwind label %2545

2459:                                             ; preds = %2455
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %223) #0
  %2460 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 11
  %2461 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2460, i32 0, i32 3
  %2462 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2461)
          to label %2463 unwind label %2550

2463:                                             ; preds = %2459
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %223, ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(96) %2462)
          to label %2464 unwind label %2550

2464:                                             ; preds = %2463
  call void @llvm.lifetime.start.p0(i64 24, ptr %224) #0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %224) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #0
  store i64 0, ptr %225, align 8, !tbaa !144
  br label %2465

2465:                                             ; preds = %2561, %2464
  %2466 = load i64, ptr %225, align 8, !tbaa !144
  %2467 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %204, i32 0, i32 5
  %2468 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2467) #0
  %2469 = icmp ult i64 %2466, %2468
  br i1 %2469, label %2554, label %2470

2470:                                             ; preds = %2465
  store i32 43, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  br label %2583

2471:                                             ; preds = %2416
  %2472 = landingpad { ptr, i32 }
          cleanup
  %2473 = extractvalue { ptr, i32 } %2472, 0
  store ptr %2473, ptr %11, align 8
  %2474 = extractvalue { ptr, i32 } %2472, 1
  store i32 %2474, ptr %12, align 4
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212) #0
  br label %2660

2475:                                             ; preds = %2417
  %2476 = landingpad { ptr, i32 }
          cleanup
  %2477 = extractvalue { ptr, i32 } %2476, 0
  store ptr %2477, ptr %11, align 8
  %2478 = extractvalue { ptr, i32 } %2476, 1
  store i32 %2478, ptr %12, align 4
  br label %2659

2479:                                             ; preds = %2419
  %2480 = landingpad { ptr, i32 }
          cleanup
  %2481 = extractvalue { ptr, i32 } %2480, 0
  store ptr %2481, ptr %11, align 8
  %2482 = extractvalue { ptr, i32 } %2480, 1
  store i32 %2482, ptr %12, align 4
  br label %2658

2483:                                             ; preds = %2420
  %2484 = landingpad { ptr, i32 }
          cleanup
  %2485 = extractvalue { ptr, i32 } %2484, 0
  store ptr %2485, ptr %11, align 8
  %2486 = extractvalue { ptr, i32 } %2484, 1
  store i32 %2486, ptr %12, align 4
  br label %2491

2487:                                             ; preds = %2422
  %2488 = landingpad { ptr, i32 }
          cleanup
  %2489 = extractvalue { ptr, i32 } %2488, 0
  store ptr %2489, ptr %11, align 8
  %2490 = extractvalue { ptr, i32 } %2488, 1
  store i32 %2490, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #0
  br label %2491

2491:                                             ; preds = %2487, %2483
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #0
  br label %2657

2492:                                             ; preds = %2425
  %2493 = landingpad { ptr, i32 }
          cleanup
  %2494 = extractvalue { ptr, i32 } %2493, 0
  store ptr %2494, ptr %11, align 8
  %2495 = extractvalue { ptr, i32 } %2493, 1
  store i32 %2495, ptr %12, align 4
  br label %2657

2496:                                             ; preds = %2427
  %2497 = landingpad { ptr, i32 }
          cleanup
  %2498 = extractvalue { ptr, i32 } %2497, 0
  store ptr %2498, ptr %11, align 8
  %2499 = extractvalue { ptr, i32 } %2497, 1
  store i32 %2499, ptr %12, align 4
  br label %2522

2500:                                             ; preds = %2432
  %2501 = landingpad { ptr, i32 }
          cleanup
  %2502 = extractvalue { ptr, i32 } %2501, 0
  store ptr %2502, ptr %11, align 8
  %2503 = extractvalue { ptr, i32 } %2501, 1
  store i32 %2503, ptr %12, align 4
  br label %2521

2504:                                             ; preds = %2439, %2437
  %2505 = landingpad { ptr, i32 }
          cleanup
  %2506 = extractvalue { ptr, i32 } %2505, 0
  store ptr %2506, ptr %11, align 8
  %2507 = extractvalue { ptr, i32 } %2505, 1
  store i32 %2507, ptr %12, align 4
  br label %2517

2508:                                             ; preds = %2442
  %2509 = landingpad { ptr, i32 }
          cleanup
  %2510 = extractvalue { ptr, i32 } %2509, 0
  store ptr %2510, ptr %11, align 8
  %2511 = extractvalue { ptr, i32 } %2509, 1
  store i32 %2511, ptr %12, align 4
  br label %2516

2512:                                             ; preds = %2443
  %2513 = landingpad { ptr, i32 }
          cleanup
  %2514 = extractvalue { ptr, i32 } %2513, 0
  store ptr %2514, ptr %11, align 8
  %2515 = extractvalue { ptr, i32 } %2513, 1
  store i32 %2515, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %215) #0
  br label %2516

2516:                                             ; preds = %2512, %2508
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #0
  br label %2517

2517:                                             ; preds = %2516, %2504
  %2518 = load i1, ptr %219, align 1
  br i1 %2518, label %2519, label %2520

2519:                                             ; preds = %2517
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #0
  br label %2520

2520:                                             ; preds = %2519, %2517
  br label %2521

2521:                                             ; preds = %2520, %2500
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %216) #0
  br label %2522

2522:                                             ; preds = %2521, %2496
  call void @llvm.lifetime.end.p0(i64 216, ptr %216) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %215) #0
  br label %2657

2523:                                             ; preds = %2447
  %2524 = landingpad { ptr, i32 }
          cleanup
  %2525 = extractvalue { ptr, i32 } %2524, 0
  store ptr %2525, ptr %11, align 8
  %2526 = extractvalue { ptr, i32 } %2524, 1
  store i32 %2526, ptr %12, align 4
  br label %2536

2527:                                             ; preds = %2449
  %2528 = landingpad { ptr, i32 }
          cleanup
  %2529 = extractvalue { ptr, i32 } %2528, 0
  store ptr %2529, ptr %11, align 8
  %2530 = extractvalue { ptr, i32 } %2528, 1
  store i32 %2530, ptr %12, align 4
  br label %2535

2531:                                             ; preds = %2450
  %2532 = landingpad { ptr, i32 }
          cleanup
  %2533 = extractvalue { ptr, i32 } %2532, 0
  store ptr %2533, ptr %11, align 8
  %2534 = extractvalue { ptr, i32 } %2532, 1
  store i32 %2534, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %220) #0
  br label %2535

2535:                                             ; preds = %2531, %2527
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %221) #0
  br label %2536

2536:                                             ; preds = %2535, %2523
  call void @llvm.lifetime.end.p0(i64 216, ptr %221) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %220) #0
  br label %2657

2537:                                             ; preds = %2454, %2451
  %2538 = landingpad { ptr, i32 }
          cleanup
  %2539 = extractvalue { ptr, i32 } %2538, 0
  store ptr %2539, ptr %11, align 8
  %2540 = extractvalue { ptr, i32 } %2538, 1
  store i32 %2540, ptr %12, align 4
  br label %2549

2541:                                             ; preds = %2453
  %2542 = landingpad { ptr, i32 }
          cleanup
  %2543 = extractvalue { ptr, i32 } %2542, 0
  store ptr %2543, ptr %11, align 8
  %2544 = extractvalue { ptr, i32 } %2542, 1
  store i32 %2544, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %2452, i64 noundef 96) #15
  br label %2549

2545:                                             ; preds = %2455
  %2546 = landingpad { ptr, i32 }
          cleanup
  %2547 = extractvalue { ptr, i32 } %2546, 0
  store ptr %2547, ptr %11, align 8
  %2548 = extractvalue { ptr, i32 } %2546, 1
  store i32 %2548, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #0
  br label %2549

2549:                                             ; preds = %2545, %2541, %2537
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #0
  br label %2657

2550:                                             ; preds = %2463, %2459
  %2551 = landingpad { ptr, i32 }
          cleanup
  %2552 = extractvalue { ptr, i32 } %2551, 0
  store ptr %2552, ptr %11, align 8
  %2553 = extractvalue { ptr, i32 } %2551, 1
  store i32 %2553, ptr %12, align 4
  br label %2656

2554:                                             ; preds = %2465
  call void @llvm.lifetime.start.p0(i64 48, ptr %226) #0
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %228, i32 noundef 1)
          to label %2555 unwind label %2564

2555:                                             ; preds = %2554
  %2556 = load i64, ptr %225, align 8, !tbaa !144
  %2557 = trunc i64 %2556 to i32
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %227, ptr noundef %228, i32 noundef %2557)
          to label %2558 unwind label %2568

2558:                                             ; preds = %2555
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %226, ptr noundef %227)
          to label %2559 unwind label %2572

2559:                                             ; preds = %2558
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %224, ptr noundef nonnull align 8 dereferenceable(48) %226)
          to label %2560 unwind label %2576

2560:                                             ; preds = %2559
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %226) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %226) #0
  br label %2561

2561:                                             ; preds = %2560
  %2562 = load i64, ptr %225, align 8, !tbaa !144
  %2563 = add i64 %2562, 1
  store i64 %2563, ptr %225, align 8, !tbaa !144
  br label %2465, !llvm.loop !153

2564:                                             ; preds = %2554
  %2565 = landingpad { ptr, i32 }
          cleanup
  %2566 = extractvalue { ptr, i32 } %2565, 0
  store ptr %2566, ptr %11, align 8
  %2567 = extractvalue { ptr, i32 } %2565, 1
  store i32 %2567, ptr %12, align 4
  br label %2582

2568:                                             ; preds = %2555
  %2569 = landingpad { ptr, i32 }
          cleanup
  %2570 = extractvalue { ptr, i32 } %2569, 0
  store ptr %2570, ptr %11, align 8
  %2571 = extractvalue { ptr, i32 } %2569, 1
  store i32 %2571, ptr %12, align 4
  br label %2581

2572:                                             ; preds = %2558
  %2573 = landingpad { ptr, i32 }
          cleanup
  %2574 = extractvalue { ptr, i32 } %2573, 0
  store ptr %2574, ptr %11, align 8
  %2575 = extractvalue { ptr, i32 } %2573, 1
  store i32 %2575, ptr %12, align 4
  br label %2580

2576:                                             ; preds = %2559
  %2577 = landingpad { ptr, i32 }
          cleanup
  %2578 = extractvalue { ptr, i32 } %2577, 0
  store ptr %2578, ptr %11, align 8
  %2579 = extractvalue { ptr, i32 } %2577, 1
  store i32 %2579, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %226) #0
  br label %2580

2580:                                             ; preds = %2576, %2572
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #0
  br label %2581

2581:                                             ; preds = %2580, %2568
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #0
  br label %2582

2582:                                             ; preds = %2581, %2564
  call void @llvm.lifetime.end.p0(i64 48, ptr %226) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  br label %2655

2583:                                             ; preds = %2470
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %229)
          to label %2584 unwind label %2616

2584:                                             ; preds = %2583
  %2585 = load ptr, ptr %196, align 8, !tbaa !5
  %2586 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2585, i32 0, i32 0
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %231, ptr noundef nonnull align 8 dereferenceable(88) %2586)
          to label %2587 unwind label %2620

2587:                                             ; preds = %2584
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %230, ptr noundef %231)
          to label %2588 unwind label %2624

2588:                                             ; preds = %2587
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %232, ptr noundef nonnull align 8 dereferenceable(24) %224) #0
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %223, ptr noundef %229, ptr noundef %230, ptr noundef %232, i32 noundef 1, i32 noundef 2)
          to label %2589 unwind label %2628

2589:                                             ; preds = %2588
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %232) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %230) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %231) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %223)
          to label %2590 unwind label %2616

2590:                                             ; preds = %2589
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %233)
          to label %2591 unwind label %2616

2591:                                             ; preds = %2590
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %223, ptr noundef %233)
          to label %2592 unwind label %2634

2592:                                             ; preds = %2591
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %233) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %223)
          to label %2593 unwind label %2616

2593:                                             ; preds = %2592
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %235)
          to label %2594 unwind label %2616

2594:                                             ; preds = %2593
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %223, ptr noundef %235)
          to label %2595 unwind label %2638

2595:                                             ; preds = %2594
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %235) #0
  %2596 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %237) #0
  %2597 = load ptr, ptr %191, align 8, !tbaa !5
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %237, ptr noundef nonnull align 8 dereferenceable(88) %2597)
          to label %2598 unwind label %2642

2598:                                             ; preds = %2595
  %2599 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 11
  %2600 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2599, i32 0, i32 3
  %2601 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2600)
          to label %2602 unwind label %2642

2602:                                             ; preds = %2598
  %2603 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 8
  %2604 = getelementptr inbounds %"class.HIR::Function", ptr %213, i32 0, i32 10
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %2596, ptr noundef nonnull align 8 dereferenceable(56) %237, ptr noundef nonnull align 8 dereferenceable(96) %2601, ptr noundef nonnull align 8 dereferenceable(24) %2603, ptr noundef nonnull align 8 dereferenceable(8) %2604)
          to label %2605 unwind label %2642

2605:                                             ; preds = %2602
  call void @llvm.lifetime.end.p0(i64 56, ptr %237) #0
  %2606 = load ptr, ptr %4, align 8, !tbaa !5
  %2607 = getelementptr inbounds %class.TransList, ptr %2606, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %238) #0
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.537") align 8 %238, ptr noundef nonnull align 8 dereferenceable(352) %213)
          to label %2608 unwind label %2646

2608:                                             ; preds = %2605
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %2607, ptr noundef nonnull align 8 dereferenceable(8) %238)
          to label %2609 unwind label %2650

2609:                                             ; preds = %2608
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  %2610 = load ptr, ptr %4, align 8, !tbaa !5
  %2611 = getelementptr inbounds %class.TransList, ptr %2610, i32 0, i32 12
  %2612 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2611) #0
  %2613 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2612) #0
  %2614 = load ptr, ptr %202, align 8, !tbaa !5
  %2615 = getelementptr inbounds %struct.TransList_Function, ptr %2614, i32 0, i32 1
  store ptr %2613, ptr %2615, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %224) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %224) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %223) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %223) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %213) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %213) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %205) #0
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %204) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %204) #0
  br label %2663

2616:                                             ; preds = %2593, %2592, %2590, %2589, %2583
  %2617 = landingpad { ptr, i32 }
          cleanup
  %2618 = extractvalue { ptr, i32 } %2617, 0
  store ptr %2618, ptr %11, align 8
  %2619 = extractvalue { ptr, i32 } %2617, 1
  store i32 %2619, ptr %12, align 4
  br label %2655

2620:                                             ; preds = %2584
  %2621 = landingpad { ptr, i32 }
          cleanup
  %2622 = extractvalue { ptr, i32 } %2621, 0
  store ptr %2622, ptr %11, align 8
  %2623 = extractvalue { ptr, i32 } %2621, 1
  store i32 %2623, ptr %12, align 4
  br label %2633

2624:                                             ; preds = %2587
  %2625 = landingpad { ptr, i32 }
          cleanup
  %2626 = extractvalue { ptr, i32 } %2625, 0
  store ptr %2626, ptr %11, align 8
  %2627 = extractvalue { ptr, i32 } %2625, 1
  store i32 %2627, ptr %12, align 4
  br label %2632

2628:                                             ; preds = %2588
  %2629 = landingpad { ptr, i32 }
          cleanup
  %2630 = extractvalue { ptr, i32 } %2629, 0
  store ptr %2630, ptr %11, align 8
  %2631 = extractvalue { ptr, i32 } %2629, 1
  store i32 %2631, ptr %12, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %232) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %230) #0
  br label %2632

2632:                                             ; preds = %2628, %2624
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %231) #0
  br label %2633

2633:                                             ; preds = %2632, %2620
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #0
  br label %2655

2634:                                             ; preds = %2591
  %2635 = landingpad { ptr, i32 }
          cleanup
  %2636 = extractvalue { ptr, i32 } %2635, 0
  store ptr %2636, ptr %11, align 8
  %2637 = extractvalue { ptr, i32 } %2635, 1
  store i32 %2637, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %233) #0
  br label %2655

2638:                                             ; preds = %2594
  %2639 = landingpad { ptr, i32 }
          cleanup
  %2640 = extractvalue { ptr, i32 } %2639, 0
  store ptr %2640, ptr %11, align 8
  %2641 = extractvalue { ptr, i32 } %2639, 1
  store i32 %2641, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %235) #0
  br label %2655

2642:                                             ; preds = %2602, %2598, %2595
  %2643 = landingpad { ptr, i32 }
          cleanup
  %2644 = extractvalue { ptr, i32 } %2643, 0
  store ptr %2644, ptr %11, align 8
  %2645 = extractvalue { ptr, i32 } %2643, 1
  store i32 %2645, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %237) #0
  br label %2655

2646:                                             ; preds = %2605
  %2647 = landingpad { ptr, i32 }
          cleanup
  %2648 = extractvalue { ptr, i32 } %2647, 0
  store ptr %2648, ptr %11, align 8
  %2649 = extractvalue { ptr, i32 } %2647, 1
  store i32 %2649, ptr %12, align 4
  br label %2654

2650:                                             ; preds = %2608
  %2651 = landingpad { ptr, i32 }
          cleanup
  %2652 = extractvalue { ptr, i32 } %2651, 0
  store ptr %2652, ptr %11, align 8
  %2653 = extractvalue { ptr, i32 } %2651, 1
  store i32 %2653, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #0
  br label %2654

2654:                                             ; preds = %2650, %2646
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  br label %2655

2655:                                             ; preds = %2654, %2642, %2638, %2634, %2633, %2616, %2582
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %224) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %224) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %223) #0
  br label %2656

2656:                                             ; preds = %2655, %2550
  call void @llvm.lifetime.end.p0(i64 48, ptr %223) #0
  br label %2657

2657:                                             ; preds = %2656, %2549, %2536, %2522, %2492, %2491
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %213) #0
  br label %2658

2658:                                             ; preds = %2657, %2479
  call void @llvm.lifetime.end.p0(i64 352, ptr %213) #0
  br label %2659

2659:                                             ; preds = %2658, %2475
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  br label %2660

2660:                                             ; preds = %2659, %2471
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  br label %2661

2661:                                             ; preds = %2660, %2415
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %205) #0
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %204) #0
  br label %2662

2662:                                             ; preds = %2661, %2396
  call void @llvm.lifetime.end.p0(i64 144, ptr %204) #0
  br label %2667

2663:                                             ; preds = %2609, %2350
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %199) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %199) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #0
  br label %2664

2664:                                             ; preds = %2663
  %2665 = load i64, ptr %195, align 8, !tbaa !144
  %2666 = add i64 %2665, 1
  store i64 %2666, ptr %195, align 8, !tbaa !144
  br label %2316, !llvm.loop !154

2667:                                             ; preds = %2662, %2392
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  br label %2668

2668:                                             ; preds = %2667, %2391, %2382
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %199) #0
  br label %2669

2669:                                             ; preds = %2668, %2370
  call void @llvm.lifetime.end.p0(i64 88, ptr %199) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #0
  br label %3056

2670:                                             ; preds = %2316
  br label %3053

2671:                                             ; preds = %2312
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #0
  %2672 = load ptr, ptr %193, align 8, !tbaa !5
  %2673 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2672)
          to label %2674 unwind label %2729

2674:                                             ; preds = %2671
  %2675 = invoke noundef ptr @_ZNK3HIR8TypeData12opt_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2673)
          to label %2676 unwind label %2729

2676:                                             ; preds = %2674
  store ptr %2675, ptr %239, align 8, !tbaa !5
  %2677 = load ptr, ptr %239, align 8, !tbaa !5
  %2678 = icmp ne ptr %2677, null
  br i1 %2678, label %2679, label %3051

2679:                                             ; preds = %2676
  br label %2680

2680:                                             ; preds = %3044, %2679
  %2681 = load i64, ptr %195, align 8, !tbaa !144
  %2682 = icmp ult i64 %2681, 3
  br i1 %2682, label %2683, label %3050

2683:                                             ; preds = %2680
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #0
  %2684 = load i64, ptr %195, align 8, !tbaa !144
  %2685 = icmp eq i64 %2684, 2
  %2686 = zext i1 %2685 to i8
  store i8 %2686, ptr %240, align 1, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #0
  %2687 = load i64, ptr %195, align 8, !tbaa !144
  %2688 = getelementptr inbounds [3 x %struct.anon], ptr %194, i64 0, i64 %2687
  store ptr %2688, ptr %241, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %242) #0
  %2689 = load ptr, ptr %191, align 8, !tbaa !5
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %242, ptr noundef nonnull align 8 dereferenceable(88) %2689)
          to label %2690 unwind label %2733

2690:                                             ; preds = %2683
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #0
  %2691 = load ptr, ptr %241, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.anon, ptr %2691, i32 0, i32 0
  %2693 = load ptr, ptr %2692, align 8, !tbaa !146
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef %2693)
          to label %2694 unwind label %2737

2694:                                             ; preds = %2690
  %2695 = getelementptr inbounds %"class.HIR::Path", ptr %242, i32 0, i32 0
  %2696 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2695)
          to label %2697 unwind label %2741

2697:                                             ; preds = %2694
  %2698 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2696, i32 0, i32 2
  %2699 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %2698, ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %2700 unwind label %2741

2700:                                             ; preds = %2697
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #0
  %2701 = load ptr, ptr %241, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.anon, ptr %2701, i32 0, i32 1
  %2703 = load ptr, ptr %2702, align 8, !tbaa !148
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %244, ptr noundef nonnull align 8 dereferenceable(8) %2703)
          to label %2704 unwind label %2746

2704:                                             ; preds = %2700
  %2705 = getelementptr inbounds %"class.HIR::Path", ptr %242, i32 0, i32 0
  %2706 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2705)
          to label %2707 unwind label %2750

2707:                                             ; preds = %2704
  %2708 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2706, i32 0, i32 1
  %2709 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2708, i32 0, i32 0
  %2710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR10SimplePathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2709, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %2711 unwind label %2750

2711:                                             ; preds = %2707
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #0
  %2712 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %246, ptr noundef nonnull align 8 dereferenceable(88) %242) #0
  %2713 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %2712, ptr noundef %246)
          to label %2714 unwind label %2755

2714:                                             ; preds = %2711
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %246) #0
  store ptr %2713, ptr %245, align 8, !tbaa !5
  %2715 = load ptr, ptr %245, align 8, !tbaa !5
  %2716 = icmp ne ptr %2715, null
  br i1 %2716, label %2717, label %3043

2717:                                             ; preds = %2714
  call void @llvm.lifetime.start.p0(i64 24, ptr %247) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %248) #0
  %2718 = load ptr, ptr %239, align 8, !tbaa !5
  %2719 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2718, i32 0, i32 5
  store ptr %2719, ptr %248, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #0
  %2720 = load ptr, ptr %248, align 8, !tbaa !5
  %2721 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2720) #0
  %2722 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.551", ptr %249, i32 0, i32 0
  store ptr %2721, ptr %2722, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #0
  %2723 = load ptr, ptr %248, align 8, !tbaa !5
  %2724 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2723) #0
  %2725 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.551", ptr %250, i32 0, i32 0
  store ptr %2724, ptr %2725, align 8
  br label %2726

2726:                                             ; preds = %2764, %2717
  %2727 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(8) %250) #0
  br i1 %2727, label %2759, label %2728

2728:                                             ; preds = %2726
  store i32 49, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #0
  br label %2775

2729:                                             ; preds = %2674, %2671
  %2730 = landingpad { ptr, i32 }
          cleanup
  %2731 = extractvalue { ptr, i32 } %2730, 0
  store ptr %2731, ptr %11, align 8
  %2732 = extractvalue { ptr, i32 } %2730, 1
  store i32 %2732, ptr %12, align 4
  br label %3052

2733:                                             ; preds = %2683
  %2734 = landingpad { ptr, i32 }
          cleanup
  %2735 = extractvalue { ptr, i32 } %2734, 0
  store ptr %2735, ptr %11, align 8
  %2736 = extractvalue { ptr, i32 } %2734, 1
  store i32 %2736, ptr %12, align 4
  br label %3049

2737:                                             ; preds = %2690
  %2738 = landingpad { ptr, i32 }
          cleanup
  %2739 = extractvalue { ptr, i32 } %2738, 0
  store ptr %2739, ptr %11, align 8
  %2740 = extractvalue { ptr, i32 } %2738, 1
  store i32 %2740, ptr %12, align 4
  br label %2745

2741:                                             ; preds = %2697, %2694
  %2742 = landingpad { ptr, i32 }
          cleanup
  %2743 = extractvalue { ptr, i32 } %2742, 0
  store ptr %2743, ptr %11, align 8
  %2744 = extractvalue { ptr, i32 } %2742, 1
  store i32 %2744, ptr %12, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #0
  br label %2745

2745:                                             ; preds = %2741, %2737
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #0
  br label %3048

2746:                                             ; preds = %2700
  %2747 = landingpad { ptr, i32 }
          cleanup
  %2748 = extractvalue { ptr, i32 } %2747, 0
  store ptr %2748, ptr %11, align 8
  %2749 = extractvalue { ptr, i32 } %2747, 1
  store i32 %2749, ptr %12, align 4
  br label %2754

2750:                                             ; preds = %2707, %2704
  %2751 = landingpad { ptr, i32 }
          cleanup
  %2752 = extractvalue { ptr, i32 } %2751, 0
  store ptr %2752, ptr %11, align 8
  %2753 = extractvalue { ptr, i32 } %2751, 1
  store i32 %2753, ptr %12, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #0
  br label %2754

2754:                                             ; preds = %2750, %2746
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #0
  br label %3048

2755:                                             ; preds = %2711
  %2756 = landingpad { ptr, i32 }
          cleanup
  %2757 = extractvalue { ptr, i32 } %2756, 0
  store ptr %2757, ptr %11, align 8
  %2758 = extractvalue { ptr, i32 } %2756, 1
  store i32 %2758, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %246) #0
  br label %3047

2759:                                             ; preds = %2726
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #0
  %2760 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %249) #0
  store ptr %2760, ptr %251, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #0
  %2761 = load ptr, ptr %251, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %252, ptr noundef nonnull align 8 dereferenceable(8) %2761)
          to label %2762 unwind label %2766

2762:                                             ; preds = %2759
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %247, ptr noundef nonnull align 8 dereferenceable(8) %252)
          to label %2763 unwind label %2770

2763:                                             ; preds = %2762
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #0
  br label %2764

2764:                                             ; preds = %2763
  %2765 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %249) #0
  br label %2726

2766:                                             ; preds = %2759
  %2767 = landingpad { ptr, i32 }
          cleanup
  %2768 = extractvalue { ptr, i32 } %2767, 0
  store ptr %2768, ptr %11, align 8
  %2769 = extractvalue { ptr, i32 } %2767, 1
  store i32 %2769, ptr %12, align 4
  br label %2774

2770:                                             ; preds = %2762
  %2771 = landingpad { ptr, i32 }
          cleanup
  %2772 = extractvalue { ptr, i32 } %2771, 0
  store ptr %2772, ptr %11, align 8
  %2773 = extractvalue { ptr, i32 } %2771, 1
  store i32 %2773, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #0
  br label %2774

2774:                                             ; preds = %2770, %2766
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #0
  br label %3042

2775:                                             ; preds = %2728
  call void @llvm.lifetime.start.p0(i64 8, ptr %253) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %254, ptr noundef nonnull align 8 dereferenceable(24) %247) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef %254)
          to label %2776 unwind label %2828

2776:                                             ; preds = %2775
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %254) #0
  call void @llvm.lifetime.start.p0(i64 352, ptr %255) #0
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %255)
          to label %2777 unwind label %2832

2777:                                             ; preds = %2776
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #0
  %2778 = load ptr, ptr %239, align 8, !tbaa !5
  %2779 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2778, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %256, ptr noundef nonnull align 8 dereferenceable(8) %2779)
          to label %2780 unwind label %2836

2780:                                             ; preds = %2777
  %2781 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 10
  %2782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2781, ptr noundef nonnull align 8 dereferenceable(8) %256)
          to label %2783 unwind label %2840

2783:                                             ; preds = %2780
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #0
  %2784 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %257) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %258) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %258)
          to label %2785 unwind label %2845

2785:                                             ; preds = %2783
  call void @llvm.lifetime.start.p0(i64 8, ptr %259) #0
  %2786 = load i8, ptr %240, align 1, !tbaa !150, !range !151, !noundef !152
  %2787 = trunc i8 %2786 to i1
  store i1 false, ptr %261, align 1
  br i1 %2787, label %2795, label %2788

2788:                                             ; preds = %2785
  %2789 = load ptr, ptr %241, align 8, !tbaa !5
  %2790 = getelementptr inbounds %struct.anon, ptr %2789, i32 0, i32 2
  %2791 = load i32, ptr %2790, align 8, !tbaa !149
  %2792 = load ptr, ptr %193, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %260, ptr noundef nonnull align 8 dereferenceable(8) %2792)
          to label %2793 unwind label %2849

2793:                                             ; preds = %2788
  store i1 true, ptr %261, align 1
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %259, i32 noundef %2791, ptr noundef %260)
          to label %2794 unwind label %2853

2794:                                             ; preds = %2793
  br label %2798

2795:                                             ; preds = %2785
  %2796 = load ptr, ptr %193, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %259, ptr noundef nonnull align 8 dereferenceable(8) %2796)
          to label %2797 unwind label %2853

2797:                                             ; preds = %2795
  br label %2798

2798:                                             ; preds = %2797, %2794
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %257, ptr noundef nonnull align 8 dereferenceable(212) %258, ptr noundef nonnull align 8 dereferenceable(8) %259)
          to label %2799 unwind label %2857

2799:                                             ; preds = %2798
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2784, ptr noundef nonnull align 8 dereferenceable(224) %257)
          to label %2800 unwind label %2861

2800:                                             ; preds = %2799
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %257) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #0
  %2801 = load i1, ptr %261, align 1
  br i1 %2801, label %2802, label %2803

2802:                                             ; preds = %2800
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #0
  br label %2803

2803:                                             ; preds = %2802, %2800
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %258) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %258) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %257) #0
  %2804 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %262) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %263) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %263)
          to label %2805 unwind label %2872

2805:                                             ; preds = %2803
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %262, ptr noundef nonnull align 8 dereferenceable(212) %263, ptr noundef nonnull align 8 dereferenceable(8) %253)
          to label %2806 unwind label %2876

2806:                                             ; preds = %2805
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2804, ptr noundef nonnull align 8 dereferenceable(224) %262)
          to label %2807 unwind label %2880

2807:                                             ; preds = %2806
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %262) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %263) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %263) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %262) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #0
  %2808 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %2809 unwind label %2886

2809:                                             ; preds = %2807
  call void @llvm.memset.p0.i64(ptr align 16 %2808, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %2808)
          to label %2810 unwind label %2890

2810:                                             ; preds = %2809
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef %2808)
          to label %2811 unwind label %2886

2811:                                             ; preds = %2810
  %2812 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 11
  %2813 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2812, i32 0, i32 3
  %2814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2813, ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %2815 unwind label %2894

2815:                                             ; preds = %2811
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %265) #0
  %2816 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 11
  %2817 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2816, i32 0, i32 3
  %2818 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2817)
          to label %2819 unwind label %2899

2819:                                             ; preds = %2815
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %265, ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(96) %2818)
          to label %2820 unwind label %2899

2820:                                             ; preds = %2819
  call void @llvm.lifetime.start.p0(i64 24, ptr %266) #0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %266) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #0
  store i64 0, ptr %267, align 8, !tbaa !144
  br label %2821

2821:                                             ; preds = %2910, %2820
  %2822 = load i64, ptr %267, align 8, !tbaa !144
  %2823 = load ptr, ptr %239, align 8, !tbaa !5
  %2824 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2823, i32 0, i32 5
  %2825 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2824) #0
  %2826 = icmp ult i64 %2822, %2825
  br i1 %2826, label %2903, label %2827

2827:                                             ; preds = %2821
  store i32 51, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  br label %2932

2828:                                             ; preds = %2775
  %2829 = landingpad { ptr, i32 }
          cleanup
  %2830 = extractvalue { ptr, i32 } %2829, 0
  store ptr %2830, ptr %11, align 8
  %2831 = extractvalue { ptr, i32 } %2829, 1
  store i32 %2831, ptr %12, align 4
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %254) #0
  br label %3041

2832:                                             ; preds = %2776
  %2833 = landingpad { ptr, i32 }
          cleanup
  %2834 = extractvalue { ptr, i32 } %2833, 0
  store ptr %2834, ptr %11, align 8
  %2835 = extractvalue { ptr, i32 } %2833, 1
  store i32 %2835, ptr %12, align 4
  br label %3040

2836:                                             ; preds = %2777
  %2837 = landingpad { ptr, i32 }
          cleanup
  %2838 = extractvalue { ptr, i32 } %2837, 0
  store ptr %2838, ptr %11, align 8
  %2839 = extractvalue { ptr, i32 } %2837, 1
  store i32 %2839, ptr %12, align 4
  br label %2844

2840:                                             ; preds = %2780
  %2841 = landingpad { ptr, i32 }
          cleanup
  %2842 = extractvalue { ptr, i32 } %2841, 0
  store ptr %2842, ptr %11, align 8
  %2843 = extractvalue { ptr, i32 } %2841, 1
  store i32 %2843, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #0
  br label %2844

2844:                                             ; preds = %2840, %2836
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #0
  br label %3039

2845:                                             ; preds = %2783
  %2846 = landingpad { ptr, i32 }
          cleanup
  %2847 = extractvalue { ptr, i32 } %2846, 0
  store ptr %2847, ptr %11, align 8
  %2848 = extractvalue { ptr, i32 } %2846, 1
  store i32 %2848, ptr %12, align 4
  br label %2871

2849:                                             ; preds = %2788
  %2850 = landingpad { ptr, i32 }
          cleanup
  %2851 = extractvalue { ptr, i32 } %2850, 0
  store ptr %2851, ptr %11, align 8
  %2852 = extractvalue { ptr, i32 } %2850, 1
  store i32 %2852, ptr %12, align 4
  br label %2870

2853:                                             ; preds = %2795, %2793
  %2854 = landingpad { ptr, i32 }
          cleanup
  %2855 = extractvalue { ptr, i32 } %2854, 0
  store ptr %2855, ptr %11, align 8
  %2856 = extractvalue { ptr, i32 } %2854, 1
  store i32 %2856, ptr %12, align 4
  br label %2866

2857:                                             ; preds = %2798
  %2858 = landingpad { ptr, i32 }
          cleanup
  %2859 = extractvalue { ptr, i32 } %2858, 0
  store ptr %2859, ptr %11, align 8
  %2860 = extractvalue { ptr, i32 } %2858, 1
  store i32 %2860, ptr %12, align 4
  br label %2865

2861:                                             ; preds = %2799
  %2862 = landingpad { ptr, i32 }
          cleanup
  %2863 = extractvalue { ptr, i32 } %2862, 0
  store ptr %2863, ptr %11, align 8
  %2864 = extractvalue { ptr, i32 } %2862, 1
  store i32 %2864, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %257) #0
  br label %2865

2865:                                             ; preds = %2861, %2857
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #0
  br label %2866

2866:                                             ; preds = %2865, %2853
  %2867 = load i1, ptr %261, align 1
  br i1 %2867, label %2868, label %2869

2868:                                             ; preds = %2866
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #0
  br label %2869

2869:                                             ; preds = %2868, %2866
  br label %2870

2870:                                             ; preds = %2869, %2849
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %258) #0
  br label %2871

2871:                                             ; preds = %2870, %2845
  call void @llvm.lifetime.end.p0(i64 216, ptr %258) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %257) #0
  br label %3039

2872:                                             ; preds = %2803
  %2873 = landingpad { ptr, i32 }
          cleanup
  %2874 = extractvalue { ptr, i32 } %2873, 0
  store ptr %2874, ptr %11, align 8
  %2875 = extractvalue { ptr, i32 } %2873, 1
  store i32 %2875, ptr %12, align 4
  br label %2885

2876:                                             ; preds = %2805
  %2877 = landingpad { ptr, i32 }
          cleanup
  %2878 = extractvalue { ptr, i32 } %2877, 0
  store ptr %2878, ptr %11, align 8
  %2879 = extractvalue { ptr, i32 } %2877, 1
  store i32 %2879, ptr %12, align 4
  br label %2884

2880:                                             ; preds = %2806
  %2881 = landingpad { ptr, i32 }
          cleanup
  %2882 = extractvalue { ptr, i32 } %2881, 0
  store ptr %2882, ptr %11, align 8
  %2883 = extractvalue { ptr, i32 } %2881, 1
  store i32 %2883, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %262) #0
  br label %2884

2884:                                             ; preds = %2880, %2876
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %263) #0
  br label %2885

2885:                                             ; preds = %2884, %2872
  call void @llvm.lifetime.end.p0(i64 216, ptr %263) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %262) #0
  br label %3039

2886:                                             ; preds = %2810, %2807
  %2887 = landingpad { ptr, i32 }
          cleanup
  %2888 = extractvalue { ptr, i32 } %2887, 0
  store ptr %2888, ptr %11, align 8
  %2889 = extractvalue { ptr, i32 } %2887, 1
  store i32 %2889, ptr %12, align 4
  br label %2898

2890:                                             ; preds = %2809
  %2891 = landingpad { ptr, i32 }
          cleanup
  %2892 = extractvalue { ptr, i32 } %2891, 0
  store ptr %2892, ptr %11, align 8
  %2893 = extractvalue { ptr, i32 } %2891, 1
  store i32 %2893, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %2808, i64 noundef 96) #15
  br label %2898

2894:                                             ; preds = %2811
  %2895 = landingpad { ptr, i32 }
          cleanup
  %2896 = extractvalue { ptr, i32 } %2895, 0
  store ptr %2896, ptr %11, align 8
  %2897 = extractvalue { ptr, i32 } %2895, 1
  store i32 %2897, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #0
  br label %2898

2898:                                             ; preds = %2894, %2890, %2886
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #0
  br label %3039

2899:                                             ; preds = %2819, %2815
  %2900 = landingpad { ptr, i32 }
          cleanup
  %2901 = extractvalue { ptr, i32 } %2900, 0
  store ptr %2901, ptr %11, align 8
  %2902 = extractvalue { ptr, i32 } %2900, 1
  store i32 %2902, ptr %12, align 4
  br label %3038

2903:                                             ; preds = %2821
  call void @llvm.lifetime.start.p0(i64 48, ptr %268) #0
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %270, i32 noundef 1)
          to label %2904 unwind label %2913

2904:                                             ; preds = %2903
  %2905 = load i64, ptr %267, align 8, !tbaa !144
  %2906 = trunc i64 %2905 to i32
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %269, ptr noundef %270, i32 noundef %2906)
          to label %2907 unwind label %2917

2907:                                             ; preds = %2904
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %268, ptr noundef %269)
          to label %2908 unwind label %2921

2908:                                             ; preds = %2907
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %266, ptr noundef nonnull align 8 dereferenceable(48) %268)
          to label %2909 unwind label %2925

2909:                                             ; preds = %2908
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %268) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %269) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %270) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %268) #0
  br label %2910

2910:                                             ; preds = %2909
  %2911 = load i64, ptr %267, align 8, !tbaa !144
  %2912 = add i64 %2911, 1
  store i64 %2912, ptr %267, align 8, !tbaa !144
  br label %2821, !llvm.loop !155

2913:                                             ; preds = %2903
  %2914 = landingpad { ptr, i32 }
          cleanup
  %2915 = extractvalue { ptr, i32 } %2914, 0
  store ptr %2915, ptr %11, align 8
  %2916 = extractvalue { ptr, i32 } %2914, 1
  store i32 %2916, ptr %12, align 4
  br label %2931

2917:                                             ; preds = %2904
  %2918 = landingpad { ptr, i32 }
          cleanup
  %2919 = extractvalue { ptr, i32 } %2918, 0
  store ptr %2919, ptr %11, align 8
  %2920 = extractvalue { ptr, i32 } %2918, 1
  store i32 %2920, ptr %12, align 4
  br label %2930

2921:                                             ; preds = %2907
  %2922 = landingpad { ptr, i32 }
          cleanup
  %2923 = extractvalue { ptr, i32 } %2922, 0
  store ptr %2923, ptr %11, align 8
  %2924 = extractvalue { ptr, i32 } %2922, 1
  store i32 %2924, ptr %12, align 4
  br label %2929

2925:                                             ; preds = %2908
  %2926 = landingpad { ptr, i32 }
          cleanup
  %2927 = extractvalue { ptr, i32 } %2926, 0
  store ptr %2927, ptr %11, align 8
  %2928 = extractvalue { ptr, i32 } %2926, 1
  store i32 %2928, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %268) #0
  br label %2929

2929:                                             ; preds = %2925, %2921
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %269) #0
  br label %2930

2930:                                             ; preds = %2929, %2917
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %270) #0
  br label %2931

2931:                                             ; preds = %2930, %2913
  call void @llvm.lifetime.end.p0(i64 48, ptr %268) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  br label %3037

2932:                                             ; preds = %2827
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %271)
          to label %2933 unwind label %2979

2933:                                             ; preds = %2932
  %2934 = load i8, ptr %240, align 1, !tbaa !150, !range !151, !noundef !152
  %2935 = trunc i8 %2934 to i1
  store i1 false, ptr %275, align 1
  store i1 false, ptr %276, align 1
  store i1 false, ptr %277, align 1
  br i1 %2935, label %2939, label %2936

2936:                                             ; preds = %2933
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %274, i32 noundef 0)
          to label %2937 unwind label %2983

2937:                                             ; preds = %2936
  store i1 true, ptr %275, align 1
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %273, ptr noundef %274)
          to label %2938 unwind label %2987

2938:                                             ; preds = %2937
  store i1 true, ptr %276, align 1
  br label %2941

2939:                                             ; preds = %2933
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %273, i32 noundef 0)
          to label %2940 unwind label %2991

2940:                                             ; preds = %2939
  store i1 true, ptr %277, align 1
  br label %2941

2941:                                             ; preds = %2940, %2938
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %272, ptr noundef %273)
          to label %2942 unwind label %2995

2942:                                             ; preds = %2941
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %278, ptr noundef nonnull align 8 dereferenceable(24) %266) #0
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %265, ptr noundef %271, ptr noundef %272, ptr noundef %278, i32 noundef 1, i32 noundef 2)
          to label %2943 unwind label %2999

2943:                                             ; preds = %2942
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %278) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %272) #0
  %2944 = load i1, ptr %277, align 1
  br i1 %2944, label %2945, label %2946

2945:                                             ; preds = %2943
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #0
  br label %2946

2946:                                             ; preds = %2945, %2943
  %2947 = load i1, ptr %276, align 1
  br i1 %2947, label %2948, label %2949

2948:                                             ; preds = %2946
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #0
  br label %2949

2949:                                             ; preds = %2948, %2946
  %2950 = load i1, ptr %275, align 1
  br i1 %2950, label %2951, label %2952

2951:                                             ; preds = %2949
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #0
  br label %2952

2952:                                             ; preds = %2951, %2949
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %265)
          to label %2953 unwind label %2979

2953:                                             ; preds = %2952
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %279)
          to label %2954 unwind label %2979

2954:                                             ; preds = %2953
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %265, ptr noundef %279)
          to label %2955 unwind label %3016

2955:                                             ; preds = %2954
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %279) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %265)
          to label %2956 unwind label %2979

2956:                                             ; preds = %2955
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %281)
          to label %2957 unwind label %2979

2957:                                             ; preds = %2956
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %265, ptr noundef %281)
          to label %2958 unwind label %3020

2958:                                             ; preds = %2957
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %281) #0
  %2959 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %283) #0
  %2960 = load ptr, ptr %191, align 8, !tbaa !5
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %283, ptr noundef nonnull align 8 dereferenceable(88) %2960)
          to label %2961 unwind label %3024

2961:                                             ; preds = %2958
  %2962 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 11
  %2963 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %2962, i32 0, i32 3
  %2964 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2963)
          to label %2965 unwind label %3024

2965:                                             ; preds = %2961
  %2966 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 8
  %2967 = getelementptr inbounds %"class.HIR::Function", ptr %255, i32 0, i32 10
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %2959, ptr noundef nonnull align 8 dereferenceable(56) %283, ptr noundef nonnull align 8 dereferenceable(96) %2964, ptr noundef nonnull align 8 dereferenceable(24) %2966, ptr noundef nonnull align 8 dereferenceable(8) %2967)
          to label %2968 unwind label %3024

2968:                                             ; preds = %2965
  call void @llvm.lifetime.end.p0(i64 56, ptr %283) #0
  %2969 = load ptr, ptr %4, align 8, !tbaa !5
  %2970 = getelementptr inbounds %class.TransList, ptr %2969, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #0
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.537") align 8 %284, ptr noundef nonnull align 8 dereferenceable(352) %255)
          to label %2971 unwind label %3028

2971:                                             ; preds = %2968
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %2970, ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %2972 unwind label %3032

2972:                                             ; preds = %2971
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #0
  %2973 = load ptr, ptr %4, align 8, !tbaa !5
  %2974 = getelementptr inbounds %class.TransList, ptr %2973, i32 0, i32 12
  %2975 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2974) #0
  %2976 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2975) #0
  %2977 = load ptr, ptr %245, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.TransList_Function, ptr %2977, i32 0, i32 1
  store ptr %2976, ptr %2978, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %266) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %266) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %265) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %265) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %255) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %255) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %247) #0
  br label %3043

2979:                                             ; preds = %2956, %2955, %2953, %2952, %2932
  %2980 = landingpad { ptr, i32 }
          cleanup
  %2981 = extractvalue { ptr, i32 } %2980, 0
  store ptr %2981, ptr %11, align 8
  %2982 = extractvalue { ptr, i32 } %2980, 1
  store i32 %2982, ptr %12, align 4
  br label %3037

2983:                                             ; preds = %2936
  %2984 = landingpad { ptr, i32 }
          cleanup
  %2985 = extractvalue { ptr, i32 } %2984, 0
  store ptr %2985, ptr %11, align 8
  %2986 = extractvalue { ptr, i32 } %2984, 1
  store i32 %2986, ptr %12, align 4
  br label %3015

2987:                                             ; preds = %2937
  %2988 = landingpad { ptr, i32 }
          cleanup
  %2989 = extractvalue { ptr, i32 } %2988, 0
  store ptr %2989, ptr %11, align 8
  %2990 = extractvalue { ptr, i32 } %2988, 1
  store i32 %2990, ptr %12, align 4
  br label %3011

2991:                                             ; preds = %2939
  %2992 = landingpad { ptr, i32 }
          cleanup
  %2993 = extractvalue { ptr, i32 } %2992, 0
  store ptr %2993, ptr %11, align 8
  %2994 = extractvalue { ptr, i32 } %2992, 1
  store i32 %2994, ptr %12, align 4
  br label %3007

2995:                                             ; preds = %2941
  %2996 = landingpad { ptr, i32 }
          cleanup
  %2997 = extractvalue { ptr, i32 } %2996, 0
  store ptr %2997, ptr %11, align 8
  %2998 = extractvalue { ptr, i32 } %2996, 1
  store i32 %2998, ptr %12, align 4
  br label %3003

2999:                                             ; preds = %2942
  %3000 = landingpad { ptr, i32 }
          cleanup
  %3001 = extractvalue { ptr, i32 } %3000, 0
  store ptr %3001, ptr %11, align 8
  %3002 = extractvalue { ptr, i32 } %3000, 1
  store i32 %3002, ptr %12, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %278) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %272) #0
  br label %3003

3003:                                             ; preds = %2999, %2995
  %3004 = load i1, ptr %277, align 1
  br i1 %3004, label %3005, label %3006

3005:                                             ; preds = %3003
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #0
  br label %3006

3006:                                             ; preds = %3005, %3003
  br label %3007

3007:                                             ; preds = %3006, %2991
  %3008 = load i1, ptr %276, align 1
  br i1 %3008, label %3009, label %3010

3009:                                             ; preds = %3007
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #0
  br label %3010

3010:                                             ; preds = %3009, %3007
  br label %3011

3011:                                             ; preds = %3010, %2987
  %3012 = load i1, ptr %275, align 1
  br i1 %3012, label %3013, label %3014

3013:                                             ; preds = %3011
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #0
  br label %3014

3014:                                             ; preds = %3013, %3011
  br label %3015

3015:                                             ; preds = %3014, %2983
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #0
  br label %3037

3016:                                             ; preds = %2954
  %3017 = landingpad { ptr, i32 }
          cleanup
  %3018 = extractvalue { ptr, i32 } %3017, 0
  store ptr %3018, ptr %11, align 8
  %3019 = extractvalue { ptr, i32 } %3017, 1
  store i32 %3019, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %279) #0
  br label %3037

3020:                                             ; preds = %2957
  %3021 = landingpad { ptr, i32 }
          cleanup
  %3022 = extractvalue { ptr, i32 } %3021, 0
  store ptr %3022, ptr %11, align 8
  %3023 = extractvalue { ptr, i32 } %3021, 1
  store i32 %3023, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %281) #0
  br label %3037

3024:                                             ; preds = %2965, %2961, %2958
  %3025 = landingpad { ptr, i32 }
          cleanup
  %3026 = extractvalue { ptr, i32 } %3025, 0
  store ptr %3026, ptr %11, align 8
  %3027 = extractvalue { ptr, i32 } %3025, 1
  store i32 %3027, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %283) #0
  br label %3037

3028:                                             ; preds = %2968
  %3029 = landingpad { ptr, i32 }
          cleanup
  %3030 = extractvalue { ptr, i32 } %3029, 0
  store ptr %3030, ptr %11, align 8
  %3031 = extractvalue { ptr, i32 } %3029, 1
  store i32 %3031, ptr %12, align 4
  br label %3036

3032:                                             ; preds = %2971
  %3033 = landingpad { ptr, i32 }
          cleanup
  %3034 = extractvalue { ptr, i32 } %3033, 0
  store ptr %3034, ptr %11, align 8
  %3035 = extractvalue { ptr, i32 } %3033, 1
  store i32 %3035, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #0
  br label %3036

3036:                                             ; preds = %3032, %3028
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #0
  br label %3037

3037:                                             ; preds = %3036, %3024, %3020, %3016, %3015, %2979, %2931
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %266) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %266) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %265) #0
  br label %3038

3038:                                             ; preds = %3037, %2899
  call void @llvm.lifetime.end.p0(i64 48, ptr %265) #0
  br label %3039

3039:                                             ; preds = %3038, %2898, %2885, %2871, %2844
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %255) #0
  br label %3040

3040:                                             ; preds = %3039, %2832
  call void @llvm.lifetime.end.p0(i64 352, ptr %255) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #0
  br label %3041

3041:                                             ; preds = %3040, %2828
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #0
  br label %3042

3042:                                             ; preds = %3041, %2774
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %247) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %247) #0
  br label %3047

3043:                                             ; preds = %2972, %2714
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %242) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %242) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #0
  br label %3044

3044:                                             ; preds = %3043
  %3045 = load i64, ptr %195, align 8, !tbaa !144
  %3046 = add i64 %3045, 1
  store i64 %3046, ptr %195, align 8, !tbaa !144
  br label %2680, !llvm.loop !156

3047:                                             ; preds = %3042, %2755
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  br label %3048

3048:                                             ; preds = %3047, %2754, %2745
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %242) #0
  br label %3049

3049:                                             ; preds = %3048, %2733
  call void @llvm.lifetime.end.p0(i64 88, ptr %242) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #0
  br label %3052

3050:                                             ; preds = %2680
  br label %3051

3051:                                             ; preds = %3050, %2676
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  br label %3053

3052:                                             ; preds = %3049, %2729
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  br label %3056

3053:                                             ; preds = %3051, %2670
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %194) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #0
  br label %3054

3054:                                             ; preds = %3053
  %3055 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %187) #0
  br label %2207

3056:                                             ; preds = %3052, %2669, %2366
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #0
  br label %3057

3057:                                             ; preds = %3056, %2279
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %194) #0
  br label %3058

3058:                                             ; preds = %3057, %2275
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #0
  br label %3059

3059:                                             ; preds = %3058, %2271
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #0
  br label %3060

3060:                                             ; preds = %3059, %2267
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #0
  br label %4607

3061:                                             ; preds = %2209
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #0
  %3062 = load ptr, ptr %4, align 8, !tbaa !5
  %3063 = getelementptr inbounds %class.TransList, ptr %3062, i32 0, i32 4
  store ptr %3063, ptr %285, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %286) #0
  %3064 = load ptr, ptr %285, align 8, !tbaa !5
  %3065 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %3064) #0
  %3066 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %286, i32 0, i32 0
  store ptr %3065, ptr %3066, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %287) #0
  %3067 = load ptr, ptr %285, align 8, !tbaa !5
  %3068 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %3067) #0
  %3069 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %287, i32 0, i32 0
  store ptr %3068, ptr %3069, align 8
  br label %3070

3070:                                             ; preds = %3356, %3061
  %3071 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(8) %287) #0
  br i1 %3071, label %3073, label %3072

3072:                                             ; preds = %3070
  store i32 54, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #0
  br label %3385

3073:                                             ; preds = %3070
  call void @llvm.lifetime.start.p0(i64 8, ptr %288) #0
  %3074 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %286) #0
  store ptr %3074, ptr %288, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %289) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %3075 unwind label %3094

3075:                                             ; preds = %3073
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #0
  %3076 = load ptr, ptr %288, align 8, !tbaa !5
  %3077 = getelementptr inbounds %"struct.std::pair.548", ptr %3076, i32 0, i32 0
  %3078 = getelementptr inbounds %"class.HIR::Path", ptr %3077, i32 0, i32 0
  %3079 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3078)
          to label %3080 unwind label %3098

3080:                                             ; preds = %3075
  %3081 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3079, i32 0, i32 1
  store ptr %3081, ptr %290, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #0
  %3082 = load ptr, ptr %288, align 8, !tbaa !5
  %3083 = getelementptr inbounds %"struct.std::pair.548", ptr %3082, i32 0, i32 0
  %3084 = getelementptr inbounds %"class.HIR::Path", ptr %3083, i32 0, i32 0
  %3085 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3084)
          to label %3086 unwind label %3102

3086:                                             ; preds = %3080
  %3087 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3085, i32 0, i32 0
  store ptr %3087, ptr %291, align 8, !tbaa !5
  %3088 = load ptr, ptr %290, align 8, !tbaa !5
  %3089 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3088, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %292) #0
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292)
          to label %3090 unwind label %3106

3090:                                             ; preds = %3086
  %3091 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3089, ptr noundef nonnull align 8 dereferenceable(8) %292)
          to label %3092 unwind label %3110

3092:                                             ; preds = %3090
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #0
  br i1 %3091, label %3093, label %3115

3093:                                             ; preds = %3092
  store i32 55, ptr %95, align 4
  br label %3350

3094:                                             ; preds = %3073
  %3095 = landingpad { ptr, i32 }
          cleanup
  %3096 = extractvalue { ptr, i32 } %3095, 0
  store ptr %3096, ptr %11, align 8
  %3097 = extractvalue { ptr, i32 } %3095, 1
  store i32 %3097, ptr %12, align 4
  br label %3384

3098:                                             ; preds = %3075
  %3099 = landingpad { ptr, i32 }
          cleanup
  %3100 = extractvalue { ptr, i32 } %3099, 0
  store ptr %3100, ptr %11, align 8
  %3101 = extractvalue { ptr, i32 } %3099, 1
  store i32 %3101, ptr %12, align 4
  br label %3383

3102:                                             ; preds = %3129, %3127, %3124, %3122, %3119, %3116, %3080
  %3103 = landingpad { ptr, i32 }
          cleanup
  %3104 = extractvalue { ptr, i32 } %3103, 0
  store ptr %3104, ptr %11, align 8
  %3105 = extractvalue { ptr, i32 } %3103, 1
  store i32 %3105, ptr %12, align 4
  br label %3382

3106:                                             ; preds = %3086
  %3107 = landingpad { ptr, i32 }
          cleanup
  %3108 = extractvalue { ptr, i32 } %3107, 0
  store ptr %3108, ptr %11, align 8
  %3109 = extractvalue { ptr, i32 } %3107, 1
  store i32 %3109, ptr %12, align 4
  br label %3114

3110:                                             ; preds = %3090
  %3111 = landingpad { ptr, i32 }
          cleanup
  %3112 = extractvalue { ptr, i32 } %3111, 0
  store ptr %3112, ptr %11, align 8
  %3113 = extractvalue { ptr, i32 } %3111, 1
  store i32 %3113, ptr %12, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #0
  br label %3114

3114:                                             ; preds = %3110, %3106
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #0
  br label %3382

3115:                                             ; preds = %3092
  br label %3116

3116:                                             ; preds = %3115
  %3117 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3118 unwind label %3102

3118:                                             ; preds = %3116
  br i1 %3117, label %3119, label %3132

3119:                                             ; preds = %3118
  %3120 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %3121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3120, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %3122 unwind label %3102

3122:                                             ; preds = %3119
  %3123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3121, ptr noundef @.str.23)
          to label %3124 unwind label %3102

3124:                                             ; preds = %3122
  %3125 = load ptr, ptr %291, align 8, !tbaa !5
  %3126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %3123, ptr noundef nonnull align 8 dereferenceable(8) %3125)
          to label %3127 unwind label %3102

3127:                                             ; preds = %3124
  %3128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3126, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3129 unwind label %3102

3129:                                             ; preds = %3127
  %3130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3128, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3131 unwind label %3102

3131:                                             ; preds = %3129
  br label %3132

3132:                                             ; preds = %3131, %3118
  br label %3133

3133:                                             ; preds = %3132
  br label %3134

3134:                                             ; preds = %3133
  call void @llvm.lifetime.start.p0(i64 24, ptr %293) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef 0)
          to label %3135 unwind label %3149

3135:                                             ; preds = %3134
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %293, ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %3136 unwind label %3153

3136:                                             ; preds = %3135
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %295, i32 noundef 0)
          to label %3137 unwind label %3158

3137:                                             ; preds = %3136
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %293, ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %3138 unwind label %3162

3138:                                             ; preds = %3137
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %296, i32 noundef 0)
          to label %3139 unwind label %3167

3139:                                             ; preds = %3138
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %293, ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %3140 unwind label %3171

3140:                                             ; preds = %3139
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %298, ptr noundef nonnull align 8 dereferenceable(24) %293) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef %298)
          to label %3141 unwind label %3176

3141:                                             ; preds = %3140
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %299) #0
  %3142 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3143 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(424) %3142, ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %3144 unwind label %3180

3144:                                             ; preds = %3141
  store ptr %3143, ptr %299, align 8, !tbaa !5
  %3145 = load ptr, ptr %299, align 8, !tbaa !5
  %3146 = icmp ne ptr %3145, null
  br i1 %3146, label %3147, label %3148

3147:                                             ; preds = %3144
  br label %3185

3148:                                             ; preds = %3144
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.9, i32 noundef 712, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

3149:                                             ; preds = %3134
  %3150 = landingpad { ptr, i32 }
          cleanup
  %3151 = extractvalue { ptr, i32 } %3150, 0
  store ptr %3151, ptr %11, align 8
  %3152 = extractvalue { ptr, i32 } %3150, 1
  store i32 %3152, ptr %12, align 4
  br label %3157

3153:                                             ; preds = %3135
  %3154 = landingpad { ptr, i32 }
          cleanup
  %3155 = extractvalue { ptr, i32 } %3154, 0
  store ptr %3155, ptr %11, align 8
  %3156 = extractvalue { ptr, i32 } %3154, 1
  store i32 %3156, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #0
  br label %3157

3157:                                             ; preds = %3153, %3149
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #0
  br label %3381

3158:                                             ; preds = %3136
  %3159 = landingpad { ptr, i32 }
          cleanup
  %3160 = extractvalue { ptr, i32 } %3159, 0
  store ptr %3160, ptr %11, align 8
  %3161 = extractvalue { ptr, i32 } %3159, 1
  store i32 %3161, ptr %12, align 4
  br label %3166

3162:                                             ; preds = %3137
  %3163 = landingpad { ptr, i32 }
          cleanup
  %3164 = extractvalue { ptr, i32 } %3163, 0
  store ptr %3164, ptr %11, align 8
  %3165 = extractvalue { ptr, i32 } %3163, 1
  store i32 %3165, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #0
  br label %3166

3166:                                             ; preds = %3162, %3158
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #0
  br label %3381

3167:                                             ; preds = %3138
  %3168 = landingpad { ptr, i32 }
          cleanup
  %3169 = extractvalue { ptr, i32 } %3168, 0
  store ptr %3169, ptr %11, align 8
  %3170 = extractvalue { ptr, i32 } %3168, 1
  store i32 %3170, ptr %12, align 4
  br label %3175

3171:                                             ; preds = %3139
  %3172 = landingpad { ptr, i32 }
          cleanup
  %3173 = extractvalue { ptr, i32 } %3172, 0
  store ptr %3173, ptr %11, align 8
  %3174 = extractvalue { ptr, i32 } %3172, 1
  store i32 %3174, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #0
  br label %3175

3175:                                             ; preds = %3171, %3167
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #0
  br label %3381

3176:                                             ; preds = %3140
  %3177 = landingpad { ptr, i32 }
          cleanup
  %3178 = extractvalue { ptr, i32 } %3177, 0
  store ptr %3178, ptr %11, align 8
  %3179 = extractvalue { ptr, i32 } %3177, 1
  store i32 %3179, ptr %12, align 4
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #0
  br label %3380

3180:                                             ; preds = %3141
  %3181 = landingpad { ptr, i32 }
          cleanup
  %3182 = extractvalue { ptr, i32 } %3181, 0
  store ptr %3182, ptr %11, align 8
  %3183 = extractvalue { ptr, i32 } %3181, 1
  store i32 %3183, ptr %12, align 4
  br label %3379

3184:                                             ; No predecessors!
  br label %3185

3185:                                             ; preds = %3184, %3147
  call void @llvm.lifetime.start.p0(i64 72, ptr %300) #0
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %300) #0
  %3186 = getelementptr inbounds %"struct.HIR::Linkage", ptr %300, i32 0, i32 0
  store i32 1, ptr %3186, align 8, !tbaa !157
  call void @llvm.lifetime.start.p0(i64 360, ptr %301) #0
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %302, ptr noundef nonnull align 8 dereferenceable(72) %300) #0
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %3187 unwind label %3233

3187:                                             ; preds = %3185
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %304)
          to label %3188 unwind label %3237

3188:                                             ; preds = %3187
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %301, ptr noundef %302, i1 noundef zeroext false, ptr noundef %303, ptr noundef %304)
          to label %3189 unwind label %3241

3189:                                             ; preds = %3188
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %304) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %302) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #0
  %3190 = getelementptr inbounds %"class.HIR::Static", ptr %301, i32 0, i32 5
  store ptr %3190, ptr %305, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %306) #0
  %3191 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %3192 unwind label %3247

3192:                                             ; preds = %3189
  %3193 = udiv i32 %3191, 8
  store i32 %3193, ptr %306, align 4, !tbaa !113
  %3194 = load ptr, ptr %305, align 8, !tbaa !5
  %3195 = getelementptr inbounds %struct.EncodedLiteral, ptr %3194, i32 0, i32 0
  %3196 = load ptr, ptr %299, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.TypeRepr, ptr %3196, i32 0, i32 1
  %3198 = load i64, ptr %3197, align 8, !tbaa !158
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3195, i64 noundef %3198)
          to label %3199 unwind label %3247

3199:                                             ; preds = %3192
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #0
  store i64 0, ptr %307, align 8, !tbaa !144
  call void @llvm.lifetime.start.p0(i64 24, ptr %308) #0
  %3200 = getelementptr inbounds %class.anon.557, ptr %308, i32 0, i32 0
  %3201 = load ptr, ptr %305, align 8, !tbaa !5
  store ptr %3201, ptr %3200, align 8, !tbaa !5
  %3202 = getelementptr inbounds %class.anon.557, ptr %308, i32 0, i32 1
  store ptr %307, ptr %3202, align 8, !tbaa !5
  %3203 = getelementptr inbounds %class.anon.557, ptr %308, i32 0, i32 2
  %3204 = load i32, ptr %306, align 4, !tbaa !113
  store i32 %3204, ptr %3203, align 8, !tbaa !166
  %3205 = load ptr, ptr %4, align 8, !tbaa !5
  %3206 = getelementptr inbounds %class.TransList, ptr %3205, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #0
  %3207 = load ptr, ptr %291, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %309, ptr noundef nonnull align 8 dereferenceable(8) %3207)
          to label %3208 unwind label %3251

3208:                                             ; preds = %3199
  %3209 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %3206, ptr noundef nonnull align 8 dereferenceable(8) %309)
          to label %3210 unwind label %3255

3210:                                             ; preds = %3208
  %3211 = getelementptr inbounds { ptr, i8 }, ptr %310, i32 0, i32 0
  %3212 = extractvalue { ptr, i8 } %3209, 0
  store ptr %3212, ptr %3211, align 8
  %3213 = getelementptr inbounds { ptr, i8 }, ptr %310, i32 0, i32 1
  %3214 = extractvalue { ptr, i8 } %3209, 1
  store i8 %3214, ptr %3213, align 8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #0
  %3215 = load ptr, ptr %291, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %312, ptr noundef nonnull align 8 dereferenceable(8) %3215)
          to label %3216 unwind label %3260

3216:                                             ; preds = %3210
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
          to label %3217 unwind label %3264

3217:                                             ; preds = %3216
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %314)
          to label %3218 unwind label %3268

3218:                                             ; preds = %3217
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %311, ptr noundef %312, ptr noundef %313, ptr noundef %314)
          to label %3219 unwind label %3272

3219:                                             ; preds = %3218
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_25clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %308, ptr noundef %311)
          to label %3220 unwind label %3276

3220:                                             ; preds = %3219
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %311) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #0
  br label %3221

3221:                                             ; preds = %3220
  %3222 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3223 = load ptr, ptr %291, align 8, !tbaa !5
  %3224 = invoke noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(424) %3222, ptr noundef nonnull align 8 dereferenceable(8) %3223, ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %316)
          to label %3225 unwind label %3283

3225:                                             ; preds = %3221
  br i1 %3224, label %3300, label %3226

3226:                                             ; preds = %3225
  call void @llvm.lifetime.start.p0(i64 8, ptr %317) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %3227 unwind label %3287

3227:                                             ; preds = %3226
  call void @llvm.lifetime.start.p0(i64 8, ptr %319) #0
  %3228 = getelementptr inbounds %class.anon.559, ptr %319, i32 0, i32 0
  %3229 = load ptr, ptr %291, align 8, !tbaa !5
  store ptr %3229, ptr %3228, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef nonnull align 8 dereferenceable(8) %319) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef %318)
          to label %3230 unwind label %3291

3230:                                             ; preds = %3227
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %319) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #0
  %3231 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3231, ptr noundef @.str.10)
          to label %3232 unwind label %3296

3232:                                             ; preds = %3230
  invoke void @__cxa_throw(ptr %3231, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %3283

3233:                                             ; preds = %3185
  %3234 = landingpad { ptr, i32 }
          cleanup
  %3235 = extractvalue { ptr, i32 } %3234, 0
  store ptr %3235, ptr %11, align 8
  %3236 = extractvalue { ptr, i32 } %3234, 1
  store i32 %3236, ptr %12, align 4
  br label %3246

3237:                                             ; preds = %3187
  %3238 = landingpad { ptr, i32 }
          cleanup
  %3239 = extractvalue { ptr, i32 } %3238, 0
  store ptr %3239, ptr %11, align 8
  %3240 = extractvalue { ptr, i32 } %3238, 1
  store i32 %3240, ptr %12, align 4
  br label %3245

3241:                                             ; preds = %3188
  %3242 = landingpad { ptr, i32 }
          cleanup
  %3243 = extractvalue { ptr, i32 } %3242, 0
  store ptr %3243, ptr %11, align 8
  %3244 = extractvalue { ptr, i32 } %3242, 1
  store i32 %3244, ptr %12, align 4
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %304) #0
  br label %3245

3245:                                             ; preds = %3241, %3237
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #0
  br label %3246

3246:                                             ; preds = %3245, %3233
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %302) #0
  br label %3378

3247:                                             ; preds = %3192, %3189
  %3248 = landingpad { ptr, i32 }
          cleanup
  %3249 = extractvalue { ptr, i32 } %3248, 0
  store ptr %3249, ptr %11, align 8
  %3250 = extractvalue { ptr, i32 } %3248, 1
  store i32 %3250, ptr %12, align 4
  br label %3377

3251:                                             ; preds = %3199
  %3252 = landingpad { ptr, i32 }
          cleanup
  %3253 = extractvalue { ptr, i32 } %3252, 0
  store ptr %3253, ptr %11, align 8
  %3254 = extractvalue { ptr, i32 } %3252, 1
  store i32 %3254, ptr %12, align 4
  br label %3259

3255:                                             ; preds = %3208
  %3256 = landingpad { ptr, i32 }
          cleanup
  %3257 = extractvalue { ptr, i32 } %3256, 0
  store ptr %3257, ptr %11, align 8
  %3258 = extractvalue { ptr, i32 } %3256, 1
  store i32 %3258, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #0
  br label %3259

3259:                                             ; preds = %3255, %3251
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #0
  br label %3376

3260:                                             ; preds = %3210
  %3261 = landingpad { ptr, i32 }
          cleanup
  %3262 = extractvalue { ptr, i32 } %3261, 0
  store ptr %3262, ptr %11, align 8
  %3263 = extractvalue { ptr, i32 } %3261, 1
  store i32 %3263, ptr %12, align 4
  br label %3376

3264:                                             ; preds = %3216
  %3265 = landingpad { ptr, i32 }
          cleanup
  %3266 = extractvalue { ptr, i32 } %3265, 0
  store ptr %3266, ptr %11, align 8
  %3267 = extractvalue { ptr, i32 } %3265, 1
  store i32 %3267, ptr %12, align 4
  br label %3282

3268:                                             ; preds = %3217
  %3269 = landingpad { ptr, i32 }
          cleanup
  %3270 = extractvalue { ptr, i32 } %3269, 0
  store ptr %3270, ptr %11, align 8
  %3271 = extractvalue { ptr, i32 } %3269, 1
  store i32 %3271, ptr %12, align 4
  br label %3281

3272:                                             ; preds = %3218
  %3273 = landingpad { ptr, i32 }
          cleanup
  %3274 = extractvalue { ptr, i32 } %3273, 0
  store ptr %3274, ptr %11, align 8
  %3275 = extractvalue { ptr, i32 } %3273, 1
  store i32 %3275, ptr %12, align 4
  br label %3280

3276:                                             ; preds = %3219
  %3277 = landingpad { ptr, i32 }
          cleanup
  %3278 = extractvalue { ptr, i32 } %3277, 0
  store ptr %3278, ptr %11, align 8
  %3279 = extractvalue { ptr, i32 } %3277, 1
  store i32 %3279, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %311) #0
  br label %3280

3280:                                             ; preds = %3276, %3272
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #0
  br label %3281

3281:                                             ; preds = %3280, %3268
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #0
  br label %3282

3282:                                             ; preds = %3281, %3264
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #0
  br label %3376

3283:                                             ; preds = %3308, %3302, %3232, %3221
  %3284 = landingpad { ptr, i32 }
          cleanup
  %3285 = extractvalue { ptr, i32 } %3284, 0
  store ptr %3285, ptr %11, align 8
  %3286 = extractvalue { ptr, i32 } %3284, 1
  store i32 %3286, ptr %12, align 4
  br label %3330

3287:                                             ; preds = %3226
  %3288 = landingpad { ptr, i32 }
          cleanup
  %3289 = extractvalue { ptr, i32 } %3288, 0
  store ptr %3289, ptr %11, align 8
  %3290 = extractvalue { ptr, i32 } %3288, 1
  store i32 %3290, ptr %12, align 4
  br label %3295

3291:                                             ; preds = %3227
  %3292 = landingpad { ptr, i32 }
          cleanup
  %3293 = extractvalue { ptr, i32 } %3292, 0
  store ptr %3293, ptr %11, align 8
  %3294 = extractvalue { ptr, i32 } %3292, 1
  store i32 %3294, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %319) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #0
  br label %3295

3295:                                             ; preds = %3291, %3287
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #0
  br label %3330

3296:                                             ; preds = %3230
  %3297 = landingpad { ptr, i32 }
          cleanup
  %3298 = extractvalue { ptr, i32 } %3297, 0
  store ptr %3298, ptr %11, align 8
  %3299 = extractvalue { ptr, i32 } %3297, 1
  store i32 %3299, ptr %12, align 4
  call void @__cxa_free_exception(ptr %3231) #0
  br label %3330

3300:                                             ; preds = %3225
  br label %3301

3301:                                             ; preds = %3300
  br label %3302

3302:                                             ; preds = %3301
  %3303 = load ptr, ptr %305, align 8, !tbaa !5
  %3304 = load i64, ptr %307, align 8, !tbaa !144
  %3305 = load i32, ptr %306, align 4, !tbaa !113
  %3306 = zext i32 %3305 to i64
  %3307 = load i64, ptr %315, align 8, !tbaa !144
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %3303, i64 noundef %3304, i64 noundef %3306, i64 noundef %3307)
          to label %3308 unwind label %3283

3308:                                             ; preds = %3302
  %3309 = load i32, ptr %306, align 4, !tbaa !113
  %3310 = zext i32 %3309 to i64
  %3311 = load i64, ptr %307, align 8, !tbaa !144
  %3312 = add i64 %3311, %3310
  store i64 %3312, ptr %307, align 8, !tbaa !144
  %3313 = load ptr, ptr %305, align 8, !tbaa !5
  %3314 = load i64, ptr %307, align 8, !tbaa !144
  %3315 = load i32, ptr %306, align 4, !tbaa !113
  %3316 = zext i32 %3315 to i64
  %3317 = load i64, ptr %316, align 8, !tbaa !144
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %3313, i64 noundef %3314, i64 noundef %3316, i64 noundef %3317)
          to label %3318 unwind label %3283

3318:                                             ; preds = %3308
  %3319 = load i32, ptr %306, align 4, !tbaa !113
  %3320 = zext i32 %3319 to i64
  %3321 = load i64, ptr %307, align 8, !tbaa !144
  %3322 = add i64 %3321, %3320
  store i64 %3322, ptr %307, align 8, !tbaa !144
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #0
  %3323 = load i64, ptr %307, align 8, !tbaa !144
  %3324 = load ptr, ptr %305, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.EncodedLiteral, ptr %3324, i32 0, i32 0
  %3326 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3325) #0
  %3327 = icmp eq i64 %3323, %3326
  br i1 %3327, label %3328, label %3329

3328:                                             ; preds = %3318
  br label %3332

3329:                                             ; preds = %3318
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.9, i32 noundef 740, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

3330:                                             ; preds = %3296, %3295, %3283
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #0
  br label %3376

3331:                                             ; No predecessors!
  br label %3332

3332:                                             ; preds = %3331, %3328
  %3333 = getelementptr inbounds %"class.HIR::Static", ptr %301, i32 0, i32 6
  store i8 1, ptr %3333, align 8, !tbaa !168
  %3334 = load ptr, ptr %4, align 8, !tbaa !5
  %3335 = getelementptr inbounds %class.TransList, ptr %3334, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %320) #0
  invoke void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.560") align 8 %320, ptr noundef nonnull align 8 dereferenceable(360) %301)
          to label %3336 unwind label %3358

3336:                                             ; preds = %3332
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %3335, ptr noundef nonnull align 8 dereferenceable(8) %320)
          to label %3337 unwind label %3362

3337:                                             ; preds = %3336
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #0
  %3338 = load ptr, ptr %4, align 8, !tbaa !5
  %3339 = load ptr, ptr %288, align 8, !tbaa !5
  %3340 = getelementptr inbounds %"struct.std::pair.548", ptr %3339, i32 0, i32 0
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %322, ptr noundef nonnull align 8 dereferenceable(88) %3340)
          to label %3341 unwind label %3367

3341:                                             ; preds = %3337
  %3342 = invoke noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %3338, ptr noundef %322)
          to label %3343 unwind label %3371

3343:                                             ; preds = %3341
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %322) #0
  store ptr %3342, ptr %321, align 8, !tbaa !5
  %3344 = load ptr, ptr %4, align 8, !tbaa !5
  %3345 = getelementptr inbounds %class.TransList, ptr %3344, i32 0, i32 11
  %3346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3345) #0
  %3347 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %3346) #0
  %3348 = load ptr, ptr %321, align 8, !tbaa !5
  %3349 = getelementptr inbounds %struct.TransList_Static, ptr %3348, i32 0, i32 0
  store ptr %3347, ptr %3349, align 8, !tbaa !184
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %308) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %306) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #0
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %301) #0
  call void @llvm.lifetime.end.p0(i64 360, ptr %301) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %300) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %300) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %293) #0
  store i32 0, ptr %95, align 4
  br label %3350

3350:                                             ; preds = %3343, %3093
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #0
  %3351 = load i32, ptr %95, align 4
  switch i32 %3351, label %3353 [
    i32 0, label %3352
  ]

3352:                                             ; preds = %3350
  store i32 0, ptr %95, align 4
  br label %3353

3353:                                             ; preds = %3352, %3350
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #0
  %3354 = load i32, ptr %95, align 4
  switch i32 %3354, label %6584 [
    i32 0, label %3355
    i32 55, label %3356
  ]

3355:                                             ; preds = %3353
  br label %3356

3356:                                             ; preds = %3355, %3353
  %3357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %286) #0
  br label %3070

3358:                                             ; preds = %3332
  %3359 = landingpad { ptr, i32 }
          cleanup
  %3360 = extractvalue { ptr, i32 } %3359, 0
  store ptr %3360, ptr %11, align 8
  %3361 = extractvalue { ptr, i32 } %3359, 1
  store i32 %3361, ptr %12, align 4
  br label %3366

3362:                                             ; preds = %3336
  %3363 = landingpad { ptr, i32 }
          cleanup
  %3364 = extractvalue { ptr, i32 } %3363, 0
  store ptr %3364, ptr %11, align 8
  %3365 = extractvalue { ptr, i32 } %3363, 1
  store i32 %3365, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #0
  br label %3366

3366:                                             ; preds = %3362, %3358
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #0
  br label %3376

3367:                                             ; preds = %3337
  %3368 = landingpad { ptr, i32 }
          cleanup
  %3369 = extractvalue { ptr, i32 } %3368, 0
  store ptr %3369, ptr %11, align 8
  %3370 = extractvalue { ptr, i32 } %3368, 1
  store i32 %3370, ptr %12, align 4
  br label %3375

3371:                                             ; preds = %3341
  %3372 = landingpad { ptr, i32 }
          cleanup
  %3373 = extractvalue { ptr, i32 } %3372, 0
  store ptr %3373, ptr %11, align 8
  %3374 = extractvalue { ptr, i32 } %3372, 1
  store i32 %3374, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %322) #0
  br label %3375

3375:                                             ; preds = %3371, %3367
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #0
  br label %3376

3376:                                             ; preds = %3375, %3366, %3330, %3282, %3260, %3259
  call void @llvm.lifetime.end.p0(i64 24, ptr %308) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #0
  br label %3377

3377:                                             ; preds = %3376, %3247
  call void @llvm.lifetime.end.p0(i64 4, ptr %306) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #0
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %301) #0
  br label %3378

3378:                                             ; preds = %3377, %3246
  call void @llvm.lifetime.end.p0(i64 360, ptr %301) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %300) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %300) #0
  br label %3379

3379:                                             ; preds = %3378, %3180
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #0
  br label %3380

3380:                                             ; preds = %3379, %3176
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #0
  br label %3381

3381:                                             ; preds = %3380, %3175, %3166, %3157
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %293) #0
  br label %3382

3382:                                             ; preds = %3381, %3114, %3102
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #0
  br label %3383

3383:                                             ; preds = %3382, %3098
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %289) #0
  br label %3384

3384:                                             ; preds = %3383, %3094
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #0
  br label %4607

3385:                                             ; preds = %3072
  call void @llvm.lifetime.start.p0(i64 8, ptr %323) #0
  %3386 = load ptr, ptr %4, align 8, !tbaa !5
  %3387 = getelementptr inbounds %class.TransList, ptr %3386, i32 0, i32 4
  store ptr %3387, ptr %323, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %324) #0
  %3388 = load ptr, ptr %323, align 8, !tbaa !5
  %3389 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %3388) #0
  %3390 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %324, i32 0, i32 0
  store ptr %3389, ptr %3390, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %325) #0
  %3391 = load ptr, ptr %323, align 8, !tbaa !5
  %3392 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %3391) #0
  %3393 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.547", ptr %325, i32 0, i32 0
  store ptr %3392, ptr %3393, align 8
  br label %3394

3394:                                             ; preds = %4553, %3385
  %3395 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(8) %325) #0
  br i1 %3395, label %3397, label %3396

3396:                                             ; preds = %3394
  store i32 60, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #0
  br label %4588

3397:                                             ; preds = %3394
  call void @llvm.lifetime.start.p0(i64 8, ptr %326) #0
  %3398 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %324) #0
  store ptr %3398, ptr %326, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %3399 unwind label %3418

3399:                                             ; preds = %3397
  call void @llvm.lifetime.start.p0(i64 8, ptr %328) #0
  %3400 = load ptr, ptr %326, align 8, !tbaa !5
  %3401 = getelementptr inbounds %"struct.std::pair.548", ptr %3400, i32 0, i32 0
  %3402 = getelementptr inbounds %"class.HIR::Path", ptr %3401, i32 0, i32 0
  %3403 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3402)
          to label %3404 unwind label %3422

3404:                                             ; preds = %3399
  %3405 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3403, i32 0, i32 1
  store ptr %3405, ptr %328, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %329) #0
  %3406 = load ptr, ptr %326, align 8, !tbaa !5
  %3407 = getelementptr inbounds %"struct.std::pair.548", ptr %3406, i32 0, i32 0
  %3408 = getelementptr inbounds %"class.HIR::Path", ptr %3407, i32 0, i32 0
  %3409 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3408)
          to label %3410 unwind label %3426

3410:                                             ; preds = %3404
  %3411 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3409, i32 0, i32 0
  store ptr %3411, ptr %329, align 8, !tbaa !5
  %3412 = load ptr, ptr %328, align 8, !tbaa !5
  %3413 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3412, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %330) #0
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %3414 unwind label %3430

3414:                                             ; preds = %3410
  %3415 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3413, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %3416 unwind label %3434

3416:                                             ; preds = %3414
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #0
  br i1 %3415, label %3417, label %3439

3417:                                             ; preds = %3416
  store i32 61, ptr %95, align 4
  br label %4547

3418:                                             ; preds = %3397
  %3419 = landingpad { ptr, i32 }
          cleanup
  %3420 = extractvalue { ptr, i32 } %3419, 0
  store ptr %3420, ptr %11, align 8
  %3421 = extractvalue { ptr, i32 } %3419, 1
  store i32 %3421, ptr %12, align 4
  br label %4587

3422:                                             ; preds = %3399
  %3423 = landingpad { ptr, i32 }
          cleanup
  %3424 = extractvalue { ptr, i32 } %3423, 0
  store ptr %3424, ptr %11, align 8
  %3425 = extractvalue { ptr, i32 } %3423, 1
  store i32 %3425, ptr %12, align 4
  br label %4586

3426:                                             ; preds = %3458, %3456, %3453, %3451, %3448, %3446, %3443, %3440, %3404
  %3427 = landingpad { ptr, i32 }
          cleanup
  %3428 = extractvalue { ptr, i32 } %3427, 0
  store ptr %3428, ptr %11, align 8
  %3429 = extractvalue { ptr, i32 } %3427, 1
  store i32 %3429, ptr %12, align 4
  br label %4585

3430:                                             ; preds = %3410
  %3431 = landingpad { ptr, i32 }
          cleanup
  %3432 = extractvalue { ptr, i32 } %3431, 0
  store ptr %3432, ptr %11, align 8
  %3433 = extractvalue { ptr, i32 } %3431, 1
  store i32 %3433, ptr %12, align 4
  br label %3438

3434:                                             ; preds = %3414
  %3435 = landingpad { ptr, i32 }
          cleanup
  %3436 = extractvalue { ptr, i32 } %3435, 0
  store ptr %3436, ptr %11, align 8
  %3437 = extractvalue { ptr, i32 } %3435, 1
  store i32 %3437, ptr %12, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #0
  br label %3438

3438:                                             ; preds = %3434, %3430
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #0
  br label %4585

3439:                                             ; preds = %3416
  br label %3440

3440:                                             ; preds = %3439
  %3441 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3442 unwind label %3426

3442:                                             ; preds = %3440
  br i1 %3441, label %3443, label %3461

3443:                                             ; preds = %3442
  %3444 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %3445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3444, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %3446 unwind label %3426

3446:                                             ; preds = %3443
  %3447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3445, ptr noundef @.str.26)
          to label %3448 unwind label %3426

3448:                                             ; preds = %3446
  %3449 = load ptr, ptr %328, align 8, !tbaa !5
  %3450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %3447, ptr noundef nonnull align 8 dereferenceable(32) %3449)
          to label %3451 unwind label %3426

3451:                                             ; preds = %3448
  %3452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3450, ptr noundef @.str.27)
          to label %3453 unwind label %3426

3453:                                             ; preds = %3451
  %3454 = load ptr, ptr %329, align 8, !tbaa !5
  %3455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %3452, ptr noundef nonnull align 8 dereferenceable(8) %3454)
          to label %3456 unwind label %3426

3456:                                             ; preds = %3453
  %3457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3455, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3458 unwind label %3426

3458:                                             ; preds = %3456
  %3459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3457, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3460 unwind label %3426

3460:                                             ; preds = %3458
  br label %3461

3461:                                             ; preds = %3460, %3442
  br label %3462

3462:                                             ; preds = %3461
  br label %3463

3463:                                             ; preds = %3462
  call void @llvm.lifetime.start.p0(i64 8, ptr %331) #0
  %3464 = load ptr, ptr %3, align 8, !tbaa !5
  %3465 = load ptr, ptr %328, align 8, !tbaa !5
  %3466 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3465, i32 0, i32 0
  %3467 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %3464, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %3466)
          to label %3468 unwind label %3484

3468:                                             ; preds = %3463
  store ptr %3467, ptr %331, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #0
  %3469 = load ptr, ptr %331, align 8, !tbaa !5
  %3470 = getelementptr inbounds %"class.HIR::Trait", ptr %3469, i32 0, i32 10
  store ptr %3470, ptr %332, align 8, !tbaa !5
  br label %3471

3471:                                             ; preds = %3468
  %3472 = load ptr, ptr %332, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %333) #0
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %3473 unwind label %3488

3473:                                             ; preds = %3471
  %3474 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3472, ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %3475 unwind label %3492

3475:                                             ; preds = %3473
  %3476 = xor i1 %3474, true
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #0
  br i1 %3476, label %3477, label %3514

3477:                                             ; preds = %3475
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %3478 unwind label %3497

3478:                                             ; preds = %3477
  call void @llvm.lifetime.start.p0(i64 8, ptr %336) #0
  %3479 = getelementptr inbounds %class.anon.568, ptr %336, i32 0, i32 0
  %3480 = load ptr, ptr %328, align 8, !tbaa !5
  store ptr %3480, ptr %3479, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull align 8 dereferenceable(8) %336) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef %335)
          to label %3481 unwind label %3501

3481:                                             ; preds = %3478
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #0
  %3482 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3482, ptr noundef @.str.10)
          to label %3483 unwind label %3506

3483:                                             ; preds = %3481
  invoke void @__cxa_throw(ptr %3482, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %3510

3484:                                             ; preds = %3463
  %3485 = landingpad { ptr, i32 }
          cleanup
  %3486 = extractvalue { ptr, i32 } %3485, 0
  store ptr %3486, ptr %11, align 8
  %3487 = extractvalue { ptr, i32 } %3485, 1
  store i32 %3487, ptr %12, align 4
  br label %4584

3488:                                             ; preds = %3471
  %3489 = landingpad { ptr, i32 }
          cleanup
  %3490 = extractvalue { ptr, i32 } %3489, 0
  store ptr %3490, ptr %11, align 8
  %3491 = extractvalue { ptr, i32 } %3489, 1
  store i32 %3491, ptr %12, align 4
  br label %3496

3492:                                             ; preds = %3473
  %3493 = landingpad { ptr, i32 }
          cleanup
  %3494 = extractvalue { ptr, i32 } %3493, 0
  store ptr %3494, ptr %11, align 8
  %3495 = extractvalue { ptr, i32 } %3493, 1
  store i32 %3495, ptr %12, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %333) #0
  br label %3496

3496:                                             ; preds = %3492, %3488
  call void @llvm.lifetime.end.p0(i64 8, ptr %333) #0
  br label %4583

3497:                                             ; preds = %3477
  %3498 = landingpad { ptr, i32 }
          cleanup
  %3499 = extractvalue { ptr, i32 } %3498, 0
  store ptr %3499, ptr %11, align 8
  %3500 = extractvalue { ptr, i32 } %3498, 1
  store i32 %3500, ptr %12, align 4
  br label %3505

3501:                                             ; preds = %3478
  %3502 = landingpad { ptr, i32 }
          cleanup
  %3503 = extractvalue { ptr, i32 } %3502, 0
  store ptr %3503, ptr %11, align 8
  %3504 = extractvalue { ptr, i32 } %3502, 1
  store i32 %3504, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #0
  br label %3505

3505:                                             ; preds = %3501, %3497
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #0
  br label %4583

3506:                                             ; preds = %3481
  %3507 = landingpad { ptr, i32 }
          cleanup
  %3508 = extractvalue { ptr, i32 } %3507, 0
  store ptr %3508, ptr %11, align 8
  %3509 = extractvalue { ptr, i32 } %3507, 1
  store i32 %3509, ptr %12, align 4
  call void @__cxa_free_exception(ptr %3482) #0
  br label %4583

3510:                                             ; preds = %3483
  %3511 = landingpad { ptr, i32 }
          cleanup
  %3512 = extractvalue { ptr, i32 } %3511, 0
  store ptr %3512, ptr %11, align 8
  %3513 = extractvalue { ptr, i32 } %3511, 1
  store i32 %3513, ptr %12, align 4
  br label %4583

3514:                                             ; preds = %3475
  br label %3515

3515:                                             ; preds = %3514
  br label %3516

3516:                                             ; preds = %3515
  call void @llvm.lifetime.start.p0(i64 24, ptr %337) #0
  %3517 = load ptr, ptr %328, align 8, !tbaa !5
  %3518 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3517, i32 0, i32 1
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %337, ptr noundef nonnull align 8 dereferenceable(24) %3518)
          to label %3519 unwind label %3533

3519:                                             ; preds = %3516
  call void @llvm.lifetime.start.p0(i64 8, ptr %338) #0
  %3520 = load ptr, ptr %331, align 8, !tbaa !5
  %3521 = getelementptr inbounds %"class.HIR::Trait", ptr %3520, i32 0, i32 7
  store ptr %3521, ptr %338, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #0
  %3522 = load ptr, ptr %338, align 8, !tbaa !5
  %3523 = call ptr @_ZNKSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %3522) #0
  %3524 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %339, i32 0, i32 0
  %3525 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %3524, i32 0, i32 0
  store ptr %3523, ptr %3525, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %340) #0
  %3526 = load ptr, ptr %338, align 8, !tbaa !5
  %3527 = call ptr @_ZNKSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %3526) #0
  %3528 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %340, i32 0, i32 0
  %3529 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %3528, i32 0, i32 0
  store ptr %3527, ptr %3529, align 8
  br label %3530

3530:                                             ; preds = %3555, %3519
  %3531 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringjELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %340) #0
  br i1 %3531, label %3537, label %3532

3532:                                             ; preds = %3530
  store i32 66, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #0
  br label %3600

3533:                                             ; preds = %3516
  %3534 = landingpad { ptr, i32 }
          cleanup
  %3535 = extractvalue { ptr, i32 } %3534, 0
  store ptr %3535, ptr %11, align 8
  %3536 = extractvalue { ptr, i32 } %3534, 1
  store i32 %3536, ptr %12, align 4
  br label %4582

3537:                                             ; preds = %3530
  call void @llvm.lifetime.start.p0(i64 8, ptr %341) #0
  %3538 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringjELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %339) #0
  store ptr %3538, ptr %341, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %342) #0
  %3539 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %344, ptr noundef nonnull align 8 dereferenceable(8) %3539)
          to label %3540 unwind label %3557

3540:                                             ; preds = %3537
  %3541 = load ptr, ptr %328, align 8, !tbaa !5
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %345, ptr noundef nonnull align 8 dereferenceable(32) %3541)
          to label %3542 unwind label %3561

3542:                                             ; preds = %3540
  %3543 = load ptr, ptr %341, align 8, !tbaa !5
  %3544 = getelementptr inbounds %"struct.std::pair.569", ptr %3543, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(8) %3544)
          to label %3545 unwind label %3565

3545:                                             ; preds = %3542
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %347)
          to label %3546 unwind label %3569

3546:                                             ; preds = %3545
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %343, ptr noundef %344, ptr noundef %345, ptr noundef %346, ptr noundef %347)
          to label %3547 unwind label %3573

3547:                                             ; preds = %3546
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %348)
          to label %3548 unwind label %3577

3548:                                             ; preds = %3547
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %342, ptr noundef %343, ptr noundef %348)
          to label %3549 unwind label %3581

3549:                                             ; preds = %3548
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %348) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %343) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %347) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #0
  %3550 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %3550, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %342)
          to label %3551 unwind label %3590

3551:                                             ; preds = %3549
  %3552 = getelementptr inbounds %"struct.HIR::PathParams", ptr %337, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull align 8 dereferenceable(8) %342)
          to label %3553 unwind label %3590

3553:                                             ; preds = %3551
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %3552, ptr noundef %349)
          to label %3554 unwind label %3594

3554:                                             ; preds = %3553
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %342) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #0
  br label %3555

3555:                                             ; preds = %3554
  %3556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringjELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %339) #0
  br label %3530

3557:                                             ; preds = %3537
  %3558 = landingpad { ptr, i32 }
          cleanup
  %3559 = extractvalue { ptr, i32 } %3558, 0
  store ptr %3559, ptr %11, align 8
  %3560 = extractvalue { ptr, i32 } %3558, 1
  store i32 %3560, ptr %12, align 4
  br label %3599

3561:                                             ; preds = %3540
  %3562 = landingpad { ptr, i32 }
          cleanup
  %3563 = extractvalue { ptr, i32 } %3562, 0
  store ptr %3563, ptr %11, align 8
  %3564 = extractvalue { ptr, i32 } %3562, 1
  store i32 %3564, ptr %12, align 4
  br label %3589

3565:                                             ; preds = %3542
  %3566 = landingpad { ptr, i32 }
          cleanup
  %3567 = extractvalue { ptr, i32 } %3566, 0
  store ptr %3567, ptr %11, align 8
  %3568 = extractvalue { ptr, i32 } %3566, 1
  store i32 %3568, ptr %12, align 4
  br label %3588

3569:                                             ; preds = %3545
  %3570 = landingpad { ptr, i32 }
          cleanup
  %3571 = extractvalue { ptr, i32 } %3570, 0
  store ptr %3571, ptr %11, align 8
  %3572 = extractvalue { ptr, i32 } %3570, 1
  store i32 %3572, ptr %12, align 4
  br label %3587

3573:                                             ; preds = %3546
  %3574 = landingpad { ptr, i32 }
          cleanup
  %3575 = extractvalue { ptr, i32 } %3574, 0
  store ptr %3575, ptr %11, align 8
  %3576 = extractvalue { ptr, i32 } %3574, 1
  store i32 %3576, ptr %12, align 4
  br label %3586

3577:                                             ; preds = %3547
  %3578 = landingpad { ptr, i32 }
          cleanup
  %3579 = extractvalue { ptr, i32 } %3578, 0
  store ptr %3579, ptr %11, align 8
  %3580 = extractvalue { ptr, i32 } %3578, 1
  store i32 %3580, ptr %12, align 4
  br label %3585

3581:                                             ; preds = %3548
  %3582 = landingpad { ptr, i32 }
          cleanup
  %3583 = extractvalue { ptr, i32 } %3582, 0
  store ptr %3583, ptr %11, align 8
  %3584 = extractvalue { ptr, i32 } %3582, 1
  store i32 %3584, ptr %12, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %348) #0
  br label %3585

3585:                                             ; preds = %3581, %3577
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %343) #0
  br label %3586

3586:                                             ; preds = %3585, %3573
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %347) #0
  br label %3587

3587:                                             ; preds = %3586, %3569
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %346) #0
  br label %3588

3588:                                             ; preds = %3587, %3565
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #0
  br label %3589

3589:                                             ; preds = %3588, %3561
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #0
  br label %3599

3590:                                             ; preds = %3551, %3549
  %3591 = landingpad { ptr, i32 }
          cleanup
  %3592 = extractvalue { ptr, i32 } %3591, 0
  store ptr %3592, ptr %11, align 8
  %3593 = extractvalue { ptr, i32 } %3591, 1
  store i32 %3593, ptr %12, align 4
  br label %3598

3594:                                             ; preds = %3553
  %3595 = landingpad { ptr, i32 }
          cleanup
  %3596 = extractvalue { ptr, i32 } %3595, 0
  store ptr %3596, ptr %11, align 8
  %3597 = extractvalue { ptr, i32 } %3595, 1
  store i32 %3597, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #0
  br label %3598

3598:                                             ; preds = %3594, %3590
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %342) #0
  br label %3599

3599:                                             ; preds = %3598, %3589, %3557
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #0
  br label %4581

3600:                                             ; preds = %3532
  call void @llvm.lifetime.start.p0(i64 8, ptr %350) #0
  %3601 = load ptr, ptr %3, align 8, !tbaa !5
  %3602 = load ptr, ptr %332, align 8, !tbaa !5
  %3603 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %3601, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %3602)
          to label %3604 unwind label %3636

3604:                                             ; preds = %3600
  store ptr %3603, ptr %350, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %351) #0
  %3605 = load ptr, ptr %332, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %3605)
          to label %3606 unwind label %3640

3606:                                             ; preds = %3604
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %355, ptr noundef nonnull align 8 dereferenceable(24) %337)
          to label %3607 unwind label %3644

3607:                                             ; preds = %3606
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %353, ptr noundef %354, ptr noundef %355)
          to label %3608 unwind label %3648

3608:                                             ; preds = %3607
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %352, ptr noundef %353)
          to label %3609 unwind label %3652

3609:                                             ; preds = %3608
  %3610 = load ptr, ptr %350, align 8, !tbaa !5
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef %3610)
          to label %3611 unwind label %3656

3611:                                             ; preds = %3609
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %351, ptr noundef %352, ptr noundef %356)
          to label %3612 unwind label %3660

3612:                                             ; preds = %3611
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %352) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %355) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #0
  %3613 = load ptr, ptr %4, align 8, !tbaa !5
  %3614 = getelementptr inbounds %class.TransList, ptr %3613, i32 0, i32 13
  %3615 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3614) #0
  %3616 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %357, i32 0, i32 0
  store ptr %3615, ptr %3616, align 8
  %3617 = load ptr, ptr %4, align 8, !tbaa !5
  %3618 = getelementptr inbounds %class.TransList, ptr %3617, i32 0, i32 13
  %3619 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3618) #0
  %3620 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %358, i32 0, i32 0
  store ptr %3619, ptr %3620, align 8
  %3621 = getelementptr inbounds %class.anon.588, ptr %359, i32 0, i32 0
  store ptr %351, ptr %3621, align 8, !tbaa !5
  %3622 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %357, i32 0, i32 0
  %3623 = load ptr, ptr %3622, align 8
  %3624 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %358, i32 0, i32 0
  %3625 = load ptr, ptr %3624, align 8
  %3626 = getelementptr inbounds %class.anon.588, ptr %359, i32 0, i32 0
  %3627 = load ptr, ptr %3626, align 8
  %3628 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS5_SaIS5_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_26EbT_SG_T0_"(ptr %3623, ptr %3625, ptr %3627)
          to label %3629 unwind label %3668

3629:                                             ; preds = %3612
  br i1 %3628, label %3686, label %3630

3630:                                             ; preds = %3629
  %3631 = load ptr, ptr %4, align 8, !tbaa !5
  %3632 = getelementptr inbounds %class.TransList, ptr %3631, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 16, ptr %360) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %361) #0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %361, ptr noundef nonnull align 8 dereferenceable(8) %351)
          to label %3633 unwind label %3672

3633:                                             ; preds = %3630
  call void @llvm.lifetime.start.p0(i64 1, ptr %362) #0
  store i8 0, ptr %362, align 1, !tbaa !150
  invoke void @_ZSt9make_pairIN3HIR7TypeRefEbESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind writable sret(%"struct.std::pair.589") align 8 %360, ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 1 dereferenceable(1) %362)
          to label %3634 unwind label %3676

3634:                                             ; preds = %3633
  invoke void @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %3632, ptr noundef nonnull align 8 dereferenceable(9) %360)
          to label %3635 unwind label %3680

3635:                                             ; preds = %3634
  call void @_ZNSt4pairIN3HIR7TypeRefEbED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %360) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %362) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %361) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #0
  br label %3686

3636:                                             ; preds = %3600
  %3637 = landingpad { ptr, i32 }
          cleanup
  %3638 = extractvalue { ptr, i32 } %3637, 0
  store ptr %3638, ptr %11, align 8
  %3639 = extractvalue { ptr, i32 } %3637, 1
  store i32 %3639, ptr %12, align 4
  br label %4580

3640:                                             ; preds = %3604
  %3641 = landingpad { ptr, i32 }
          cleanup
  %3642 = extractvalue { ptr, i32 } %3641, 0
  store ptr %3642, ptr %11, align 8
  %3643 = extractvalue { ptr, i32 } %3641, 1
  store i32 %3643, ptr %12, align 4
  br label %4579

3644:                                             ; preds = %3606
  %3645 = landingpad { ptr, i32 }
          cleanup
  %3646 = extractvalue { ptr, i32 } %3645, 0
  store ptr %3646, ptr %11, align 8
  %3647 = extractvalue { ptr, i32 } %3645, 1
  store i32 %3647, ptr %12, align 4
  br label %3667

3648:                                             ; preds = %3607
  %3649 = landingpad { ptr, i32 }
          cleanup
  %3650 = extractvalue { ptr, i32 } %3649, 0
  store ptr %3650, ptr %11, align 8
  %3651 = extractvalue { ptr, i32 } %3649, 1
  store i32 %3651, ptr %12, align 4
  br label %3666

3652:                                             ; preds = %3608
  %3653 = landingpad { ptr, i32 }
          cleanup
  %3654 = extractvalue { ptr, i32 } %3653, 0
  store ptr %3654, ptr %11, align 8
  %3655 = extractvalue { ptr, i32 } %3653, 1
  store i32 %3655, ptr %12, align 4
  br label %3665

3656:                                             ; preds = %3609
  %3657 = landingpad { ptr, i32 }
          cleanup
  %3658 = extractvalue { ptr, i32 } %3657, 0
  store ptr %3658, ptr %11, align 8
  %3659 = extractvalue { ptr, i32 } %3657, 1
  store i32 %3659, ptr %12, align 4
  br label %3664

3660:                                             ; preds = %3611
  %3661 = landingpad { ptr, i32 }
          cleanup
  %3662 = extractvalue { ptr, i32 } %3661, 0
  store ptr %3662, ptr %11, align 8
  %3663 = extractvalue { ptr, i32 } %3661, 1
  store i32 %3663, ptr %12, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #0
  br label %3664

3664:                                             ; preds = %3660, %3656
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %352) #0
  br label %3665

3665:                                             ; preds = %3664, %3652
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #0
  br label %3666

3666:                                             ; preds = %3665, %3648
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %355) #0
  br label %3667

3667:                                             ; preds = %3666, %3644
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #0
  br label %4579

3668:                                             ; preds = %3612
  %3669 = landingpad { ptr, i32 }
          cleanup
  %3670 = extractvalue { ptr, i32 } %3669, 0
  store ptr %3670, ptr %11, align 8
  %3671 = extractvalue { ptr, i32 } %3669, 1
  store i32 %3671, ptr %12, align 4
  br label %4578

3672:                                             ; preds = %3630
  %3673 = landingpad { ptr, i32 }
          cleanup
  %3674 = extractvalue { ptr, i32 } %3673, 0
  store ptr %3674, ptr %11, align 8
  %3675 = extractvalue { ptr, i32 } %3673, 1
  store i32 %3675, ptr %12, align 4
  br label %3685

3676:                                             ; preds = %3633
  %3677 = landingpad { ptr, i32 }
          cleanup
  %3678 = extractvalue { ptr, i32 } %3677, 0
  store ptr %3678, ptr %11, align 8
  %3679 = extractvalue { ptr, i32 } %3677, 1
  store i32 %3679, ptr %12, align 4
  br label %3684

3680:                                             ; preds = %3634
  %3681 = landingpad { ptr, i32 }
          cleanup
  %3682 = extractvalue { ptr, i32 } %3681, 0
  store ptr %3682, ptr %11, align 8
  %3683 = extractvalue { ptr, i32 } %3681, 1
  store i32 %3683, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7TypeRefEbED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %360) #0
  br label %3684

3684:                                             ; preds = %3680, %3676
  call void @llvm.lifetime.end.p0(i64 1, ptr %362) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #0
  br label %3685

3685:                                             ; preds = %3684, %3672
  call void @llvm.lifetime.end.p0(i64 8, ptr %361) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #0
  br label %4578

3686:                                             ; preds = %3635, %3629
  call void @llvm.lifetime.start.p0(i64 8, ptr %363) #0
  %3687 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3688 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(424) %3687, ptr noundef nonnull align 8 dereferenceable(8) %351)
          to label %3689 unwind label %3694

3689:                                             ; preds = %3686
  store ptr %3688, ptr %363, align 8, !tbaa !5
  %3690 = load ptr, ptr %363, align 8, !tbaa !5
  %3691 = icmp ne ptr %3690, null
  br i1 %3691, label %3692, label %3693

3692:                                             ; preds = %3689
  br label %3699

3693:                                             ; preds = %3689
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.9, i32 noundef 781, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

3694:                                             ; preds = %3686
  %3695 = landingpad { ptr, i32 }
          cleanup
  %3696 = extractvalue { ptr, i32 } %3695, 0
  store ptr %3696, ptr %11, align 8
  %3697 = extractvalue { ptr, i32 } %3695, 1
  store i32 %3697, ptr %12, align 4
  br label %4577

3698:                                             ; No predecessors!
  br label %3699

3699:                                             ; preds = %3698, %3692
  call void @llvm.lifetime.start.p0(i64 128, ptr %364) #0
  %3700 = load ptr, ptr %329, align 8, !tbaa !5
  %3701 = load ptr, ptr %328, align 8, !tbaa !5
  %3702 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3701, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %364, ptr noundef %3700, ptr noundef %3702, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %3703 unwind label %3751

3703:                                             ; preds = %3699
  call void @llvm.lifetime.start.p0(i64 72, ptr %365) #0
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %365) #0
  %3704 = getelementptr inbounds %"struct.HIR::Linkage", ptr %365, i32 0, i32 0
  store i32 1, ptr %3704, align 8, !tbaa !157
  call void @llvm.lifetime.start.p0(i64 360, ptr %366) #0
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %367, ptr noundef nonnull align 8 dereferenceable(72) %365) #0
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef nonnull align 8 dereferenceable(8) %351)
          to label %3705 unwind label %3755

3705:                                             ; preds = %3703
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %369)
          to label %3706 unwind label %3759

3706:                                             ; preds = %3705
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %366, ptr noundef %367, i1 noundef zeroext false, ptr noundef %368, ptr noundef %369)
          to label %3707 unwind label %3763

3707:                                             ; preds = %3706
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %369) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %367) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %370) #0
  %3708 = getelementptr inbounds %"class.HIR::Static", ptr %366, i32 0, i32 5
  store ptr %3708, ptr %370, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %371) #0
  %3709 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %3710 unwind label %3769

3710:                                             ; preds = %3707
  %3711 = udiv i32 %3709, 8
  store i32 %3711, ptr %371, align 4, !tbaa !113
  %3712 = load ptr, ptr %370, align 8, !tbaa !5
  %3713 = getelementptr inbounds %struct.EncodedLiteral, ptr %3712, i32 0, i32 0
  %3714 = load ptr, ptr %363, align 8, !tbaa !5
  %3715 = getelementptr inbounds %struct.TypeRepr, ptr %3714, i32 0, i32 1
  %3716 = load i64, ptr %3715, align 8, !tbaa !158
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3713, i64 noundef %3716)
          to label %3717 unwind label %3769

3717:                                             ; preds = %3710
  call void @llvm.lifetime.start.p0(i64 8, ptr %372) #0
  store i64 0, ptr %372, align 8, !tbaa !144
  call void @llvm.lifetime.start.p0(i64 24, ptr %373) #0
  %3718 = getelementptr inbounds %class.anon.592, ptr %373, i32 0, i32 0
  %3719 = load ptr, ptr %370, align 8, !tbaa !5
  store ptr %3719, ptr %3718, align 8, !tbaa !5
  %3720 = getelementptr inbounds %class.anon.592, ptr %373, i32 0, i32 1
  store ptr %372, ptr %3720, align 8, !tbaa !5
  %3721 = getelementptr inbounds %class.anon.592, ptr %373, i32 0, i32 2
  %3722 = load i32, ptr %371, align 4, !tbaa !113
  store i32 %3722, ptr %3721, align 8, !tbaa !186
  %3723 = load ptr, ptr %4, align 8, !tbaa !5
  %3724 = getelementptr inbounds %class.TransList, ptr %3723, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #0
  %3725 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %374, ptr noundef nonnull align 8 dereferenceable(8) %3725)
          to label %3726 unwind label %3773

3726:                                             ; preds = %3717
  %3727 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %3724, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %3728 unwind label %3777

3728:                                             ; preds = %3726
  %3729 = getelementptr inbounds { ptr, i8 }, ptr %375, i32 0, i32 0
  %3730 = extractvalue { ptr, i8 } %3727, 0
  store ptr %3730, ptr %3729, align 8
  %3731 = getelementptr inbounds { ptr, i8 }, ptr %375, i32 0, i32 1
  %3732 = extractvalue { ptr, i8 } %3727, 1
  store i8 %3732, ptr %3731, align 8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #0
  %3733 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %377, ptr noundef nonnull align 8 dereferenceable(8) %3733)
          to label %3734 unwind label %3782

3734:                                             ; preds = %3728
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
          to label %3735 unwind label %3786

3735:                                             ; preds = %3734
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %379)
          to label %3736 unwind label %3790

3736:                                             ; preds = %3735
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %376, ptr noundef %377, ptr noundef %378, ptr noundef %379)
          to label %3737 unwind label %3794

3737:                                             ; preds = %3736
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %373, ptr noundef %376)
          to label %3738 unwind label %3798

3738:                                             ; preds = %3737
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %376) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %380) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %381) #0
  br label %3739

3739:                                             ; preds = %3738
  %3740 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3741 = load ptr, ptr %329, align 8, !tbaa !5
  %3742 = invoke noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(424) %3740, ptr noundef nonnull align 8 dereferenceable(8) %3741, ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %3743 unwind label %3805

3743:                                             ; preds = %3739
  br i1 %3742, label %3822, label %3744

3744:                                             ; preds = %3743
  call void @llvm.lifetime.start.p0(i64 8, ptr %382) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %3745 unwind label %3809

3745:                                             ; preds = %3744
  call void @llvm.lifetime.start.p0(i64 8, ptr %384) #0
  %3746 = getelementptr inbounds %class.anon.594, ptr %384, i32 0, i32 0
  %3747 = load ptr, ptr %329, align 8, !tbaa !5
  store ptr %3747, ptr %3746, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %383, ptr noundef nonnull align 8 dereferenceable(8) %384) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef %383)
          to label %3748 unwind label %3813

3748:                                             ; preds = %3745
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %382) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %382) #0
  %3749 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3749, ptr noundef @.str.10)
          to label %3750 unwind label %3818

3750:                                             ; preds = %3748
  invoke void @__cxa_throw(ptr %3749, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %3805

3751:                                             ; preds = %3699
  %3752 = landingpad { ptr, i32 }
          cleanup
  %3753 = extractvalue { ptr, i32 } %3752, 0
  store ptr %3753, ptr %11, align 8
  %3754 = extractvalue { ptr, i32 } %3752, 1
  store i32 %3754, ptr %12, align 4
  br label %4576

3755:                                             ; preds = %3703
  %3756 = landingpad { ptr, i32 }
          cleanup
  %3757 = extractvalue { ptr, i32 } %3756, 0
  store ptr %3757, ptr %11, align 8
  %3758 = extractvalue { ptr, i32 } %3756, 1
  store i32 %3758, ptr %12, align 4
  br label %3768

3759:                                             ; preds = %3705
  %3760 = landingpad { ptr, i32 }
          cleanup
  %3761 = extractvalue { ptr, i32 } %3760, 0
  store ptr %3761, ptr %11, align 8
  %3762 = extractvalue { ptr, i32 } %3760, 1
  store i32 %3762, ptr %12, align 4
  br label %3767

3763:                                             ; preds = %3706
  %3764 = landingpad { ptr, i32 }
          cleanup
  %3765 = extractvalue { ptr, i32 } %3764, 0
  store ptr %3765, ptr %11, align 8
  %3766 = extractvalue { ptr, i32 } %3764, 1
  store i32 %3766, ptr %12, align 4
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %369) #0
  br label %3767

3767:                                             ; preds = %3763, %3759
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %368) #0
  br label %3768

3768:                                             ; preds = %3767, %3755
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %367) #0
  br label %4575

3769:                                             ; preds = %3710, %3707
  %3770 = landingpad { ptr, i32 }
          cleanup
  %3771 = extractvalue { ptr, i32 } %3770, 0
  store ptr %3771, ptr %11, align 8
  %3772 = extractvalue { ptr, i32 } %3770, 1
  store i32 %3772, ptr %12, align 4
  br label %4574

3773:                                             ; preds = %3717
  %3774 = landingpad { ptr, i32 }
          cleanup
  %3775 = extractvalue { ptr, i32 } %3774, 0
  store ptr %3775, ptr %11, align 8
  %3776 = extractvalue { ptr, i32 } %3774, 1
  store i32 %3776, ptr %12, align 4
  br label %3781

3777:                                             ; preds = %3726
  %3778 = landingpad { ptr, i32 }
          cleanup
  %3779 = extractvalue { ptr, i32 } %3778, 0
  store ptr %3779, ptr %11, align 8
  %3780 = extractvalue { ptr, i32 } %3778, 1
  store i32 %3780, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %374) #0
  br label %3781

3781:                                             ; preds = %3777, %3773
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #0
  br label %4573

3782:                                             ; preds = %3728
  %3783 = landingpad { ptr, i32 }
          cleanup
  %3784 = extractvalue { ptr, i32 } %3783, 0
  store ptr %3784, ptr %11, align 8
  %3785 = extractvalue { ptr, i32 } %3783, 1
  store i32 %3785, ptr %12, align 4
  br label %4573

3786:                                             ; preds = %3734
  %3787 = landingpad { ptr, i32 }
          cleanup
  %3788 = extractvalue { ptr, i32 } %3787, 0
  store ptr %3788, ptr %11, align 8
  %3789 = extractvalue { ptr, i32 } %3787, 1
  store i32 %3789, ptr %12, align 4
  br label %3804

3790:                                             ; preds = %3735
  %3791 = landingpad { ptr, i32 }
          cleanup
  %3792 = extractvalue { ptr, i32 } %3791, 0
  store ptr %3792, ptr %11, align 8
  %3793 = extractvalue { ptr, i32 } %3791, 1
  store i32 %3793, ptr %12, align 4
  br label %3803

3794:                                             ; preds = %3736
  %3795 = landingpad { ptr, i32 }
          cleanup
  %3796 = extractvalue { ptr, i32 } %3795, 0
  store ptr %3796, ptr %11, align 8
  %3797 = extractvalue { ptr, i32 } %3795, 1
  store i32 %3797, ptr %12, align 4
  br label %3802

3798:                                             ; preds = %3737
  %3799 = landingpad { ptr, i32 }
          cleanup
  %3800 = extractvalue { ptr, i32 } %3799, 0
  store ptr %3800, ptr %11, align 8
  %3801 = extractvalue { ptr, i32 } %3799, 1
  store i32 %3801, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %376) #0
  br label %3802

3802:                                             ; preds = %3798, %3794
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  br label %3803

3803:                                             ; preds = %3802, %3790
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #0
  br label %3804

3804:                                             ; preds = %3803, %3786
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #0
  br label %4573

3805:                                             ; preds = %3830, %3824, %3750, %3739
  %3806 = landingpad { ptr, i32 }
          cleanup
  %3807 = extractvalue { ptr, i32 } %3806, 0
  store ptr %3807, ptr %11, align 8
  %3808 = extractvalue { ptr, i32 } %3806, 1
  store i32 %3808, ptr %12, align 4
  br label %3853

3809:                                             ; preds = %3744
  %3810 = landingpad { ptr, i32 }
          cleanup
  %3811 = extractvalue { ptr, i32 } %3810, 0
  store ptr %3811, ptr %11, align 8
  %3812 = extractvalue { ptr, i32 } %3810, 1
  store i32 %3812, ptr %12, align 4
  br label %3817

3813:                                             ; preds = %3745
  %3814 = landingpad { ptr, i32 }
          cleanup
  %3815 = extractvalue { ptr, i32 } %3814, 0
  store ptr %3815, ptr %11, align 8
  %3816 = extractvalue { ptr, i32 } %3814, 1
  store i32 %3816, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %382) #0
  br label %3817

3817:                                             ; preds = %3813, %3809
  call void @llvm.lifetime.end.p0(i64 8, ptr %382) #0
  br label %3853

3818:                                             ; preds = %3748
  %3819 = landingpad { ptr, i32 }
          cleanup
  %3820 = extractvalue { ptr, i32 } %3819, 0
  store ptr %3820, ptr %11, align 8
  %3821 = extractvalue { ptr, i32 } %3819, 1
  store i32 %3821, ptr %12, align 4
  call void @__cxa_free_exception(ptr %3749) #0
  br label %3853

3822:                                             ; preds = %3743
  br label %3823

3823:                                             ; preds = %3822
  br label %3824

3824:                                             ; preds = %3823
  %3825 = load ptr, ptr %370, align 8, !tbaa !5
  %3826 = load i64, ptr %372, align 8, !tbaa !144
  %3827 = load i32, ptr %371, align 4, !tbaa !113
  %3828 = zext i32 %3827 to i64
  %3829 = load i64, ptr %380, align 8, !tbaa !144
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %3825, i64 noundef %3826, i64 noundef %3828, i64 noundef %3829)
          to label %3830 unwind label %3805

3830:                                             ; preds = %3824
  %3831 = load i32, ptr %371, align 4, !tbaa !113
  %3832 = zext i32 %3831 to i64
  %3833 = load i64, ptr %372, align 8, !tbaa !144
  %3834 = add i64 %3833, %3832
  store i64 %3834, ptr %372, align 8, !tbaa !144
  %3835 = load ptr, ptr %370, align 8, !tbaa !5
  %3836 = load i64, ptr %372, align 8, !tbaa !144
  %3837 = load i32, ptr %371, align 4, !tbaa !113
  %3838 = zext i32 %3837 to i64
  %3839 = load i64, ptr %381, align 8, !tbaa !144
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %3835, i64 noundef %3836, i64 noundef %3838, i64 noundef %3839)
          to label %3840 unwind label %3805

3840:                                             ; preds = %3830
  %3841 = load i32, ptr %371, align 4, !tbaa !113
  %3842 = zext i32 %3841 to i64
  %3843 = load i64, ptr %372, align 8, !tbaa !144
  %3844 = add i64 %3843, %3842
  store i64 %3844, ptr %372, align 8, !tbaa !144
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %385) #0
  store i32 0, ptr %385, align 4, !tbaa !113
  br label %3845

3845:                                             ; preds = %4394, %3840
  %3846 = load i32, ptr %385, align 4, !tbaa !113
  %3847 = zext i32 %3846 to i64
  %3848 = load ptr, ptr %331, align 8, !tbaa !5
  %3849 = getelementptr inbounds %"class.HIR::Trait", ptr %3848, i32 0, i32 6
  %3850 = call noundef i64 @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %3849) #0
  %3851 = icmp ult i64 %3847, %3850
  br i1 %3851, label %3854, label %3852

3852:                                             ; preds = %3845
  store i32 70, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %385) #0
  br label %4397

3853:                                             ; preds = %3818, %3817, %3805
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #0
  br label %4573

3854:                                             ; preds = %3845
  call void @llvm.lifetime.start.p0(i64 8, ptr %386) #0
  %3855 = load ptr, ptr %331, align 8, !tbaa !5
  %3856 = getelementptr inbounds %"class.HIR::Trait", ptr %3855, i32 0, i32 6
  store ptr %3856, ptr %386, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %387) #0
  %3857 = load ptr, ptr %386, align 8, !tbaa !5
  %3858 = call ptr @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %3857) #0
  %3859 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.595", ptr %387, i32 0, i32 0
  %3860 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.596", ptr %3859, i32 0, i32 0
  store ptr %3858, ptr %3860, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %388) #0
  %3861 = load ptr, ptr %386, align 8, !tbaa !5
  %3862 = call ptr @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %3861) #0
  %3863 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.595", ptr %388, i32 0, i32 0
  %3864 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.596", ptr %3863, i32 0, i32 0
  store ptr %3862, ptr %3864, align 8
  br label %3865

3865:                                             ; preds = %4381, %3854
  %3866 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(8) %388) #0
  br i1 %3866, label %3868, label %3867

3867:                                             ; preds = %3865
  store i32 73, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %388) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #0
  br label %4393

3868:                                             ; preds = %3865
  call void @llvm.lifetime.start.p0(i64 8, ptr %389) #0
  %3869 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %387) #0
  store ptr %3869, ptr %389, align 8, !tbaa !5
  %3870 = load ptr, ptr %389, align 8, !tbaa !5
  %3871 = getelementptr inbounds %"struct.std::pair.597", ptr %3870, i32 0, i32 1
  %3872 = getelementptr inbounds %"struct.std::pair.599", ptr %3871, i32 0, i32 0
  %3873 = load i32, ptr %3872, align 8, !tbaa !188
  %3874 = load i32, ptr %385, align 4, !tbaa !113
  %3875 = add i32 3, %3874
  %3876 = icmp ne i32 %3873, %3875
  br i1 %3876, label %3877, label %3878

3877:                                             ; preds = %3868
  store i32 74, ptr %95, align 4
  br label %4378

3878:                                             ; preds = %3868
  br label %3879

3879:                                             ; preds = %3878
  %3880 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3881 unwind label %3911

3881:                                             ; preds = %3879
  br i1 %3880, label %3882, label %3915

3882:                                             ; preds = %3881
  %3883 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %3884 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3883, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %3885 unwind label %3911

3885:                                             ; preds = %3882
  %3886 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3884, ptr noundef @.str.28)
          to label %3887 unwind label %3911

3887:                                             ; preds = %3885
  %3888 = load ptr, ptr %389, align 8, !tbaa !5
  %3889 = getelementptr inbounds %"struct.std::pair.597", ptr %3888, i32 0, i32 1
  %3890 = getelementptr inbounds %"struct.std::pair.599", ptr %3889, i32 0, i32 0
  %3891 = load i32, ptr %3890, align 8, !tbaa !188
  %3892 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %3886, i32 noundef %3891)
          to label %3893 unwind label %3911

3893:                                             ; preds = %3887
  %3894 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3892, ptr noundef @.str.29)
          to label %3895 unwind label %3911

3895:                                             ; preds = %3893
  %3896 = load ptr, ptr %389, align 8, !tbaa !5
  %3897 = getelementptr inbounds %"struct.std::pair.597", ptr %3896, i32 0, i32 1
  %3898 = getelementptr inbounds %"struct.std::pair.599", ptr %3897, i32 0, i32 1
  %3899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %3894, ptr noundef nonnull align 8 dereferenceable(32) %3898)
          to label %3900 unwind label %3911

3900:                                             ; preds = %3895
  %3901 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3899, ptr noundef @.str.30)
          to label %3902 unwind label %3911

3902:                                             ; preds = %3900
  %3903 = load ptr, ptr %389, align 8, !tbaa !5
  %3904 = getelementptr inbounds %"struct.std::pair.597", ptr %3903, i32 0, i32 0
  %3905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %3901, ptr noundef nonnull align 8 dereferenceable(8) %3904)
          to label %3906 unwind label %3911

3906:                                             ; preds = %3902
  %3907 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3905, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3908 unwind label %3911

3908:                                             ; preds = %3906
  %3909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3907, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3910 unwind label %3911

3910:                                             ; preds = %3908
  br label %3915

3911:                                             ; preds = %3908, %3906, %3902, %3900, %3895, %3893, %3887, %3885, %3882, %3879
  %3912 = landingpad { ptr, i32 }
          cleanup
  %3913 = extractvalue { ptr, i32 } %3912, 0
  store ptr %3913, ptr %11, align 8
  %3914 = extractvalue { ptr, i32 } %3912, 1
  store i32 %3914, ptr %12, align 4
  br label %4392

3915:                                             ; preds = %3910, %3881
  br label %3916

3916:                                             ; preds = %3915
  br label %3917

3917:                                             ; preds = %3916
  call void @llvm.lifetime.start.p0(i64 32, ptr %390) #0
  %3918 = load ptr, ptr %389, align 8, !tbaa !5
  %3919 = getelementptr inbounds %"struct.std::pair.597", ptr %3918, i32 0, i32 1
  %3920 = getelementptr inbounds %"struct.std::pair.599", ptr %3919, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %390, ptr noundef nonnull align 8 dereferenceable(96) %364, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(32) %3920, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %3921 unwind label %4012

3921:                                             ; preds = %3917
  call void @llvm.lifetime.start.p0(i64 88, ptr %391) #0
  %3922 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %392, ptr noundef nonnull align 8 dereferenceable(8) %3922)
          to label %3923 unwind label %4016

3923:                                             ; preds = %3921
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %393, ptr noundef nonnull align 8 dereferenceable(32) %390)
          to label %3924 unwind label %4020

3924:                                             ; preds = %3923
  %3925 = load ptr, ptr %389, align 8, !tbaa !5
  %3926 = getelementptr inbounds %"struct.std::pair.597", ptr %3925, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %3926)
          to label %3927 unwind label %4024

3927:                                             ; preds = %3924
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %395)
          to label %3928 unwind label %4028

3928:                                             ; preds = %3927
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %391, ptr noundef %392, ptr noundef %393, ptr noundef %394, ptr noundef %395)
          to label %3929 unwind label %4032

3929:                                             ; preds = %3928
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %395) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %393) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #0
  call void @llvm.lifetime.start.p0(i64 128, ptr %396) #0
  %3930 = load ptr, ptr %329, align 8, !tbaa !5
  %3931 = getelementptr inbounds %"class.HIR::Path", ptr %391, i32 0, i32 0
  %3932 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3931)
          to label %3933 unwind label %4039

3933:                                             ; preds = %3929
  %3934 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3932, i32 0, i32 1
  %3935 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3934, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %396, ptr noundef %3930, ptr noundef %3935, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %3936 unwind label %4039

3936:                                             ; preds = %3933
  call void @llvm.lifetime.start.p0(i64 8, ptr %397) #0
  %3937 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3938 = getelementptr inbounds i8, ptr %3937, i64 8
  %3939 = getelementptr inbounds %struct.TraitResolveCommon, ptr %3938, i32 0, i32 0
  %3940 = load ptr, ptr %3939, align 8, !tbaa !191
  %3941 = load ptr, ptr %389, align 8, !tbaa !5
  %3942 = getelementptr inbounds %"struct.std::pair.597", ptr %3941, i32 0, i32 1
  %3943 = getelementptr inbounds %"struct.std::pair.599", ptr %3942, i32 0, i32 1
  %3944 = getelementptr inbounds %"class.HIR::GenericPath", ptr %3943, i32 0, i32 0
  %3945 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %3940, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %3944)
          to label %3946 unwind label %4043

3946:                                             ; preds = %3936
  store ptr %3945, ptr %397, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %398) #0
  %3947 = load ptr, ptr %397, align 8, !tbaa !5
  %3948 = getelementptr inbounds %"class.HIR::Trait", ptr %3947, i32 0, i32 5
  %3949 = load ptr, ptr %389, align 8, !tbaa !5
  %3950 = getelementptr inbounds %"struct.std::pair.597", ptr %3949, i32 0, i32 0
  %3951 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %3948, ptr noundef nonnull align 8 dereferenceable(8) %3950)
          to label %3952 unwind label %4047

3952:                                             ; preds = %3946
  store ptr %3951, ptr %398, align 8, !tbaa !5
  %3953 = load ptr, ptr %398, align 8, !tbaa !5
  %3954 = invoke noundef zeroext i1 @_ZNK3HIR14TraitValueItem11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %3953)
          to label %3955 unwind label %4047

3955:                                             ; preds = %3952
  br i1 %3954, label %3956, label %4376

3956:                                             ; preds = %3955
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #0
  %3957 = load ptr, ptr %398, align 8, !tbaa !5
  %3958 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %3957)
          to label %3959 unwind label %4051

3959:                                             ; preds = %3956
  store ptr %3958, ptr %399, align 8, !tbaa !5
  %3960 = load ptr, ptr %399, align 8, !tbaa !5
  %3961 = getelementptr inbounds %"class.HIR::Function", ptr %3960, i32 0, i32 2
  %3962 = load i32, ptr %3961, align 8, !tbaa !139
  %3963 = icmp eq i32 %3962, 1
  br i1 %3963, label %3964, label %4374

3964:                                             ; preds = %3959
  call void @llvm.lifetime.start.p0(i64 88, ptr %400) #0
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %400, ptr noundef nonnull align 8 dereferenceable(88) %391)
          to label %3965 unwind label %4055

3965:                                             ; preds = %3964
  call void @llvm.lifetime.start.p0(i64 8, ptr %401) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %402) #0
  call void @llvm.lifetime.start.p0(i64 376, ptr %403) #0
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %403)
          to label %3966 unwind label %4059

3966:                                             ; preds = %3965
  %3967 = load ptr, ptr %389, align 8, !tbaa !5
  %3968 = getelementptr inbounds %"struct.std::pair.597", ptr %3967, i32 0, i32 0
  %3969 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE8RcStringEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %403, ptr noundef nonnull align 8 dereferenceable(8) %3968)
          to label %3970 unwind label %4063

3970:                                             ; preds = %3966
  %3971 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA5_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %3969, ptr noundef nonnull align 1 dereferenceable(5) @.str.31)
          to label %3972 unwind label %4063

3972:                                             ; preds = %3970
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %402, ptr noundef nonnull align 8 dereferenceable(112) %3971)
          to label %3973 unwind label %4063

3973:                                             ; preds = %3972
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %401, ptr noundef nonnull align 8 dereferenceable(32) %402)
          to label %3974 unwind label %4067

3974:                                             ; preds = %3973
  %3975 = getelementptr inbounds %"class.HIR::Path", ptr %391, i32 0, i32 0
  %3976 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3975)
          to label %3977 unwind label %4071

3977:                                             ; preds = %3974
  %3978 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3976, i32 0, i32 2
  %3979 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %3978, ptr noundef nonnull align 8 dereferenceable(8) %401)
          to label %3980 unwind label %4071

3980:                                             ; preds = %3977
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #0
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %403) #0
  call void @llvm.lifetime.end.p0(i64 376, ptr %403) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %402) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %401) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %404) #0
  %3981 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %405, ptr noundef nonnull align 8 dereferenceable(88) %391)
          to label %3982 unwind label %4078

3982:                                             ; preds = %3980
  %3983 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %3981, ptr noundef %405)
          to label %3984 unwind label %4082

3984:                                             ; preds = %3982
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %405) #0
  store ptr %3983, ptr %404, align 8, !tbaa !5
  %3985 = load ptr, ptr %404, align 8, !tbaa !5
  %3986 = icmp ne ptr %3985, null
  br i1 %3986, label %3987, label %4370

3987:                                             ; preds = %3984
  call void @llvm.lifetime.start.p0(i64 352, ptr %406) #0
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %406)
          to label %3988 unwind label %4086

3988:                                             ; preds = %3987
  call void @llvm.lifetime.start.p0(i64 8, ptr %407) #0
  %3989 = load ptr, ptr %399, align 8, !tbaa !5
  %3990 = getelementptr inbounds %"class.HIR::Function", ptr %3989, i32 0, i32 10
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %407, ptr noundef nonnull align 8 dereferenceable(96) %396, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %3990, i1 noundef zeroext true)
          to label %3991 unwind label %4090

3991:                                             ; preds = %3988
  %3992 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 10
  %3993 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %3992, ptr noundef nonnull align 8 dereferenceable(8) %407)
          to label %3994 unwind label %4094

3994:                                             ; preds = %3991
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %407) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %407) #0
  %3995 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %3996 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 10
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %3995, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %3996)
          to label %3997 unwind label %4099

3997:                                             ; preds = %3994
  %3998 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %408) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %409) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %409)
          to label %3999 unwind label %4103

3999:                                             ; preds = %3997
  call void @llvm.lifetime.start.p0(i64 8, ptr %410) #0
  %4000 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %411, ptr noundef nonnull align 8 dereferenceable(8) %4000)
          to label %4001 unwind label %4107

4001:                                             ; preds = %3999
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %410, i32 noundef 2, ptr noundef %411)
          to label %4002 unwind label %4111

4002:                                             ; preds = %4001
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %408, ptr noundef nonnull align 8 dereferenceable(212) %409, ptr noundef nonnull align 8 dereferenceable(8) %410)
          to label %4003 unwind label %4115

4003:                                             ; preds = %4002
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %3998, ptr noundef nonnull align 8 dereferenceable(224) %408)
          to label %4004 unwind label %4119

4004:                                             ; preds = %4003
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %408) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %409) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %409) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %408) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %412) #0
  store i64 1, ptr %412, align 8, !tbaa !144
  br label %4005

4005:                                             ; preds = %4138, %4004
  %4006 = load i64, ptr %412, align 8, !tbaa !144
  %4007 = load ptr, ptr %399, align 8, !tbaa !5
  %4008 = getelementptr inbounds %"class.HIR::Function", ptr %4007, i32 0, i32 8
  %4009 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4008) #0
  %4010 = icmp ult i64 %4006, %4009
  br i1 %4010, label %4127, label %4011

4011:                                             ; preds = %4005
  store i32 77, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %412) #0
  br label %4160

4012:                                             ; preds = %3917
  %4013 = landingpad { ptr, i32 }
          cleanup
  %4014 = extractvalue { ptr, i32 } %4013, 0
  store ptr %4014, ptr %11, align 8
  %4015 = extractvalue { ptr, i32 } %4013, 1
  store i32 %4015, ptr %12, align 4
  br label %4391

4016:                                             ; preds = %3921
  %4017 = landingpad { ptr, i32 }
          cleanup
  %4018 = extractvalue { ptr, i32 } %4017, 0
  store ptr %4018, ptr %11, align 8
  %4019 = extractvalue { ptr, i32 } %4017, 1
  store i32 %4019, ptr %12, align 4
  br label %4390

4020:                                             ; preds = %3923
  %4021 = landingpad { ptr, i32 }
          cleanup
  %4022 = extractvalue { ptr, i32 } %4021, 0
  store ptr %4022, ptr %11, align 8
  %4023 = extractvalue { ptr, i32 } %4021, 1
  store i32 %4023, ptr %12, align 4
  br label %4038

4024:                                             ; preds = %3924
  %4025 = landingpad { ptr, i32 }
          cleanup
  %4026 = extractvalue { ptr, i32 } %4025, 0
  store ptr %4026, ptr %11, align 8
  %4027 = extractvalue { ptr, i32 } %4025, 1
  store i32 %4027, ptr %12, align 4
  br label %4037

4028:                                             ; preds = %3927
  %4029 = landingpad { ptr, i32 }
          cleanup
  %4030 = extractvalue { ptr, i32 } %4029, 0
  store ptr %4030, ptr %11, align 8
  %4031 = extractvalue { ptr, i32 } %4029, 1
  store i32 %4031, ptr %12, align 4
  br label %4036

4032:                                             ; preds = %3928
  %4033 = landingpad { ptr, i32 }
          cleanup
  %4034 = extractvalue { ptr, i32 } %4033, 0
  store ptr %4034, ptr %11, align 8
  %4035 = extractvalue { ptr, i32 } %4033, 1
  store i32 %4035, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %395) #0
  br label %4036

4036:                                             ; preds = %4032, %4028
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #0
  br label %4037

4037:                                             ; preds = %4036, %4024
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %393) #0
  br label %4038

4038:                                             ; preds = %4037, %4020
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #0
  br label %4390

4039:                                             ; preds = %3933, %3929
  %4040 = landingpad { ptr, i32 }
          cleanup
  %4041 = extractvalue { ptr, i32 } %4040, 0
  store ptr %4041, ptr %11, align 8
  %4042 = extractvalue { ptr, i32 } %4040, 1
  store i32 %4042, ptr %12, align 4
  br label %4389

4043:                                             ; preds = %3936
  %4044 = landingpad { ptr, i32 }
          cleanup
  %4045 = extractvalue { ptr, i32 } %4044, 0
  store ptr %4045, ptr %11, align 8
  %4046 = extractvalue { ptr, i32 } %4044, 1
  store i32 %4046, ptr %12, align 4
  br label %4388

4047:                                             ; preds = %3952, %3946
  %4048 = landingpad { ptr, i32 }
          cleanup
  %4049 = extractvalue { ptr, i32 } %4048, 0
  store ptr %4049, ptr %11, align 8
  %4050 = extractvalue { ptr, i32 } %4048, 1
  store i32 %4050, ptr %12, align 4
  br label %4387

4051:                                             ; preds = %3956
  %4052 = landingpad { ptr, i32 }
          cleanup
  %4053 = extractvalue { ptr, i32 } %4052, 0
  store ptr %4053, ptr %11, align 8
  %4054 = extractvalue { ptr, i32 } %4052, 1
  store i32 %4054, ptr %12, align 4
  br label %4375

4055:                                             ; preds = %3964
  %4056 = landingpad { ptr, i32 }
          cleanup
  %4057 = extractvalue { ptr, i32 } %4056, 0
  store ptr %4057, ptr %11, align 8
  %4058 = extractvalue { ptr, i32 } %4056, 1
  store i32 %4058, ptr %12, align 4
  br label %4373

4059:                                             ; preds = %3965
  %4060 = landingpad { ptr, i32 }
          cleanup
  %4061 = extractvalue { ptr, i32 } %4060, 0
  store ptr %4061, ptr %11, align 8
  %4062 = extractvalue { ptr, i32 } %4060, 1
  store i32 %4062, ptr %12, align 4
  br label %4077

4063:                                             ; preds = %3972, %3970, %3966
  %4064 = landingpad { ptr, i32 }
          cleanup
  %4065 = extractvalue { ptr, i32 } %4064, 0
  store ptr %4065, ptr %11, align 8
  %4066 = extractvalue { ptr, i32 } %4064, 1
  store i32 %4066, ptr %12, align 4
  br label %4076

4067:                                             ; preds = %3973
  %4068 = landingpad { ptr, i32 }
          cleanup
  %4069 = extractvalue { ptr, i32 } %4068, 0
  store ptr %4069, ptr %11, align 8
  %4070 = extractvalue { ptr, i32 } %4068, 1
  store i32 %4070, ptr %12, align 4
  br label %4075

4071:                                             ; preds = %3977, %3974
  %4072 = landingpad { ptr, i32 }
          cleanup
  %4073 = extractvalue { ptr, i32 } %4072, 0
  store ptr %4073, ptr %11, align 8
  %4074 = extractvalue { ptr, i32 } %4072, 1
  store i32 %4074, ptr %12, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #0
  br label %4075

4075:                                             ; preds = %4071, %4067
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #0
  br label %4076

4076:                                             ; preds = %4075, %4063
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %403) #0
  br label %4077

4077:                                             ; preds = %4076, %4059
  call void @llvm.lifetime.end.p0(i64 376, ptr %403) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %402) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %401) #0
  br label %4372

4078:                                             ; preds = %3980
  %4079 = landingpad { ptr, i32 }
          cleanup
  %4080 = extractvalue { ptr, i32 } %4079, 0
  store ptr %4080, ptr %11, align 8
  %4081 = extractvalue { ptr, i32 } %4079, 1
  store i32 %4081, ptr %12, align 4
  br label %4371

4082:                                             ; preds = %3982
  %4083 = landingpad { ptr, i32 }
          cleanup
  %4084 = extractvalue { ptr, i32 } %4083, 0
  store ptr %4084, ptr %11, align 8
  %4085 = extractvalue { ptr, i32 } %4083, 1
  store i32 %4085, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %405) #0
  br label %4371

4086:                                             ; preds = %3987
  %4087 = landingpad { ptr, i32 }
          cleanup
  %4088 = extractvalue { ptr, i32 } %4087, 0
  store ptr %4088, ptr %11, align 8
  %4089 = extractvalue { ptr, i32 } %4087, 1
  store i32 %4089, ptr %12, align 4
  br label %4369

4090:                                             ; preds = %3988
  %4091 = landingpad { ptr, i32 }
          cleanup
  %4092 = extractvalue { ptr, i32 } %4091, 0
  store ptr %4092, ptr %11, align 8
  %4093 = extractvalue { ptr, i32 } %4091, 1
  store i32 %4093, ptr %12, align 4
  br label %4098

4094:                                             ; preds = %3991
  %4095 = landingpad { ptr, i32 }
          cleanup
  %4096 = extractvalue { ptr, i32 } %4095, 0
  store ptr %4096, ptr %11, align 8
  %4097 = extractvalue { ptr, i32 } %4095, 1
  store i32 %4097, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %407) #0
  br label %4098

4098:                                             ; preds = %4094, %4090
  call void @llvm.lifetime.end.p0(i64 8, ptr %407) #0
  br label %4368

4099:                                             ; preds = %4194, %4192, %4190, %4188, %4185, %4182, %3994
  %4100 = landingpad { ptr, i32 }
          cleanup
  %4101 = extractvalue { ptr, i32 } %4100, 0
  store ptr %4101, ptr %11, align 8
  %4102 = extractvalue { ptr, i32 } %4100, 1
  store i32 %4102, ptr %12, align 4
  br label %4368

4103:                                             ; preds = %3997
  %4104 = landingpad { ptr, i32 }
          cleanup
  %4105 = extractvalue { ptr, i32 } %4104, 0
  store ptr %4105, ptr %11, align 8
  %4106 = extractvalue { ptr, i32 } %4104, 1
  store i32 %4106, ptr %12, align 4
  br label %4126

4107:                                             ; preds = %3999
  %4108 = landingpad { ptr, i32 }
          cleanup
  %4109 = extractvalue { ptr, i32 } %4108, 0
  store ptr %4109, ptr %11, align 8
  %4110 = extractvalue { ptr, i32 } %4108, 1
  store i32 %4110, ptr %12, align 4
  br label %4125

4111:                                             ; preds = %4001
  %4112 = landingpad { ptr, i32 }
          cleanup
  %4113 = extractvalue { ptr, i32 } %4112, 0
  store ptr %4113, ptr %11, align 8
  %4114 = extractvalue { ptr, i32 } %4112, 1
  store i32 %4114, ptr %12, align 4
  br label %4124

4115:                                             ; preds = %4002
  %4116 = landingpad { ptr, i32 }
          cleanup
  %4117 = extractvalue { ptr, i32 } %4116, 0
  store ptr %4117, ptr %11, align 8
  %4118 = extractvalue { ptr, i32 } %4116, 1
  store i32 %4118, ptr %12, align 4
  br label %4123

4119:                                             ; preds = %4003
  %4120 = landingpad { ptr, i32 }
          cleanup
  %4121 = extractvalue { ptr, i32 } %4120, 0
  store ptr %4121, ptr %11, align 8
  %4122 = extractvalue { ptr, i32 } %4120, 1
  store i32 %4122, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %408) #0
  br label %4123

4123:                                             ; preds = %4119, %4115
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #0
  br label %4124

4124:                                             ; preds = %4123, %4111
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %411) #0
  br label %4125

4125:                                             ; preds = %4124, %4107
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %409) #0
  br label %4126

4126:                                             ; preds = %4125, %4103
  call void @llvm.lifetime.end.p0(i64 216, ptr %409) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %408) #0
  br label %4368

4127:                                             ; preds = %4005
  %4128 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %413) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %414) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414)
          to label %4129 unwind label %4141

4129:                                             ; preds = %4127
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #0
  %4130 = load ptr, ptr %399, align 8, !tbaa !5
  %4131 = getelementptr inbounds %"class.HIR::Function", ptr %4130, i32 0, i32 8
  %4132 = load i64, ptr %412, align 8, !tbaa !144
  %4133 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4131, i64 noundef %4132) #0
  %4134 = getelementptr inbounds %"struct.std::pair.390", ptr %4133, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %415, ptr noundef nonnull align 8 dereferenceable(96) %396, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %4134, i1 noundef zeroext true)
          to label %4135 unwind label %4145

4135:                                             ; preds = %4129
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %413, ptr noundef nonnull align 8 dereferenceable(212) %414, ptr noundef nonnull align 8 dereferenceable(8) %415)
          to label %4136 unwind label %4149

4136:                                             ; preds = %4135
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %4128, ptr noundef nonnull align 8 dereferenceable(224) %413)
          to label %4137 unwind label %4153

4137:                                             ; preds = %4136
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %413) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %414) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %413) #0
  br label %4138

4138:                                             ; preds = %4137
  %4139 = load i64, ptr %412, align 8, !tbaa !144
  %4140 = add i64 %4139, 1
  store i64 %4140, ptr %412, align 8, !tbaa !144
  br label %4005, !llvm.loop !192

4141:                                             ; preds = %4127
  %4142 = landingpad { ptr, i32 }
          cleanup
  %4143 = extractvalue { ptr, i32 } %4142, 0
  store ptr %4143, ptr %11, align 8
  %4144 = extractvalue { ptr, i32 } %4142, 1
  store i32 %4144, ptr %12, align 4
  br label %4159

4145:                                             ; preds = %4129
  %4146 = landingpad { ptr, i32 }
          cleanup
  %4147 = extractvalue { ptr, i32 } %4146, 0
  store ptr %4147, ptr %11, align 8
  %4148 = extractvalue { ptr, i32 } %4146, 1
  store i32 %4148, ptr %12, align 4
  br label %4158

4149:                                             ; preds = %4135
  %4150 = landingpad { ptr, i32 }
          cleanup
  %4151 = extractvalue { ptr, i32 } %4150, 0
  store ptr %4151, ptr %11, align 8
  %4152 = extractvalue { ptr, i32 } %4150, 1
  store i32 %4152, ptr %12, align 4
  br label %4157

4153:                                             ; preds = %4136
  %4154 = landingpad { ptr, i32 }
          cleanup
  %4155 = extractvalue { ptr, i32 } %4154, 0
  store ptr %4155, ptr %11, align 8
  %4156 = extractvalue { ptr, i32 } %4154, 1
  store i32 %4156, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %413) #0
  br label %4157

4157:                                             ; preds = %4153, %4149
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #0
  br label %4158

4158:                                             ; preds = %4157, %4145
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414) #0
  br label %4159

4159:                                             ; preds = %4158, %4141
  call void @llvm.lifetime.end.p0(i64 216, ptr %414) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %413) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %412) #0
  br label %4368

4160:                                             ; preds = %4011
  call void @llvm.lifetime.start.p0(i64 8, ptr %416) #0
  store i64 0, ptr %416, align 8, !tbaa !144
  br label %4161

4161:                                             ; preds = %4174, %4160
  %4162 = load i64, ptr %416, align 8, !tbaa !144
  %4163 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  %4164 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4163) #0
  %4165 = icmp ult i64 %4162, %4164
  br i1 %4165, label %4167, label %4166

4166:                                             ; preds = %4161
  store i32 80, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #0
  br label %4181

4167:                                             ; preds = %4161
  %4168 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %4169 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  %4170 = load i64, ptr %416, align 8, !tbaa !144
  %4171 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4169, i64 noundef %4170) #0
  %4172 = getelementptr inbounds %"struct.std::pair.390", ptr %4171, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %4168, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(8) %4172)
          to label %4173 unwind label %4177

4173:                                             ; preds = %4167
  br label %4174

4174:                                             ; preds = %4173
  %4175 = load i64, ptr %416, align 8, !tbaa !144
  %4176 = add i64 %4175, 1
  store i64 %4176, ptr %416, align 8, !tbaa !144
  br label %4161, !llvm.loop !193

4177:                                             ; preds = %4167
  %4178 = landingpad { ptr, i32 }
          cleanup
  %4179 = extractvalue { ptr, i32 } %4178, 0
  store ptr %4179, ptr %11, align 8
  %4180 = extractvalue { ptr, i32 } %4178, 1
  store i32 %4180, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #0
  br label %4368

4181:                                             ; preds = %4166
  br label %4182

4182:                                             ; preds = %4181
  %4183 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4184 unwind label %4099

4184:                                             ; preds = %4182
  br i1 %4183, label %4185, label %4197

4185:                                             ; preds = %4184
  %4186 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %4187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %4186, ptr noundef @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %4188 unwind label %4099

4188:                                             ; preds = %4185
  %4189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4187, ptr noundef @.str.32)
          to label %4190 unwind label %4099

4190:                                             ; preds = %4188
  %4191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %4189, ptr noundef nonnull align 8 dereferenceable(88) %391)
          to label %4192 unwind label %4099

4192:                                             ; preds = %4190
  %4193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %4191, ptr noundef @_ZSt3decRSt8ios_base)
          to label %4194 unwind label %4099

4194:                                             ; preds = %4192
  %4195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %4193, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %4196 unwind label %4099

4196:                                             ; preds = %4194
  br label %4197

4197:                                             ; preds = %4196, %4184
  br label %4198

4198:                                             ; preds = %4197
  br label %4199

4199:                                             ; preds = %4198
  call void @llvm.lifetime.start.p0(i64 8, ptr %417) #0
  %4200 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %4201 unwind label %4234

4201:                                             ; preds = %4199
  call void @llvm.memset.p0.i64(ptr align 16 %4200, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %4200)
          to label %4202 unwind label %4238

4202:                                             ; preds = %4201
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef %4200)
          to label %4203 unwind label %4234

4203:                                             ; preds = %4202
  %4204 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 11
  %4205 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4204, i32 0, i32 3
  %4206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %4205, ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %4207 unwind label %4242

4207:                                             ; preds = %4203
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #0
  call void @llvm.lifetime.start.p0(i64 120, ptr %418) #0
  %4208 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %421) #0
  %4209 = getelementptr inbounds %class.anon.601, ptr %421, i32 0, i32 0
  store ptr %391, ptr %4209, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %420, ptr noundef nonnull align 8 dereferenceable(8) %421) #0
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %419, ptr noundef %420)
          to label %4210 unwind label %4247

4210:                                             ; preds = %4207
  %4211 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 10
  %4212 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  %4213 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 11
  %4214 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4213, i32 0, i32 3
  %4215 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4214)
          to label %4216 unwind label %4251

4216:                                             ; preds = %4210
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %418, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(424) %4208, ptr noundef %419, ptr noundef nonnull align 8 dereferenceable(8) %4211, ptr noundef nonnull align 8 dereferenceable(24) %4212, ptr noundef nonnull align 8 dereferenceable(96) %4215)
          to label %4217 unwind label %4251

4217:                                             ; preds = %4216
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %420) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %422) #0
  %4218 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 11
  %4219 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4218, i32 0, i32 3
  %4220 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4219)
          to label %4221 unwind label %4256

4221:                                             ; preds = %4217
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %422, ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(96) %4220)
          to label %4222 unwind label %4256

4222:                                             ; preds = %4221
  call void @llvm.lifetime.start.p0(i64 24, ptr %423) #0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %423) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %424) #0
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %426, i32 noundef 0)
          to label %4223 unwind label %4260

4223:                                             ; preds = %4222
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %425, ptr noundef %426)
          to label %4224 unwind label %4264

4224:                                             ; preds = %4223
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %424, ptr noundef %425)
          to label %4225 unwind label %4268

4225:                                             ; preds = %4224
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %423, ptr noundef nonnull align 8 dereferenceable(48) %424)
          to label %4226 unwind label %4272

4226:                                             ; preds = %4225
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %424) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %424) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %427) #0
  store i64 1, ptr %427, align 8, !tbaa !144
  br label %4227

4227:                                             ; preds = %4285, %4226
  %4228 = load i64, ptr %427, align 8, !tbaa !144
  %4229 = load ptr, ptr %399, align 8, !tbaa !5
  %4230 = getelementptr inbounds %"class.HIR::Function", ptr %4229, i32 0, i32 8
  %4231 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4230) #0
  %4232 = icmp ult i64 %4228, %4231
  br i1 %4232, label %4279, label %4233

4233:                                             ; preds = %4227
  store i32 85, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %427) #0
  br label %4302

4234:                                             ; preds = %4202, %4199
  %4235 = landingpad { ptr, i32 }
          cleanup
  %4236 = extractvalue { ptr, i32 } %4235, 0
  store ptr %4236, ptr %11, align 8
  %4237 = extractvalue { ptr, i32 } %4235, 1
  store i32 %4237, ptr %12, align 4
  br label %4246

4238:                                             ; preds = %4201
  %4239 = landingpad { ptr, i32 }
          cleanup
  %4240 = extractvalue { ptr, i32 } %4239, 0
  store ptr %4240, ptr %11, align 8
  %4241 = extractvalue { ptr, i32 } %4239, 1
  store i32 %4241, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %4200, i64 noundef 96) #15
  br label %4246

4242:                                             ; preds = %4203
  %4243 = landingpad { ptr, i32 }
          cleanup
  %4244 = extractvalue { ptr, i32 } %4243, 0
  store ptr %4244, ptr %11, align 8
  %4245 = extractvalue { ptr, i32 } %4243, 1
  store i32 %4245, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %417) #0
  br label %4246

4246:                                             ; preds = %4242, %4238, %4234
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #0
  br label %4368

4247:                                             ; preds = %4207
  %4248 = landingpad { ptr, i32 }
          cleanup
  %4249 = extractvalue { ptr, i32 } %4248, 0
  store ptr %4249, ptr %11, align 8
  %4250 = extractvalue { ptr, i32 } %4248, 1
  store i32 %4250, ptr %12, align 4
  br label %4255

4251:                                             ; preds = %4216, %4210
  %4252 = landingpad { ptr, i32 }
          cleanup
  %4253 = extractvalue { ptr, i32 } %4252, 0
  store ptr %4253, ptr %11, align 8
  %4254 = extractvalue { ptr, i32 } %4252, 1
  store i32 %4254, ptr %12, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #0
  br label %4255

4255:                                             ; preds = %4251, %4247
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %420) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #0
  br label %4367

4256:                                             ; preds = %4221, %4217
  %4257 = landingpad { ptr, i32 }
          cleanup
  %4258 = extractvalue { ptr, i32 } %4257, 0
  store ptr %4258, ptr %11, align 8
  %4259 = extractvalue { ptr, i32 } %4257, 1
  store i32 %4259, ptr %12, align 4
  br label %4366

4260:                                             ; preds = %4222
  %4261 = landingpad { ptr, i32 }
          cleanup
  %4262 = extractvalue { ptr, i32 } %4261, 0
  store ptr %4262, ptr %11, align 8
  %4263 = extractvalue { ptr, i32 } %4261, 1
  store i32 %4263, ptr %12, align 4
  br label %4278

4264:                                             ; preds = %4223
  %4265 = landingpad { ptr, i32 }
          cleanup
  %4266 = extractvalue { ptr, i32 } %4265, 0
  store ptr %4266, ptr %11, align 8
  %4267 = extractvalue { ptr, i32 } %4265, 1
  store i32 %4267, ptr %12, align 4
  br label %4277

4268:                                             ; preds = %4224
  %4269 = landingpad { ptr, i32 }
          cleanup
  %4270 = extractvalue { ptr, i32 } %4269, 0
  store ptr %4270, ptr %11, align 8
  %4271 = extractvalue { ptr, i32 } %4269, 1
  store i32 %4271, ptr %12, align 4
  br label %4276

4272:                                             ; preds = %4225
  %4273 = landingpad { ptr, i32 }
          cleanup
  %4274 = extractvalue { ptr, i32 } %4273, 0
  store ptr %4274, ptr %11, align 8
  %4275 = extractvalue { ptr, i32 } %4273, 1
  store i32 %4275, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %424) #0
  br label %4276

4276:                                             ; preds = %4272, %4268
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #0
  br label %4277

4277:                                             ; preds = %4276, %4264
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #0
  br label %4278

4278:                                             ; preds = %4277, %4260
  call void @llvm.lifetime.end.p0(i64 48, ptr %424) #0
  br label %4365

4279:                                             ; preds = %4227
  call void @llvm.lifetime.start.p0(i64 48, ptr %428) #0
  %4280 = load i64, ptr %427, align 8, !tbaa !144
  %4281 = trunc i64 %4280 to i32
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %429, i32 noundef %4281)
          to label %4282 unwind label %4288

4282:                                             ; preds = %4279
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %428, ptr noundef %429)
          to label %4283 unwind label %4292

4283:                                             ; preds = %4282
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %423, ptr noundef nonnull align 8 dereferenceable(48) %428)
          to label %4284 unwind label %4296

4284:                                             ; preds = %4283
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %428) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %429) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %428) #0
  br label %4285

4285:                                             ; preds = %4284
  %4286 = load i64, ptr %427, align 8, !tbaa !144
  %4287 = add i64 %4286, 1
  store i64 %4287, ptr %427, align 8, !tbaa !144
  br label %4227, !llvm.loop !194

4288:                                             ; preds = %4279
  %4289 = landingpad { ptr, i32 }
          cleanup
  %4290 = extractvalue { ptr, i32 } %4289, 0
  store ptr %4290, ptr %11, align 8
  %4291 = extractvalue { ptr, i32 } %4289, 1
  store i32 %4291, ptr %12, align 4
  br label %4301

4292:                                             ; preds = %4282
  %4293 = landingpad { ptr, i32 }
          cleanup
  %4294 = extractvalue { ptr, i32 } %4293, 0
  store ptr %4294, ptr %11, align 8
  %4295 = extractvalue { ptr, i32 } %4293, 1
  store i32 %4295, ptr %12, align 4
  br label %4300

4296:                                             ; preds = %4283
  %4297 = landingpad { ptr, i32 }
          cleanup
  %4298 = extractvalue { ptr, i32 } %4297, 0
  store ptr %4298, ptr %11, align 8
  %4299 = extractvalue { ptr, i32 } %4297, 1
  store i32 %4299, ptr %12, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %428) #0
  br label %4300

4300:                                             ; preds = %4296, %4292
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %429) #0
  br label %4301

4301:                                             ; preds = %4300, %4288
  call void @llvm.lifetime.end.p0(i64 48, ptr %428) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %427) #0
  br label %4365

4302:                                             ; preds = %4233
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %430)
          to label %4303 unwind label %4331

4303:                                             ; preds = %4302
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %432, ptr noundef nonnull align 8 dereferenceable(88) %400) #0
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %431, ptr noundef %432)
          to label %4304 unwind label %4335

4304:                                             ; preds = %4303
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %433, ptr noundef nonnull align 8 dereferenceable(24) %423) #0
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %422, ptr noundef %430, ptr noundef %431, ptr noundef %433, i32 noundef 1, i32 noundef 2)
          to label %4305 unwind label %4339

4305:                                             ; preds = %4304
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %433) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %431) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %432) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %422)
          to label %4306 unwind label %4331

4306:                                             ; preds = %4305
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %434)
          to label %4307 unwind label %4331

4307:                                             ; preds = %4306
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %422, ptr noundef %434)
          to label %4308 unwind label %4344

4308:                                             ; preds = %4307
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %434) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %422)
          to label %4309 unwind label %4331

4309:                                             ; preds = %4308
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %436)
          to label %4310 unwind label %4331

4310:                                             ; preds = %4309
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %422, ptr noundef %436)
          to label %4311 unwind label %4348

4311:                                             ; preds = %4310
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %436) #0
  %4312 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %438) #0
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %438, ptr noundef nonnull align 8 dereferenceable(88) %391)
          to label %4313 unwind label %4352

4313:                                             ; preds = %4311
  %4314 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 11
  %4315 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4314, i32 0, i32 3
  %4316 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4315)
          to label %4317 unwind label %4352

4317:                                             ; preds = %4313
  %4318 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 8
  %4319 = getelementptr inbounds %"class.HIR::Function", ptr %406, i32 0, i32 10
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %4312, ptr noundef nonnull align 8 dereferenceable(56) %438, ptr noundef nonnull align 8 dereferenceable(96) %4316, ptr noundef nonnull align 8 dereferenceable(24) %4318, ptr noundef nonnull align 8 dereferenceable(8) %4319)
          to label %4320 unwind label %4352

4320:                                             ; preds = %4317
  call void @llvm.lifetime.end.p0(i64 56, ptr %438) #0
  %4321 = load ptr, ptr %4, align 8, !tbaa !5
  %4322 = getelementptr inbounds %class.TransList, ptr %4321, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %439) #0
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.537") align 8 %439, ptr noundef nonnull align 8 dereferenceable(352) %406)
          to label %4323 unwind label %4356

4323:                                             ; preds = %4320
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %4322, ptr noundef nonnull align 8 dereferenceable(8) %439)
          to label %4324 unwind label %4360

4324:                                             ; preds = %4323
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #0
  %4325 = load ptr, ptr %4, align 8, !tbaa !5
  %4326 = getelementptr inbounds %class.TransList, ptr %4325, i32 0, i32 12
  %4327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4326) #0
  %4328 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %4327) #0
  %4329 = load ptr, ptr %404, align 8, !tbaa !5
  %4330 = getelementptr inbounds %struct.TransList_Function, ptr %4329, i32 0, i32 1
  store ptr %4328, ptr %4330, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %423) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %423) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %422) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %422) #0
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %418) #0
  call void @llvm.lifetime.end.p0(i64 120, ptr %418) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %406) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %406) #0
  br label %4370

4331:                                             ; preds = %4309, %4308, %4306, %4305, %4302
  %4332 = landingpad { ptr, i32 }
          cleanup
  %4333 = extractvalue { ptr, i32 } %4332, 0
  store ptr %4333, ptr %11, align 8
  %4334 = extractvalue { ptr, i32 } %4332, 1
  store i32 %4334, ptr %12, align 4
  br label %4365

4335:                                             ; preds = %4303
  %4336 = landingpad { ptr, i32 }
          cleanup
  %4337 = extractvalue { ptr, i32 } %4336, 0
  store ptr %4337, ptr %11, align 8
  %4338 = extractvalue { ptr, i32 } %4336, 1
  store i32 %4338, ptr %12, align 4
  br label %4343

4339:                                             ; preds = %4304
  %4340 = landingpad { ptr, i32 }
          cleanup
  %4341 = extractvalue { ptr, i32 } %4340, 0
  store ptr %4341, ptr %11, align 8
  %4342 = extractvalue { ptr, i32 } %4340, 1
  store i32 %4342, ptr %12, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %433) #0
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %431) #0
  br label %4343

4343:                                             ; preds = %4339, %4335
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %432) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #0
  br label %4365

4344:                                             ; preds = %4307
  %4345 = landingpad { ptr, i32 }
          cleanup
  %4346 = extractvalue { ptr, i32 } %4345, 0
  store ptr %4346, ptr %11, align 8
  %4347 = extractvalue { ptr, i32 } %4345, 1
  store i32 %4347, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %434) #0
  br label %4365

4348:                                             ; preds = %4310
  %4349 = landingpad { ptr, i32 }
          cleanup
  %4350 = extractvalue { ptr, i32 } %4349, 0
  store ptr %4350, ptr %11, align 8
  %4351 = extractvalue { ptr, i32 } %4349, 1
  store i32 %4351, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %436) #0
  br label %4365

4352:                                             ; preds = %4317, %4313, %4311
  %4353 = landingpad { ptr, i32 }
          cleanup
  %4354 = extractvalue { ptr, i32 } %4353, 0
  store ptr %4354, ptr %11, align 8
  %4355 = extractvalue { ptr, i32 } %4353, 1
  store i32 %4355, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %438) #0
  br label %4365

4356:                                             ; preds = %4320
  %4357 = landingpad { ptr, i32 }
          cleanup
  %4358 = extractvalue { ptr, i32 } %4357, 0
  store ptr %4358, ptr %11, align 8
  %4359 = extractvalue { ptr, i32 } %4357, 1
  store i32 %4359, ptr %12, align 4
  br label %4364

4360:                                             ; preds = %4323
  %4361 = landingpad { ptr, i32 }
          cleanup
  %4362 = extractvalue { ptr, i32 } %4361, 0
  store ptr %4362, ptr %11, align 8
  %4363 = extractvalue { ptr, i32 } %4361, 1
  store i32 %4363, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %439) #0
  br label %4364

4364:                                             ; preds = %4360, %4356
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #0
  br label %4365

4365:                                             ; preds = %4364, %4352, %4348, %4344, %4343, %4331, %4301, %4278
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %423) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %423) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %422) #0
  br label %4366

4366:                                             ; preds = %4365, %4256
  call void @llvm.lifetime.end.p0(i64 48, ptr %422) #0
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %418) #0
  br label %4367

4367:                                             ; preds = %4366, %4255
  call void @llvm.lifetime.end.p0(i64 120, ptr %418) #0
  br label %4368

4368:                                             ; preds = %4367, %4246, %4177, %4159, %4126, %4099, %4098
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %406) #0
  br label %4369

4369:                                             ; preds = %4368, %4086
  call void @llvm.lifetime.end.p0(i64 352, ptr %406) #0
  br label %4371

4370:                                             ; preds = %4324, %3984
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %400) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %400) #0
  br label %4374

4371:                                             ; preds = %4369, %4082, %4078
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #0
  br label %4372

4372:                                             ; preds = %4371, %4077
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %400) #0
  br label %4373

4373:                                             ; preds = %4372, %4055
  call void @llvm.lifetime.end.p0(i64 88, ptr %400) #0
  br label %4375

4374:                                             ; preds = %4370, %3959
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #0
  br label %4376

4375:                                             ; preds = %4373, %4051
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #0
  br label %4387

4376:                                             ; preds = %4374, %3955
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %440, ptr noundef nonnull align 8 dereferenceable(88) %391) #0
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %373, ptr noundef %440)
          to label %4377 unwind label %4383

4377:                                             ; preds = %4376
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %440) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %396) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %396) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %391) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %391) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #0
  store i32 0, ptr %95, align 4
  br label %4378

4378:                                             ; preds = %4377, %3877
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #0
  %4379 = load i32, ptr %95, align 4
  switch i32 %4379, label %6584 [
    i32 0, label %4380
    i32 74, label %4381
  ]

4380:                                             ; preds = %4378
  br label %4381

4381:                                             ; preds = %4380, %4378
  %4382 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %387) #0
  br label %3865

4383:                                             ; preds = %4376
  %4384 = landingpad { ptr, i32 }
          cleanup
  %4385 = extractvalue { ptr, i32 } %4384, 0
  store ptr %4385, ptr %11, align 8
  %4386 = extractvalue { ptr, i32 } %4384, 1
  store i32 %4386, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %440) #0
  br label %4387

4387:                                             ; preds = %4383, %4375, %4047
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #0
  br label %4388

4388:                                             ; preds = %4387, %4043
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %396) #0
  br label %4389

4389:                                             ; preds = %4388, %4039
  call void @llvm.lifetime.end.p0(i64 128, ptr %396) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %391) #0
  br label %4390

4390:                                             ; preds = %4389, %4038, %4016
  call void @llvm.lifetime.end.p0(i64 88, ptr %391) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %390) #0
  br label %4391

4391:                                             ; preds = %4390, %4012
  call void @llvm.lifetime.end.p0(i64 32, ptr %390) #0
  br label %4392

4392:                                             ; preds = %4391, %3911
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %388) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %385) #0
  br label %4573

4393:                                             ; preds = %3867
  br label %4394

4394:                                             ; preds = %4393
  %4395 = load i32, ptr %385, align 4, !tbaa !113
  %4396 = add i32 %4395, 1
  store i32 %4396, ptr %385, align 4, !tbaa !113
  br label %3845, !llvm.loop !195

4397:                                             ; preds = %3852
  call void @llvm.lifetime.start.p0(i64 8, ptr %441) #0
  store i64 0, ptr %441, align 8, !tbaa !144
  br label %4398

4398:                                             ; preds = %4516, %4397
  %4399 = load i64, ptr %441, align 8, !tbaa !144
  %4400 = load ptr, ptr %331, align 8, !tbaa !5
  %4401 = getelementptr inbounds %"class.HIR::Trait", ptr %4400, i32 0, i32 9
  %4402 = call noundef i64 @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4401) #0
  %4403 = icmp ult i64 %4399, %4402
  br i1 %4403, label %4405, label %4404

4404:                                             ; preds = %4398
  store i32 88, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %441) #0
  br label %4520

4405:                                             ; preds = %4398
  call void @llvm.lifetime.start.p0(i64 8, ptr %442) #0
  %4406 = load ptr, ptr %331, align 8, !tbaa !5
  %4407 = getelementptr inbounds %"class.HIR::Trait", ptr %4406, i32 0, i32 9
  %4408 = load i64, ptr %441, align 8, !tbaa !144
  %4409 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4407, i64 noundef %4408) #0
  store ptr %4409, ptr %442, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %443) #0
  %4410 = load ptr, ptr %363, align 8, !tbaa !5
  %4411 = getelementptr inbounds %struct.TypeRepr, ptr %4410, i32 0, i32 3
  %4412 = load ptr, ptr %331, align 8, !tbaa !5
  %4413 = getelementptr inbounds %"class.HIR::Trait", ptr %4412, i32 0, i32 8
  %4414 = load i32, ptr %4413, align 8, !tbaa !196
  %4415 = zext i32 %4414 to i64
  %4416 = load i64, ptr %441, align 8, !tbaa !144
  %4417 = add i64 %4415, %4416
  %4418 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4411, i64 noundef %4417)
          to label %4419 unwind label %4431

4419:                                             ; preds = %4405
  store ptr %4418, ptr %443, align 8, !tbaa !5
  br label %4420

4420:                                             ; preds = %4419
  %4421 = load ptr, ptr %443, align 8, !tbaa !5
  %4422 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %4421, i32 0, i32 0
  %4423 = load i64, ptr %4422, align 8, !tbaa !213
  %4424 = load i64, ptr %372, align 8, !tbaa !144
  %4425 = icmp eq i64 %4423, %4424
  br i1 %4425, label %4448, label %4426

4426:                                             ; preds = %4420
  call void @llvm.lifetime.start.p0(i64 8, ptr %444) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %444, ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %4427 unwind label %4435

4427:                                             ; preds = %4426
  call void @llvm.lifetime.start.p0(i64 1, ptr %446) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %445, ptr noundef nonnull align 1 dereferenceable(1) %446) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %444, ptr noundef %445)
          to label %4428 unwind label %4439

4428:                                             ; preds = %4427
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %445) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %446) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %444) #0
  %4429 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4429, ptr noundef @.str.10)
          to label %4430 unwind label %4444

4430:                                             ; preds = %4428
  invoke void @__cxa_throw(ptr %4429, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %4431

4431:                                             ; preds = %4454, %4450, %4430, %4405
  %4432 = landingpad { ptr, i32 }
          cleanup
  %4433 = extractvalue { ptr, i32 } %4432, 0
  store ptr %4433, ptr %11, align 8
  %4434 = extractvalue { ptr, i32 } %4432, 1
  store i32 %4434, ptr %12, align 4
  br label %4519

4435:                                             ; preds = %4426
  %4436 = landingpad { ptr, i32 }
          cleanup
  %4437 = extractvalue { ptr, i32 } %4436, 0
  store ptr %4437, ptr %11, align 8
  %4438 = extractvalue { ptr, i32 } %4436, 1
  store i32 %4438, ptr %12, align 4
  br label %4443

4439:                                             ; preds = %4427
  %4440 = landingpad { ptr, i32 }
          cleanup
  %4441 = extractvalue { ptr, i32 } %4440, 0
  store ptr %4441, ptr %11, align 8
  %4442 = extractvalue { ptr, i32 } %4440, 1
  store i32 %4442, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %445) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %446) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #0
  br label %4443

4443:                                             ; preds = %4439, %4435
  call void @llvm.lifetime.end.p0(i64 8, ptr %444) #0
  br label %4519

4444:                                             ; preds = %4428
  %4445 = landingpad { ptr, i32 }
          cleanup
  %4446 = extractvalue { ptr, i32 } %4445, 0
  store ptr %4446, ptr %11, align 8
  %4447 = extractvalue { ptr, i32 } %4445, 1
  store i32 %4447, ptr %12, align 4
  call void @__cxa_free_exception(ptr %4429) #0
  br label %4519

4448:                                             ; preds = %4420
  br label %4449

4449:                                             ; preds = %4448
  br label %4450

4450:                                             ; preds = %4449
  %4451 = load ptr, ptr %443, align 8, !tbaa !5
  %4452 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %4451, i32 0, i32 1
  %4453 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4452)
          to label %4454 unwind label %4431

4454:                                             ; preds = %4450
  %4455 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %4453)
          to label %4456 unwind label %4431

4456:                                             ; preds = %4454
  br i1 %4455, label %4515, label %4457

4457:                                             ; preds = %4456
  call void @llvm.lifetime.start.p0(i64 32, ptr %447) #0
  call void @llvm.lifetime.start.p0(i64 128, ptr %448) #0
  %4458 = load ptr, ptr %328, align 8, !tbaa !5
  %4459 = getelementptr inbounds %"class.HIR::GenericPath", ptr %4458, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %448, ptr noundef null, ptr noundef %4459, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %4460 unwind label %4477

4460:                                             ; preds = %4457
  %4461 = load ptr, ptr %442, align 8, !tbaa !5
  %4462 = getelementptr inbounds %"class.HIR::TraitPath", ptr %4461, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %447, ptr noundef nonnull align 8 dereferenceable(96) %448, ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull align 8 dereferenceable(32) %4462, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %4463 unwind label %4481

4463:                                             ; preds = %4460
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %448) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %448) #0
  call void @llvm.lifetime.start.p0(i64 88, ptr %449) #0
  %4464 = load ptr, ptr %329, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %450, ptr noundef nonnull align 8 dereferenceable(8) %4464)
          to label %4465 unwind label %4486

4465:                                             ; preds = %4463
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %451, ptr noundef nonnull align 8 dereferenceable(32) %447)
          to label %4466 unwind label %4490

4466:                                             ; preds = %4465
  %4467 = load ptr, ptr %326, align 8, !tbaa !5
  %4468 = getelementptr inbounds %"struct.std::pair.548", ptr %4467, i32 0, i32 0
  %4469 = getelementptr inbounds %"class.HIR::Path", ptr %4468, i32 0, i32 0
  %4470 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %4469)
          to label %4471 unwind label %4494

4471:                                             ; preds = %4466
  %4472 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %4470, i32 0, i32 2
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef nonnull align 8 dereferenceable(8) %4472)
          to label %4473 unwind label %4494

4473:                                             ; preds = %4471
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %453)
          to label %4474 unwind label %4498

4474:                                             ; preds = %4473
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %449, ptr noundef %450, ptr noundef %451, ptr noundef %452, ptr noundef %453)
          to label %4475 unwind label %4502

4475:                                             ; preds = %4474
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %453) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #0
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %454, ptr noundef nonnull align 8 dereferenceable(88) %449) #0
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %373, ptr noundef %454)
          to label %4476 unwind label %4509

4476:                                             ; preds = %4475
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %454) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %449) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %449) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %447) #0
  br label %4515

4477:                                             ; preds = %4457
  %4478 = landingpad { ptr, i32 }
          cleanup
  %4479 = extractvalue { ptr, i32 } %4478, 0
  store ptr %4479, ptr %11, align 8
  %4480 = extractvalue { ptr, i32 } %4478, 1
  store i32 %4480, ptr %12, align 4
  br label %4485

4481:                                             ; preds = %4460
  %4482 = landingpad { ptr, i32 }
          cleanup
  %4483 = extractvalue { ptr, i32 } %4482, 0
  store ptr %4483, ptr %11, align 8
  %4484 = extractvalue { ptr, i32 } %4482, 1
  store i32 %4484, ptr %12, align 4
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %448) #0
  br label %4485

4485:                                             ; preds = %4481, %4477
  call void @llvm.lifetime.end.p0(i64 128, ptr %448) #0
  br label %4514

4486:                                             ; preds = %4463
  %4487 = landingpad { ptr, i32 }
          cleanup
  %4488 = extractvalue { ptr, i32 } %4487, 0
  store ptr %4488, ptr %11, align 8
  %4489 = extractvalue { ptr, i32 } %4487, 1
  store i32 %4489, ptr %12, align 4
  br label %4513

4490:                                             ; preds = %4465
  %4491 = landingpad { ptr, i32 }
          cleanup
  %4492 = extractvalue { ptr, i32 } %4491, 0
  store ptr %4492, ptr %11, align 8
  %4493 = extractvalue { ptr, i32 } %4491, 1
  store i32 %4493, ptr %12, align 4
  br label %4508

4494:                                             ; preds = %4471, %4466
  %4495 = landingpad { ptr, i32 }
          cleanup
  %4496 = extractvalue { ptr, i32 } %4495, 0
  store ptr %4496, ptr %11, align 8
  %4497 = extractvalue { ptr, i32 } %4495, 1
  store i32 %4497, ptr %12, align 4
  br label %4507

4498:                                             ; preds = %4473
  %4499 = landingpad { ptr, i32 }
          cleanup
  %4500 = extractvalue { ptr, i32 } %4499, 0
  store ptr %4500, ptr %11, align 8
  %4501 = extractvalue { ptr, i32 } %4499, 1
  store i32 %4501, ptr %12, align 4
  br label %4506

4502:                                             ; preds = %4474
  %4503 = landingpad { ptr, i32 }
          cleanup
  %4504 = extractvalue { ptr, i32 } %4503, 0
  store ptr %4504, ptr %11, align 8
  %4505 = extractvalue { ptr, i32 } %4503, 1
  store i32 %4505, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %453) #0
  br label %4506

4506:                                             ; preds = %4502, %4498
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %452) #0
  br label %4507

4507:                                             ; preds = %4506, %4494
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #0
  br label %4508

4508:                                             ; preds = %4507, %4490
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %450) #0
  br label %4513

4509:                                             ; preds = %4475
  %4510 = landingpad { ptr, i32 }
          cleanup
  %4511 = extractvalue { ptr, i32 } %4510, 0
  store ptr %4511, ptr %11, align 8
  %4512 = extractvalue { ptr, i32 } %4510, 1
  store i32 %4512, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %454) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %449) #0
  br label %4513

4513:                                             ; preds = %4509, %4508, %4486
  call void @llvm.lifetime.end.p0(i64 88, ptr %449) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #0
  br label %4514

4514:                                             ; preds = %4513, %4485
  call void @llvm.lifetime.end.p0(i64 32, ptr %447) #0
  br label %4519

4515:                                             ; preds = %4476, %4456
  call void @llvm.lifetime.end.p0(i64 8, ptr %443) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %442) #0
  br label %4516

4516:                                             ; preds = %4515
  %4517 = load i64, ptr %441, align 8, !tbaa !144
  %4518 = add i64 %4517, 1
  store i64 %4518, ptr %441, align 8, !tbaa !144
  br label %4398, !llvm.loop !215

4519:                                             ; preds = %4514, %4444, %4443, %4431
  call void @llvm.lifetime.end.p0(i64 8, ptr %443) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %442) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %441) #0
  br label %4573

4520:                                             ; preds = %4404
  %4521 = load i64, ptr %372, align 8, !tbaa !144
  %4522 = load ptr, ptr %370, align 8, !tbaa !5
  %4523 = getelementptr inbounds %struct.EncodedLiteral, ptr %4522, i32 0, i32 0
  %4524 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4523) #0
  %4525 = icmp eq i64 %4521, %4524
  br i1 %4525, label %4526, label %4527

4526:                                             ; preds = %4520
  br label %4529

4527:                                             ; preds = %4520
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.9, i32 noundef 902, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

4528:                                             ; No predecessors!
  br label %4529

4529:                                             ; preds = %4528, %4526
  %4530 = getelementptr inbounds %"class.HIR::Static", ptr %366, i32 0, i32 6
  store i8 1, ptr %4530, align 8, !tbaa !168
  %4531 = load ptr, ptr %4, align 8, !tbaa !5
  %4532 = getelementptr inbounds %class.TransList, ptr %4531, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %455) #0
  invoke void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.560") align 8 %455, ptr noundef nonnull align 8 dereferenceable(360) %366)
          to label %4533 unwind label %4555

4533:                                             ; preds = %4529
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %4532, ptr noundef nonnull align 8 dereferenceable(8) %455)
          to label %4534 unwind label %4559

4534:                                             ; preds = %4533
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %455) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %455) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %456) #0
  %4535 = load ptr, ptr %4, align 8, !tbaa !5
  %4536 = load ptr, ptr %326, align 8, !tbaa !5
  %4537 = getelementptr inbounds %"struct.std::pair.548", ptr %4536, i32 0, i32 0
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %457, ptr noundef nonnull align 8 dereferenceable(88) %4537)
          to label %4538 unwind label %4564

4538:                                             ; preds = %4534
  %4539 = invoke noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %4535, ptr noundef %457)
          to label %4540 unwind label %4568

4540:                                             ; preds = %4538
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %457) #0
  store ptr %4539, ptr %456, align 8, !tbaa !5
  %4541 = load ptr, ptr %4, align 8, !tbaa !5
  %4542 = getelementptr inbounds %class.TransList, ptr %4541, i32 0, i32 11
  %4543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4542) #0
  %4544 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %4543) #0
  %4545 = load ptr, ptr %456, align 8, !tbaa !5
  %4546 = getelementptr inbounds %struct.TransList_Static, ptr %4545, i32 0, i32 0
  store ptr %4544, ptr %4546, align 8, !tbaa !184
  call void @llvm.lifetime.end.p0(i64 8, ptr %456) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %373) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %372) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %371) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #0
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %366) #0
  call void @llvm.lifetime.end.p0(i64 360, ptr %366) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %365) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %365) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %364) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %364) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %337) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %337) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #0
  store i32 0, ptr %95, align 4
  br label %4547

4547:                                             ; preds = %4540, %3417
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #0
  %4548 = load i32, ptr %95, align 4
  switch i32 %4548, label %4550 [
    i32 0, label %4549
  ]

4549:                                             ; preds = %4547
  store i32 0, ptr %95, align 4
  br label %4550

4550:                                             ; preds = %4549, %4547
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #0
  %4551 = load i32, ptr %95, align 4
  switch i32 %4551, label %6584 [
    i32 0, label %4552
    i32 61, label %4553
  ]

4552:                                             ; preds = %4550
  br label %4553

4553:                                             ; preds = %4552, %4550
  %4554 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %324) #0
  br label %3394

4555:                                             ; preds = %4529
  %4556 = landingpad { ptr, i32 }
          cleanup
  %4557 = extractvalue { ptr, i32 } %4556, 0
  store ptr %4557, ptr %11, align 8
  %4558 = extractvalue { ptr, i32 } %4556, 1
  store i32 %4558, ptr %12, align 4
  br label %4563

4559:                                             ; preds = %4533
  %4560 = landingpad { ptr, i32 }
          cleanup
  %4561 = extractvalue { ptr, i32 } %4560, 0
  store ptr %4561, ptr %11, align 8
  %4562 = extractvalue { ptr, i32 } %4560, 1
  store i32 %4562, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %455) #0
  br label %4563

4563:                                             ; preds = %4559, %4555
  call void @llvm.lifetime.end.p0(i64 8, ptr %455) #0
  br label %4573

4564:                                             ; preds = %4534
  %4565 = landingpad { ptr, i32 }
          cleanup
  %4566 = extractvalue { ptr, i32 } %4565, 0
  store ptr %4566, ptr %11, align 8
  %4567 = extractvalue { ptr, i32 } %4565, 1
  store i32 %4567, ptr %12, align 4
  br label %4572

4568:                                             ; preds = %4538
  %4569 = landingpad { ptr, i32 }
          cleanup
  %4570 = extractvalue { ptr, i32 } %4569, 0
  store ptr %4570, ptr %11, align 8
  %4571 = extractvalue { ptr, i32 } %4569, 1
  store i32 %4571, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %457) #0
  br label %4572

4572:                                             ; preds = %4568, %4564
  call void @llvm.lifetime.end.p0(i64 8, ptr %456) #0
  br label %4573

4573:                                             ; preds = %4572, %4563, %4519, %4392, %3853, %3804, %3782, %3781
  call void @llvm.lifetime.end.p0(i64 24, ptr %373) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %372) #0
  br label %4574

4574:                                             ; preds = %4573, %3769
  call void @llvm.lifetime.end.p0(i64 4, ptr %371) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #0
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %366) #0
  br label %4575

4575:                                             ; preds = %4574, %3768
  call void @llvm.lifetime.end.p0(i64 360, ptr %366) #0
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %365) #0
  call void @llvm.lifetime.end.p0(i64 72, ptr %365) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %364) #0
  br label %4576

4576:                                             ; preds = %4575, %3751
  call void @llvm.lifetime.end.p0(i64 128, ptr %364) #0
  br label %4577

4577:                                             ; preds = %4576, %3694
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #0
  br label %4578

4578:                                             ; preds = %4577, %3685, %3668
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #0
  br label %4579

4579:                                             ; preds = %4578, %3667, %3640
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #0
  br label %4580

4580:                                             ; preds = %4579, %3636
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #0
  br label %4581

4581:                                             ; preds = %4580, %3599
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %337) #0
  br label %4582

4582:                                             ; preds = %4581, %3533
  call void @llvm.lifetime.end.p0(i64 24, ptr %337) #0
  br label %4583

4583:                                             ; preds = %4582, %3510, %3506, %3505, %3496
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #0
  br label %4584

4584:                                             ; preds = %4583, %3484
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #0
  br label %4585

4585:                                             ; preds = %4584, %3438, %3426
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #0
  br label %4586

4586:                                             ; preds = %4585, %3422
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %327) #0
  br label %4587

4587:                                             ; preds = %4586, %3418
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #0
  br label %4607

4588:                                             ; preds = %3396
  %4589 = load ptr, ptr %4, align 8, !tbaa !5
  %4590 = getelementptr inbounds %class.TransList, ptr %4589, i32 0, i32 4
  call void @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %4590) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %183) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %458) #0
  %4591 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4592 unwind label %4609

4592:                                             ; preds = %4588
  %4593 = zext i1 %4591 to i64
  %4594 = select i1 %4591, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %460) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %459, ptr noundef nonnull align 1 dereferenceable(1) %460) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %458, ptr noundef %4594, ptr noundef %459)
          to label %4595 unwind label %4613

4595:                                             ; preds = %4592
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %460) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %461) #0
  %4596 = load ptr, ptr %4, align 8, !tbaa !5
  %4597 = getelementptr inbounds %class.TransList, ptr %4596, i32 0, i32 13
  store ptr %4597, ptr %461, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %462) #0
  %4598 = load ptr, ptr %461, align 8, !tbaa !5
  %4599 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4598) #0
  %4600 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %462, i32 0, i32 0
  store ptr %4599, ptr %4600, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %463) #0
  %4601 = load ptr, ptr %461, align 8, !tbaa !5
  %4602 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4601) #0
  %4603 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.587", ptr %463, i32 0, i32 0
  store ptr %4602, ptr %4603, align 8
  br label %4604

4604:                                             ; preds = %4674, %4595
  %4605 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef nonnull align 8 dereferenceable(8) %463) #0
  br i1 %4605, label %4617, label %4606

4606:                                             ; preds = %4604
  store i32 93, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %463) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %462) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %461) #0
  br label %4687

4607:                                             ; preds = %4587, %3384, %3060, %2220
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #0
  br label %4608

4608:                                             ; preds = %4607, %2216, %2212
  call void @llvm.lifetime.end.p0(i64 40, ptr %183) #0
  br label %6578

4609:                                             ; preds = %4588
  %4610 = landingpad { ptr, i32 }
          cleanup
  %4611 = extractvalue { ptr, i32 } %4610, 0
  store ptr %4611, ptr %11, align 8
  %4612 = extractvalue { ptr, i32 } %4610, 1
  store i32 %4612, ptr %12, align 4
  br label %6577

4613:                                             ; preds = %4592
  %4614 = landingpad { ptr, i32 }
          cleanup
  %4615 = extractvalue { ptr, i32 } %4614, 0
  store ptr %4615, ptr %11, align 8
  %4616 = extractvalue { ptr, i32 } %4614, 1
  store i32 %4616, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %459) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %460) #0
  br label %6577

4617:                                             ; preds = %4604
  call void @llvm.lifetime.start.p0(i64 8, ptr %464) #0
  %4618 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %462) #0
  store ptr %4618, ptr %464, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %465) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465)
          to label %4619 unwind label %4625

4619:                                             ; preds = %4617
  %4620 = load ptr, ptr %464, align 8, !tbaa !5
  %4621 = getelementptr inbounds %"struct.std::pair.589", ptr %4620, i32 0, i32 1
  %4622 = load i8, ptr %4621, align 8, !tbaa !216, !range !151, !noundef !152
  %4623 = trunc i8 %4622 to i1
  br i1 %4623, label %4624, label %4629

4624:                                             ; preds = %4619
  store i32 94, ptr %95, align 4
  br label %4668

4625:                                             ; preds = %4617
  %4626 = landingpad { ptr, i32 }
          cleanup
  %4627 = extractvalue { ptr, i32 } %4626, 0
  store ptr %4627, ptr %11, align 8
  %4628 = extractvalue { ptr, i32 } %4626, 1
  store i32 %4628, ptr %12, align 4
  br label %4686

4629:                                             ; preds = %4619
  %4630 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %4631 = load ptr, ptr %464, align 8, !tbaa !5
  %4632 = getelementptr inbounds %"struct.std::pair.589", ptr %4631, i32 0, i32 0
  %4633 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %4630, ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull align 8 dereferenceable(8) %4632)
          to label %4634 unwind label %4636

4634:                                             ; preds = %4629
  br i1 %4633, label %4640, label %4635

4635:                                             ; preds = %4634
  store i32 94, ptr %95, align 4
  br label %4668

4636:                                             ; preds = %4652, %4648, %4644, %4640, %4629
  %4637 = landingpad { ptr, i32 }
          cleanup
  %4638 = extractvalue { ptr, i32 } %4637, 0
  store ptr %4638, ptr %11, align 8
  %4639 = extractvalue { ptr, i32 } %4637, 1
  store i32 %4639, ptr %12, align 4
  br label %4685

4640:                                             ; preds = %4634
  %4641 = load ptr, ptr %464, align 8, !tbaa !5
  %4642 = getelementptr inbounds %"struct.std::pair.589", ptr %4641, i32 0, i32 0
  %4643 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4642)
          to label %4644 unwind label %4636

4644:                                             ; preds = %4640
  %4645 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %4643)
          to label %4646 unwind label %4636

4646:                                             ; preds = %4644
  br i1 %4645, label %4647, label %4648

4647:                                             ; preds = %4646
  store i32 94, ptr %95, align 4
  br label %4668

4648:                                             ; preds = %4646
  %4649 = load ptr, ptr %464, align 8, !tbaa !5
  %4650 = getelementptr inbounds %"struct.std::pair.589", ptr %4649, i32 0, i32 0
  %4651 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4650)
          to label %4652 unwind label %4636

4652:                                             ; preds = %4648
  %4653 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %4651)
          to label %4654 unwind label %4636

4654:                                             ; preds = %4652
  br i1 %4653, label %4655, label %4656

4655:                                             ; preds = %4654
  store i32 94, ptr %95, align 4
  br label %4668

4656:                                             ; preds = %4654
  %4657 = load ptr, ptr %4, align 8, !tbaa !5
  %4658 = getelementptr inbounds %class.TransList, ptr %4657, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %466) #0
  %4659 = load ptr, ptr %464, align 8, !tbaa !5
  %4660 = getelementptr inbounds %"struct.std::pair.589", ptr %4659, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %466, ptr noundef nonnull align 8 dereferenceable(8) %4660)
          to label %4661 unwind label %4676

4661:                                             ; preds = %4656
  %4662 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %4658, ptr noundef nonnull align 8 dereferenceable(8) %466)
          to label %4663 unwind label %4680

4663:                                             ; preds = %4661
  %4664 = getelementptr inbounds { ptr, i8 }, ptr %467, i32 0, i32 0
  %4665 = extractvalue { ptr, i8 } %4662, 0
  store ptr %4665, ptr %4664, align 8
  %4666 = getelementptr inbounds { ptr, i8 }, ptr %467, i32 0, i32 1
  %4667 = extractvalue { ptr, i8 } %4662, 1
  store i8 %4667, ptr %4666, align 8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %466) #0
  store i32 0, ptr %95, align 4
  br label %4668

4668:                                             ; preds = %4663, %4655, %4647, %4635, %4624
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #0
  %4669 = load i32, ptr %95, align 4
  switch i32 %4669, label %4671 [
    i32 0, label %4670
  ]

4670:                                             ; preds = %4668
  store i32 0, ptr %95, align 4
  br label %4671

4671:                                             ; preds = %4670, %4668
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #0
  %4672 = load i32, ptr %95, align 4
  switch i32 %4672, label %6584 [
    i32 0, label %4673
    i32 94, label %4674
  ]

4673:                                             ; preds = %4671
  br label %4674

4674:                                             ; preds = %4673, %4671
  %4675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %462) #0
  br label %4604

4676:                                             ; preds = %4656
  %4677 = landingpad { ptr, i32 }
          cleanup
  %4678 = extractvalue { ptr, i32 } %4677, 0
  store ptr %4678, ptr %11, align 8
  %4679 = extractvalue { ptr, i32 } %4677, 1
  store i32 %4679, ptr %12, align 4
  br label %4684

4680:                                             ; preds = %4661
  %4681 = landingpad { ptr, i32 }
          cleanup
  %4682 = extractvalue { ptr, i32 } %4681, 0
  store ptr %4682, ptr %11, align 8
  %4683 = extractvalue { ptr, i32 } %4681, 1
  store i32 %4683, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %466) #0
  br label %4684

4684:                                             ; preds = %4680, %4676
  call void @llvm.lifetime.end.p0(i64 8, ptr %466) #0
  br label %4685

4685:                                             ; preds = %4684, %4636
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #0
  br label %4686

4686:                                             ; preds = %4685, %4625
  call void @llvm.lifetime.end.p0(i64 8, ptr %465) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %464) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %463) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %462) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %461) #0
  br label %6576

4687:                                             ; preds = %4606
  call void @llvm.lifetime.start.p0(i64 8, ptr %468) #0
  %4688 = load ptr, ptr %4, align 8, !tbaa !5
  %4689 = getelementptr inbounds %class.TransList, ptr %4688, i32 0, i32 6
  store ptr %4689, ptr %468, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %469) #0
  %4690 = load ptr, ptr %468, align 8, !tbaa !5
  %4691 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %4690) #0
  %4692 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %469, i32 0, i32 0
  store ptr %4691, ptr %4692, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %470) #0
  %4693 = load ptr, ptr %468, align 8, !tbaa !5
  %4694 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %4693) #0
  %4695 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %470, i32 0, i32 0
  store ptr %4694, ptr %4695, align 8
  br label %4696

4696:                                             ; preds = %6549, %4687
  %4697 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef nonnull align 8 dereferenceable(8) %470) #0
  br i1 %4697, label %4699, label %4698

4698:                                             ; preds = %4696
  store i32 95, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %468) #0
  br label %6575

4699:                                             ; preds = %4696
  call void @llvm.lifetime.start.p0(i64 8, ptr %471) #0
  %4700 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %469) #0
  store ptr %4700, ptr %471, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %472) #0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %4701 unwind label %4769

4701:                                             ; preds = %4699
  call void @llvm.lifetime.start.p0(i64 88, ptr %473) #0
  %4702 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %474, ptr noundef nonnull align 8 dereferenceable(8) %4702)
          to label %4703 unwind label %4773

4703:                                             ; preds = %4701
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
          to label %4704 unwind label %4777

4704:                                             ; preds = %4703
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %476)
          to label %4705 unwind label %4781

4705:                                             ; preds = %4704
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %473, ptr noundef %474, ptr noundef %475, ptr noundef %476)
          to label %4706 unwind label %4785

4706:                                             ; preds = %4705
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %476) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #0
  call void @llvm.lifetime.start.p0(i64 352, ptr %477) #0
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %477)
          to label %4707 unwind label %4791

4707:                                             ; preds = %4706
  call void @llvm.lifetime.start.p0(i64 8, ptr %478) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %478)
          to label %4708 unwind label %4795

4708:                                             ; preds = %4707
  %4709 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 10
  %4710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %4709, ptr noundef nonnull align 8 dereferenceable(8) %478)
          to label %4711 unwind label %4799

4711:                                             ; preds = %4708
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %478) #0
  %4712 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 224, ptr %479) #0
  call void @llvm.lifetime.start.p0(i64 216, ptr %480) #0
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %480)
          to label %4713 unwind label %4804

4713:                                             ; preds = %4711
  call void @llvm.lifetime.start.p0(i64 8, ptr %481) #0
  %4714 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %482, ptr noundef nonnull align 8 dereferenceable(8) %4714)
          to label %4715 unwind label %4808

4715:                                             ; preds = %4713
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %481, i32 noundef 2, ptr noundef %482)
          to label %4716 unwind label %4812

4716:                                             ; preds = %4715
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.390") align 8 %479, ptr noundef nonnull align 8 dereferenceable(212) %480, ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %4717 unwind label %4816

4717:                                             ; preds = %4716
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %4712, ptr noundef nonnull align 8 dereferenceable(224) %479)
          to label %4718 unwind label %4820

4718:                                             ; preds = %4717
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %479) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %481) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %480) #0
  call void @llvm.lifetime.end.p0(i64 216, ptr %480) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %479) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %483) #0
  %4719 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %4720 unwind label %4828

4720:                                             ; preds = %4718
  call void @llvm.memset.p0.i64(ptr align 16 %4719, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %4719)
          to label %4721 unwind label %4832

4721:                                             ; preds = %4720
  invoke void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef %4719)
          to label %4722 unwind label %4828

4722:                                             ; preds = %4721
  %4723 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 11
  %4724 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4723, i32 0, i32 3
  %4725 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %4724, ptr noundef nonnull align 8 dereferenceable(8) %483)
          to label %4726 unwind label %4836

4726:                                             ; preds = %4722
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %483) #0
  call void @llvm.lifetime.start.p0(i64 120, ptr %484) #0
  %4727 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %487) #0
  %4728 = getelementptr inbounds %class.anon.606, ptr %487, i32 0, i32 0
  store ptr %473, ptr %4728, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %486, ptr noundef nonnull align 8 dereferenceable(8) %487) #0
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %485, ptr noundef %486)
          to label %4729 unwind label %4841

4729:                                             ; preds = %4726
  %4730 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 10
  %4731 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 8
  %4732 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 11
  %4733 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4732, i32 0, i32 3
  %4734 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4733)
          to label %4735 unwind label %4845

4735:                                             ; preds = %4729
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %484, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(424) %4727, ptr noundef %485, ptr noundef nonnull align 8 dereferenceable(8) %4730, ptr noundef nonnull align 8 dereferenceable(24) %4731, ptr noundef nonnull align 8 dereferenceable(96) %4734)
          to label %4736 unwind label %4845

4736:                                             ; preds = %4735
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %485) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %486) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %487) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %488) #0
  %4737 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 11
  %4738 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4737, i32 0, i32 3
  %4739 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4738)
          to label %4740 unwind label %4850

4740:                                             ; preds = %4736
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef nonnull align 8 dereferenceable(576) %5, ptr noundef nonnull align 8 dereferenceable(96) %4739)
          to label %4741 unwind label %4850

4741:                                             ; preds = %4740
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %489)
          to label %4742 unwind label %4854

4742:                                             ; preds = %4741
  %4743 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %491, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %4743, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4743) #0
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %490, ptr noundef %491)
          to label %4744 unwind label %4858

4744:                                             ; preds = %4742
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %489, ptr noundef %490)
          to label %4745 unwind label %4862

4745:                                             ; preds = %4744
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %490) #0
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %491) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %489) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %492) #0
  %4746 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %4747 = load ptr, ptr %471, align 8, !tbaa !5
  %4748 = invoke noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %4746, ptr noundef nonnull align 8 dereferenceable(8) %4747)
          to label %4749 unwind label %4867

4749:                                             ; preds = %4745
  store ptr %4748, ptr %492, align 8, !tbaa !5
  %4750 = load ptr, ptr %492, align 8, !tbaa !5
  %4751 = icmp ne ptr %4750, null
  br i1 %4751, label %4752, label %4917

4752:                                             ; preds = %4749
  call void @llvm.lifetime.start.p0(i64 32, ptr %493) #0
  %4753 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %495, ptr noundef nonnull align 8 dereferenceable(32) %4753)
          to label %4754 unwind label %4871

4754:                                             ; preds = %4752
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %494, ptr noundef %495)
          to label %4755 unwind label %4875

4755:                                             ; preds = %4754
  invoke void @_ZN12_GLOBAL__N_19deref_boxEN3MIR6LValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %493, ptr noundef %494)
          to label %4756 unwind label %4879

4756:                                             ; preds = %4755
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %496) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %496)
          to label %4757 unwind label %4884

4757:                                             ; preds = %4756
  br label %4758

4758:                                             ; preds = %4757
  %4759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %484, ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef nonnull align 8 dereferenceable(32) %493, i32 noundef 0)
          to label %4760 unwind label %4888

4760:                                             ; preds = %4758
  %4761 = load ptr, ptr %492, align 8, !tbaa !5
  %4762 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4759, ptr noundef nonnull align 8 dereferenceable(8) %4761)
          to label %4763 unwind label %4888

4763:                                             ; preds = %4760
  br i1 %4762, label %4905, label %4764

4764:                                             ; preds = %4763
  call void @llvm.lifetime.start.p0(i64 8, ptr %497) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %4765 unwind label %4892

4765:                                             ; preds = %4764
  call void @llvm.lifetime.start.p0(i64 1, ptr %499) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %498, ptr noundef nonnull align 1 dereferenceable(1) %499) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef %498)
          to label %4766 unwind label %4896

4766:                                             ; preds = %4765
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %498) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %499) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %497) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %497) #0
  %4767 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4767, ptr noundef @.str.10)
          to label %4768 unwind label %4901

4768:                                             ; preds = %4766
  invoke void @__cxa_throw(ptr %4767, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %4888

4769:                                             ; preds = %4699
  %4770 = landingpad { ptr, i32 }
          cleanup
  %4771 = extractvalue { ptr, i32 } %4770, 0
  store ptr %4771, ptr %11, align 8
  %4772 = extractvalue { ptr, i32 } %4770, 1
  store i32 %4772, ptr %12, align 4
  br label %6574

4773:                                             ; preds = %4701
  %4774 = landingpad { ptr, i32 }
          cleanup
  %4775 = extractvalue { ptr, i32 } %4774, 0
  store ptr %4775, ptr %11, align 8
  %4776 = extractvalue { ptr, i32 } %4774, 1
  store i32 %4776, ptr %12, align 4
  br label %6573

4777:                                             ; preds = %4703
  %4778 = landingpad { ptr, i32 }
          cleanup
  %4779 = extractvalue { ptr, i32 } %4778, 0
  store ptr %4779, ptr %11, align 8
  %4780 = extractvalue { ptr, i32 } %4778, 1
  store i32 %4780, ptr %12, align 4
  br label %4790

4781:                                             ; preds = %4704
  %4782 = landingpad { ptr, i32 }
          cleanup
  %4783 = extractvalue { ptr, i32 } %4782, 0
  store ptr %4783, ptr %11, align 8
  %4784 = extractvalue { ptr, i32 } %4782, 1
  store i32 %4784, ptr %12, align 4
  br label %4789

4785:                                             ; preds = %4705
  %4786 = landingpad { ptr, i32 }
          cleanup
  %4787 = extractvalue { ptr, i32 } %4786, 0
  store ptr %4787, ptr %11, align 8
  %4788 = extractvalue { ptr, i32 } %4786, 1
  store i32 %4788, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %476) #0
  br label %4789

4789:                                             ; preds = %4785, %4781
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #0
  br label %4790

4790:                                             ; preds = %4789, %4777
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #0
  br label %6573

4791:                                             ; preds = %4706
  %4792 = landingpad { ptr, i32 }
          cleanup
  %4793 = extractvalue { ptr, i32 } %4792, 0
  store ptr %4793, ptr %11, align 8
  %4794 = extractvalue { ptr, i32 } %4792, 1
  store i32 %4794, ptr %12, align 4
  br label %6572

4795:                                             ; preds = %4707
  %4796 = landingpad { ptr, i32 }
          cleanup
  %4797 = extractvalue { ptr, i32 } %4796, 0
  store ptr %4797, ptr %11, align 8
  %4798 = extractvalue { ptr, i32 } %4796, 1
  store i32 %4798, ptr %12, align 4
  br label %4803

4799:                                             ; preds = %4708
  %4800 = landingpad { ptr, i32 }
          cleanup
  %4801 = extractvalue { ptr, i32 } %4800, 0
  store ptr %4801, ptr %11, align 8
  %4802 = extractvalue { ptr, i32 } %4800, 1
  store i32 %4802, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #0
  br label %4803

4803:                                             ; preds = %4799, %4795
  call void @llvm.lifetime.end.p0(i64 8, ptr %478) #0
  br label %6571

4804:                                             ; preds = %4711
  %4805 = landingpad { ptr, i32 }
          cleanup
  %4806 = extractvalue { ptr, i32 } %4805, 0
  store ptr %4806, ptr %11, align 8
  %4807 = extractvalue { ptr, i32 } %4805, 1
  store i32 %4807, ptr %12, align 4
  br label %4827

4808:                                             ; preds = %4713
  %4809 = landingpad { ptr, i32 }
          cleanup
  %4810 = extractvalue { ptr, i32 } %4809, 0
  store ptr %4810, ptr %11, align 8
  %4811 = extractvalue { ptr, i32 } %4809, 1
  store i32 %4811, ptr %12, align 4
  br label %4826

4812:                                             ; preds = %4715
  %4813 = landingpad { ptr, i32 }
          cleanup
  %4814 = extractvalue { ptr, i32 } %4813, 0
  store ptr %4814, ptr %11, align 8
  %4815 = extractvalue { ptr, i32 } %4813, 1
  store i32 %4815, ptr %12, align 4
  br label %4825

4816:                                             ; preds = %4716
  %4817 = landingpad { ptr, i32 }
          cleanup
  %4818 = extractvalue { ptr, i32 } %4817, 0
  store ptr %4818, ptr %11, align 8
  %4819 = extractvalue { ptr, i32 } %4817, 1
  store i32 %4819, ptr %12, align 4
  br label %4824

4820:                                             ; preds = %4717
  %4821 = landingpad { ptr, i32 }
          cleanup
  %4822 = extractvalue { ptr, i32 } %4821, 0
  store ptr %4822, ptr %11, align 8
  %4823 = extractvalue { ptr, i32 } %4821, 1
  store i32 %4823, ptr %12, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %479) #0
  br label %4824

4824:                                             ; preds = %4820, %4816
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #0
  br label %4825

4825:                                             ; preds = %4824, %4812
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %482) #0
  br label %4826

4826:                                             ; preds = %4825, %4808
  call void @llvm.lifetime.end.p0(i64 8, ptr %481) #0
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %480) #0
  br label %4827

4827:                                             ; preds = %4826, %4804
  call void @llvm.lifetime.end.p0(i64 216, ptr %480) #0
  call void @llvm.lifetime.end.p0(i64 224, ptr %479) #0
  br label %6571

4828:                                             ; preds = %4721, %4718
  %4829 = landingpad { ptr, i32 }
          cleanup
  %4830 = extractvalue { ptr, i32 } %4829, 0
  store ptr %4830, ptr %11, align 8
  %4831 = extractvalue { ptr, i32 } %4829, 1
  store i32 %4831, ptr %12, align 4
  br label %4840

4832:                                             ; preds = %4720
  %4833 = landingpad { ptr, i32 }
          cleanup
  %4834 = extractvalue { ptr, i32 } %4833, 0
  store ptr %4834, ptr %11, align 8
  %4835 = extractvalue { ptr, i32 } %4833, 1
  store i32 %4835, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %4719, i64 noundef 96) #15
  br label %4840

4836:                                             ; preds = %4722
  %4837 = landingpad { ptr, i32 }
          cleanup
  %4838 = extractvalue { ptr, i32 } %4837, 0
  store ptr %4838, ptr %11, align 8
  %4839 = extractvalue { ptr, i32 } %4837, 1
  store i32 %4839, ptr %12, align 4
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %483) #0
  br label %4840

4840:                                             ; preds = %4836, %4832, %4828
  call void @llvm.lifetime.end.p0(i64 8, ptr %483) #0
  br label %6571

4841:                                             ; preds = %4726
  %4842 = landingpad { ptr, i32 }
          cleanup
  %4843 = extractvalue { ptr, i32 } %4842, 0
  store ptr %4843, ptr %11, align 8
  %4844 = extractvalue { ptr, i32 } %4842, 1
  store i32 %4844, ptr %12, align 4
  br label %4849

4845:                                             ; preds = %4735, %4729
  %4846 = landingpad { ptr, i32 }
          cleanup
  %4847 = extractvalue { ptr, i32 } %4846, 0
  store ptr %4847, ptr %11, align 8
  %4848 = extractvalue { ptr, i32 } %4846, 1
  store i32 %4848, ptr %12, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %485) #0
  br label %4849

4849:                                             ; preds = %4845, %4841
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %486) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %487) #0
  br label %6570

4850:                                             ; preds = %4740, %4736
  %4851 = landingpad { ptr, i32 }
          cleanup
  %4852 = extractvalue { ptr, i32 } %4851, 0
  store ptr %4852, ptr %11, align 8
  %4853 = extractvalue { ptr, i32 } %4851, 1
  store i32 %4853, ptr %12, align 4
  br label %6569

4854:                                             ; preds = %6519, %6511, %4950, %4926, %4920, %4741
  %4855 = landingpad { ptr, i32 }
          cleanup
  %4856 = extractvalue { ptr, i32 } %4855, 0
  store ptr %4856, ptr %11, align 8
  %4857 = extractvalue { ptr, i32 } %4855, 1
  store i32 %4857, ptr %12, align 4
  br label %6568

4858:                                             ; preds = %4742
  %4859 = landingpad { ptr, i32 }
          cleanup
  %4860 = extractvalue { ptr, i32 } %4859, 0
  store ptr %4860, ptr %11, align 8
  %4861 = extractvalue { ptr, i32 } %4859, 1
  store i32 %4861, ptr %12, align 4
  br label %4866

4862:                                             ; preds = %4744
  %4863 = landingpad { ptr, i32 }
          cleanup
  %4864 = extractvalue { ptr, i32 } %4863, 0
  store ptr %4864, ptr %11, align 8
  %4865 = extractvalue { ptr, i32 } %4863, 1
  store i32 %4865, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %490) #0
  br label %4866

4866:                                             ; preds = %4862, %4858
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %491) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %489) #0
  br label %6568

4867:                                             ; preds = %4745
  %4868 = landingpad { ptr, i32 }
          cleanup
  %4869 = extractvalue { ptr, i32 } %4868, 0
  store ptr %4869, ptr %11, align 8
  %4870 = extractvalue { ptr, i32 } %4868, 1
  store i32 %4870, ptr %12, align 4
  br label %4935

4871:                                             ; preds = %4752
  %4872 = landingpad { ptr, i32 }
          cleanup
  %4873 = extractvalue { ptr, i32 } %4872, 0
  store ptr %4873, ptr %11, align 8
  %4874 = extractvalue { ptr, i32 } %4872, 1
  store i32 %4874, ptr %12, align 4
  br label %4916

4875:                                             ; preds = %4754
  %4876 = landingpad { ptr, i32 }
          cleanup
  %4877 = extractvalue { ptr, i32 } %4876, 0
  store ptr %4877, ptr %11, align 8
  %4878 = extractvalue { ptr, i32 } %4876, 1
  store i32 %4878, ptr %12, align 4
  br label %4883

4879:                                             ; preds = %4755
  %4880 = landingpad { ptr, i32 }
          cleanup
  %4881 = extractvalue { ptr, i32 } %4880, 0
  store ptr %4881, ptr %11, align 8
  %4882 = extractvalue { ptr, i32 } %4880, 1
  store i32 %4882, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %494) #0
  br label %4883

4883:                                             ; preds = %4879, %4875
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %495) #0
  br label %4916

4884:                                             ; preds = %4756
  %4885 = landingpad { ptr, i32 }
          cleanup
  %4886 = extractvalue { ptr, i32 } %4885, 0
  store ptr %4886, ptr %11, align 8
  %4887 = extractvalue { ptr, i32 } %4885, 1
  store i32 %4887, ptr %12, align 4
  br label %4915

4888:                                             ; preds = %4907, %4768, %4760, %4758
  %4889 = landingpad { ptr, i32 }
          cleanup
  %4890 = extractvalue { ptr, i32 } %4889, 0
  store ptr %4890, ptr %11, align 8
  %4891 = extractvalue { ptr, i32 } %4889, 1
  store i32 %4891, ptr %12, align 4
  br label %4914

4892:                                             ; preds = %4764
  %4893 = landingpad { ptr, i32 }
          cleanup
  %4894 = extractvalue { ptr, i32 } %4893, 0
  store ptr %4894, ptr %11, align 8
  %4895 = extractvalue { ptr, i32 } %4893, 1
  store i32 %4895, ptr %12, align 4
  br label %4900

4896:                                             ; preds = %4765
  %4897 = landingpad { ptr, i32 }
          cleanup
  %4898 = extractvalue { ptr, i32 } %4897, 0
  store ptr %4898, ptr %11, align 8
  %4899 = extractvalue { ptr, i32 } %4897, 1
  store i32 %4899, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %498) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %499) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %497) #0
  br label %4900

4900:                                             ; preds = %4896, %4892
  call void @llvm.lifetime.end.p0(i64 8, ptr %497) #0
  br label %4914

4901:                                             ; preds = %4766
  %4902 = landingpad { ptr, i32 }
          cleanup
  %4903 = extractvalue { ptr, i32 } %4902, 0
  store ptr %4903, ptr %11, align 8
  %4904 = extractvalue { ptr, i32 } %4902, 1
  store i32 %4904, ptr %12, align 4
  call void @__cxa_free_exception(ptr %4767) #0
  br label %4914

4905:                                             ; preds = %4763
  br label %4906

4906:                                             ; preds = %4905
  br label %4907

4907:                                             ; preds = %4906
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %500, ptr noundef nonnull align 8 dereferenceable(32) %493)
          to label %4908 unwind label %4888

4908:                                             ; preds = %4907
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %500)
          to label %4909 unwind label %4910

4909:                                             ; preds = %4908
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %500) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %496) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %496) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %493) #0
  br label %4917

4910:                                             ; preds = %4908
  %4911 = landingpad { ptr, i32 }
          cleanup
  %4912 = extractvalue { ptr, i32 } %4911, 0
  store ptr %4912, ptr %11, align 8
  %4913 = extractvalue { ptr, i32 } %4911, 1
  store i32 %4913, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %500) #0
  br label %4914

4914:                                             ; preds = %4910, %4901, %4900, %4888
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %496) #0
  br label %4915

4915:                                             ; preds = %4914, %4884
  call void @llvm.lifetime.end.p0(i64 8, ptr %496) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %493) #0
  br label %4916

4916:                                             ; preds = %4915, %4883, %4871
  call void @llvm.lifetime.end.p0(i64 32, ptr %493) #0
  br label %4935

4917:                                             ; preds = %4909, %4749
  call void @llvm.lifetime.end.p0(i64 8, ptr %492) #0
  %4918 = load i32, ptr @gTargetVersion, align 4, !tbaa !9
  %4919 = icmp sle i32 %4918, 3
  br i1 %4919, label %4920, label %4950

4920:                                             ; preds = %4917
  %4921 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %4922 = load ptr, ptr %471, align 8, !tbaa !5
  %4923 = invoke noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %4921, ptr noundef nonnull align 8 dereferenceable(8) %4922)
          to label %4924 unwind label %4854

4924:                                             ; preds = %4920
  %4925 = icmp ne ptr %4923, null
  br i1 %4925, label %4926, label %4950

4926:                                             ; preds = %4924
  %4927 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %502, i32 0, i32 0
  store i32 0, ptr %4927, align 8, !tbaa !218
  %4928 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %502, i32 0, i32 2
  %4929 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %503, ptr noundef nonnull align 8 dereferenceable(32) %4929)
          to label %4930 unwind label %4854

4930:                                             ; preds = %4926
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %4928, ptr noundef %503)
          to label %4931 unwind label %4936

4931:                                             ; preds = %4930
  %4932 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %502, i32 0, i32 3
  store i32 -1, ptr %4932, align 8, !tbaa !227
  invoke void @_ZN3MIR9Statement9make_DropENS0_9Data_DropE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %501, ptr noundef %502)
          to label %4933 unwind label %4940

4933:                                             ; preds = %4931
  invoke void @_ZN12_GLOBAL__N_17Builder9push_stmtEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %501)
          to label %4934 unwind label %4944

4934:                                             ; preds = %4933
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %501) #0
  call void @_ZN3MIR9Statement9Data_DropD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %502) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %503) #0
  br label %6511

4935:                                             ; preds = %4916, %4867
  call void @llvm.lifetime.end.p0(i64 8, ptr %492) #0
  br label %6568

4936:                                             ; preds = %4930
  %4937 = landingpad { ptr, i32 }
          cleanup
  %4938 = extractvalue { ptr, i32 } %4937, 0
  store ptr %4938, ptr %11, align 8
  %4939 = extractvalue { ptr, i32 } %4937, 1
  store i32 %4939, ptr %12, align 4
  br label %4949

4940:                                             ; preds = %4931
  %4941 = landingpad { ptr, i32 }
          cleanup
  %4942 = extractvalue { ptr, i32 } %4941, 0
  store ptr %4942, ptr %11, align 8
  %4943 = extractvalue { ptr, i32 } %4941, 1
  store i32 %4943, ptr %12, align 4
  br label %4948

4944:                                             ; preds = %4933
  %4945 = landingpad { ptr, i32 }
          cleanup
  %4946 = extractvalue { ptr, i32 } %4945, 0
  store ptr %4946, ptr %11, align 8
  %4947 = extractvalue { ptr, i32 } %4945, 1
  store i32 %4947, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %501) #0
  br label %4948

4948:                                             ; preds = %4944, %4940
  call void @_ZN3MIR9Statement9Data_DropD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %502) #0
  br label %4949

4949:                                             ; preds = %4948, %4936
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %503) #0
  br label %6568

4950:                                             ; preds = %4924, %4917
  %4951 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %4952 = load ptr, ptr %471, align 8, !tbaa !5
  %4953 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %4951, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %4952)
          to label %4954 unwind label %4854

4954:                                             ; preds = %4950
  br i1 %4953, label %4955, label %6510

4955:                                             ; preds = %4954
  call void @llvm.lifetime.start.p0(i64 1, ptr %504) #0
  store i8 1, ptr %504, align 1, !tbaa !150
  br label %4956

4956:                                             ; preds = %6508, %4955
  %4957 = load i8, ptr %504, align 1, !tbaa !150, !range !151, !noundef !152
  %4958 = trunc i8 %4957 to i1
  br i1 %4958, label %4960, label %4959

4959:                                             ; preds = %4956
  store i32 99, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %504) #0
  br label %6509

4960:                                             ; preds = %4956
  call void @llvm.lifetime.start.p0(i64 8, ptr %505) #0
  %4961 = load ptr, ptr %471, align 8, !tbaa !5
  %4962 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4961)
          to label %4963 unwind label %4968

4963:                                             ; preds = %4960
  store ptr %4962, ptr %505, align 8, !tbaa !5
  br label %4964

4964:                                             ; preds = %6505, %4963
  %4965 = load i8, ptr %504, align 1, !tbaa !150, !range !151, !noundef !152
  %4966 = trunc i8 %4965 to i1
  br i1 %4966, label %4972, label %4967

4967:                                             ; preds = %4964
  store i32 102, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #0
  br label %6507

4968:                                             ; preds = %4972, %4960
  %4969 = landingpad { ptr, i32 }
          cleanup
  %4970 = extractvalue { ptr, i32 } %4969, 0
  store ptr %4970, ptr %11, align 8
  %4971 = extractvalue { ptr, i32 } %4969, 1
  store i32 %4971, ptr %12, align 4
  br label %6506

4972:                                             ; preds = %4964
  %4973 = load ptr, ptr %505, align 8, !tbaa !5
  %4974 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %4973)
          to label %4975 unwind label %4968

4975:                                             ; preds = %4972
  switch i32 %4974, label %6504 [
    i32 0, label %4976
    i32 1, label %4977
    i32 5, label %5001
    i32 7, label %5025
    i32 6, label %5049
    i32 9, label %5101
    i32 15, label %5153
    i32 16, label %5205
    i32 2, label %5257
    i32 3, label %5287
    i32 13, label %5310
    i32 14, label %5333
    i32 12, label %5356
    i32 11, label %5379
    i32 10, label %5428
    i32 8, label %5506
    i32 4, label %5785
  ]

4976:                                             ; preds = %4975
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.9, i32 noundef 963, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

4977:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %506) #0
  store i8 1, ptr %506, align 1, !tbaa !150
  br label %4978

4978:                                             ; preds = %4999, %4977
  %4979 = load i8, ptr %506, align 1, !tbaa !150, !range !151, !noundef !152
  %4980 = trunc i8 %4979 to i1
  br i1 %4980, label %4982, label %4981

4981:                                             ; preds = %4978
  store i32 106, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %506) #0
  br label %5000

4982:                                             ; preds = %4978
  call void @llvm.lifetime.start.p0(i64 8, ptr %507) #0
  %4983 = load ptr, ptr %505, align 8, !tbaa !5
  %4984 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %4983)
          to label %4985 unwind label %4991

4985:                                             ; preds = %4982
  store ptr %4984, ptr %507, align 8, !tbaa !5
  br label %4986

4986:                                             ; preds = %4997, %4985
  %4987 = load ptr, ptr %507, align 8, !tbaa !5
  %4988 = load i8, ptr %506, align 1, !tbaa !150, !range !151, !noundef !152
  %4989 = trunc i8 %4988 to i1
  br i1 %4989, label %4995, label %4990

4990:                                             ; preds = %4986
  store i32 109, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %507) #0
  br label %4998

4991:                                             ; preds = %4995, %4982
  %4992 = landingpad { ptr, i32 }
          cleanup
  %4993 = extractvalue { ptr, i32 } %4992, 0
  store ptr %4993, ptr %11, align 8
  %4994 = extractvalue { ptr, i32 } %4992, 1
  store i32 %4994, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %507) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %506) #0
  br label %6506

4995:                                             ; preds = %4986
  %4996 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.34, ptr %4996, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4996, ptr @_ZTIPKc, ptr null) #13
          to label %6584 unwind label %4991

4997:                                             ; No predecessors!
  store i8 0, ptr %506, align 1, !tbaa !150
  br label %4986, !llvm.loop !228

4998:                                             ; preds = %4990
  br label %4999

4999:                                             ; preds = %4998
  store i8 0, ptr %506, align 1, !tbaa !150
  br label %4978, !llvm.loop !229

5000:                                             ; preds = %4981
  br label %6504

5001:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %508) #0
  store i8 1, ptr %508, align 1, !tbaa !150
  br label %5002

5002:                                             ; preds = %5023, %5001
  %5003 = load i8, ptr %508, align 1, !tbaa !150, !range !151, !noundef !152
  %5004 = trunc i8 %5003 to i1
  br i1 %5004, label %5006, label %5005

5005:                                             ; preds = %5002
  store i32 112, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %508) #0
  br label %5024

5006:                                             ; preds = %5002
  call void @llvm.lifetime.start.p0(i64 8, ptr %509) #0
  %5007 = load ptr, ptr %505, align 8, !tbaa !5
  %5008 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %5007)
          to label %5009 unwind label %5015

5009:                                             ; preds = %5006
  store ptr %5008, ptr %509, align 8, !tbaa !5
  br label %5010

5010:                                             ; preds = %5021, %5009
  %5011 = load ptr, ptr %509, align 8, !tbaa !5
  %5012 = load i8, ptr %508, align 1, !tbaa !150, !range !151, !noundef !152
  %5013 = trunc i8 %5012 to i1
  br i1 %5013, label %5019, label %5014

5014:                                             ; preds = %5010
  store i32 115, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %509) #0
  br label %5022

5015:                                             ; preds = %5019, %5006
  %5016 = landingpad { ptr, i32 }
          cleanup
  %5017 = extractvalue { ptr, i32 } %5016, 0
  store ptr %5017, ptr %11, align 8
  %5018 = extractvalue { ptr, i32 } %5016, 1
  store i32 %5018, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %509) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %508) #0
  br label %6506

5019:                                             ; preds = %5010
  %5020 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.34, ptr %5020, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %5020, ptr @_ZTIPKc, ptr null) #13
          to label %6584 unwind label %5015

5021:                                             ; No predecessors!
  store i8 0, ptr %508, align 1, !tbaa !150
  br label %5010, !llvm.loop !230

5022:                                             ; preds = %5014
  br label %5023

5023:                                             ; preds = %5022
  store i8 0, ptr %508, align 1, !tbaa !150
  br label %5002, !llvm.loop !231

5024:                                             ; preds = %5005
  br label %6504

5025:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %510) #0
  store i8 1, ptr %510, align 1, !tbaa !150
  br label %5026

5026:                                             ; preds = %5047, %5025
  %5027 = load i8, ptr %510, align 1, !tbaa !150, !range !151, !noundef !152
  %5028 = trunc i8 %5027 to i1
  br i1 %5028, label %5030, label %5029

5029:                                             ; preds = %5026
  store i32 118, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %510) #0
  br label %5048

5030:                                             ; preds = %5026
  call void @llvm.lifetime.start.p0(i64 8, ptr %511) #0
  %5031 = load ptr, ptr %505, align 8, !tbaa !5
  %5032 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %5031)
          to label %5033 unwind label %5039

5033:                                             ; preds = %5030
  store ptr %5032, ptr %511, align 8, !tbaa !5
  br label %5034

5034:                                             ; preds = %5045, %5033
  %5035 = load ptr, ptr %511, align 8, !tbaa !5
  %5036 = load i8, ptr %510, align 1, !tbaa !150, !range !151, !noundef !152
  %5037 = trunc i8 %5036 to i1
  br i1 %5037, label %5043, label %5038

5038:                                             ; preds = %5034
  store i32 121, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %511) #0
  br label %5046

5039:                                             ; preds = %5043, %5030
  %5040 = landingpad { ptr, i32 }
          cleanup
  %5041 = extractvalue { ptr, i32 } %5040, 0
  store ptr %5041, ptr %11, align 8
  %5042 = extractvalue { ptr, i32 } %5040, 1
  store i32 %5042, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %511) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %510) #0
  br label %6506

5043:                                             ; preds = %5034
  %5044 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.34, ptr %5044, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %5044, ptr @_ZTIPKc, ptr null) #13
          to label %6584 unwind label %5039

5045:                                             ; No predecessors!
  store i8 0, ptr %510, align 1, !tbaa !150
  br label %5034, !llvm.loop !232

5046:                                             ; preds = %5038
  br label %5047

5047:                                             ; preds = %5046
  store i8 0, ptr %510, align 1, !tbaa !150
  br label %5026, !llvm.loop !233

5048:                                             ; preds = %5029
  br label %6504

5049:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %512) #0
  store i8 1, ptr %512, align 1, !tbaa !150
  br label %5050

5050:                                             ; preds = %5099, %5049
  %5051 = load i8, ptr %512, align 1, !tbaa !150, !range !151, !noundef !152
  %5052 = trunc i8 %5051 to i1
  br i1 %5052, label %5054, label %5053

5053:                                             ; preds = %5050
  store i32 124, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %512) #0
  br label %5100

5054:                                             ; preds = %5050
  call void @llvm.lifetime.start.p0(i64 8, ptr %513) #0
  %5055 = load ptr, ptr %505, align 8, !tbaa !5
  %5056 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %5055)
          to label %5057 unwind label %5063

5057:                                             ; preds = %5054
  store ptr %5056, ptr %513, align 8, !tbaa !5
  br label %5058

5058:                                             ; preds = %5096, %5057
  %5059 = load ptr, ptr %513, align 8, !tbaa !5
  %5060 = load i8, ptr %512, align 1, !tbaa !150, !range !151, !noundef !152
  %5061 = trunc i8 %5060 to i1
  br i1 %5061, label %5067, label %5062

5062:                                             ; preds = %5058
  store i32 127, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %513) #0
  br label %5098

5063:                                             ; preds = %5054
  %5064 = landingpad { ptr, i32 }
          cleanup
  %5065 = extractvalue { ptr, i32 } %5064, 0
  store ptr %5065, ptr %11, align 8
  %5066 = extractvalue { ptr, i32 } %5064, 1
  store i32 %5066, ptr %12, align 4
  br label %5097

5067:                                             ; preds = %5058
  br label %5068

5068:                                             ; preds = %5067
  call void @llvm.lifetime.start.p0(i64 8, ptr %514) #0
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %514, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %515) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5069 unwind label %5076

5069:                                             ; preds = %5068
  call void @llvm.lifetime.start.p0(i64 16, ptr %517) #0
  %5070 = getelementptr inbounds %class.anon.609, ptr %517, i32 0, i32 0
  store ptr %514, ptr %5070, align 8, !tbaa !5
  %5071 = getelementptr inbounds %class.anon.609, ptr %517, i32 0, i32 1
  %5072 = load ptr, ptr %471, align 8, !tbaa !5
  store ptr %5072, ptr %5071, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %516, ptr noundef nonnull align 8 dereferenceable(16) %517) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef %516)
          to label %5073 unwind label %5080

5073:                                             ; preds = %5069
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %516) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %517) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %515) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %515) #0
  %5074 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5074, ptr noundef @.str.19)
          to label %5075 unwind label %5085

5075:                                             ; preds = %5073
  invoke void @__cxa_throw(ptr %5074, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5089

5076:                                             ; preds = %5068
  %5077 = landingpad { ptr, i32 }
          cleanup
  %5078 = extractvalue { ptr, i32 } %5077, 0
  store ptr %5078, ptr %11, align 8
  %5079 = extractvalue { ptr, i32 } %5077, 1
  store i32 %5079, ptr %12, align 4
  br label %5084

5080:                                             ; preds = %5069
  %5081 = landingpad { ptr, i32 }
          cleanup
  %5082 = extractvalue { ptr, i32 } %5081, 0
  store ptr %5082, ptr %11, align 8
  %5083 = extractvalue { ptr, i32 } %5081, 1
  store i32 %5083, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %516) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %517) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %515) #0
  br label %5084

5084:                                             ; preds = %5080, %5076
  call void @llvm.lifetime.end.p0(i64 8, ptr %515) #0
  br label %5093

5085:                                             ; preds = %5073
  %5086 = landingpad { ptr, i32 }
          cleanup
  %5087 = extractvalue { ptr, i32 } %5086, 0
  store ptr %5087, ptr %11, align 8
  %5088 = extractvalue { ptr, i32 } %5086, 1
  store i32 %5088, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5074) #0
  br label %5093

5089:                                             ; preds = %5075
  %5090 = landingpad { ptr, i32 }
          cleanup
  %5091 = extractvalue { ptr, i32 } %5090, 0
  store ptr %5091, ptr %11, align 8
  %5092 = extractvalue { ptr, i32 } %5090, 1
  store i32 %5092, ptr %12, align 4
  br label %5093

5093:                                             ; preds = %5089, %5085, %5084
  call void @llvm.lifetime.end.p0(i64 8, ptr %514) #0
  br label %5097

5094:                                             ; No predecessors!
  br label %5095

5095:                                             ; preds = %5094
  br label %5096

5096:                                             ; preds = %5095
  store i8 0, ptr %512, align 1, !tbaa !150
  br label %5058, !llvm.loop !234

5097:                                             ; preds = %5093, %5063
  call void @llvm.lifetime.end.p0(i64 8, ptr %513) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %512) #0
  br label %6506

5098:                                             ; preds = %5062
  br label %5099

5099:                                             ; preds = %5098
  store i8 0, ptr %512, align 1, !tbaa !150
  br label %5050, !llvm.loop !235

5100:                                             ; preds = %5053
  br label %6504

5101:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %518) #0
  store i8 1, ptr %518, align 1, !tbaa !150
  br label %5102

5102:                                             ; preds = %5151, %5101
  %5103 = load i8, ptr %518, align 1, !tbaa !150, !range !151, !noundef !152
  %5104 = trunc i8 %5103 to i1
  br i1 %5104, label %5106, label %5105

5105:                                             ; preds = %5102
  store i32 132, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %518) #0
  br label %5152

5106:                                             ; preds = %5102
  call void @llvm.lifetime.start.p0(i64 8, ptr %519) #0
  %5107 = load ptr, ptr %505, align 8, !tbaa !5
  %5108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %5107)
          to label %5109 unwind label %5115

5109:                                             ; preds = %5106
  store ptr %5108, ptr %519, align 8, !tbaa !5
  br label %5110

5110:                                             ; preds = %5148, %5109
  %5111 = load ptr, ptr %519, align 8, !tbaa !5
  %5112 = load i8, ptr %518, align 1, !tbaa !150, !range !151, !noundef !152
  %5113 = trunc i8 %5112 to i1
  br i1 %5113, label %5119, label %5114

5114:                                             ; preds = %5110
  store i32 135, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #0
  br label %5150

5115:                                             ; preds = %5106
  %5116 = landingpad { ptr, i32 }
          cleanup
  %5117 = extractvalue { ptr, i32 } %5116, 0
  store ptr %5117, ptr %11, align 8
  %5118 = extractvalue { ptr, i32 } %5116, 1
  store i32 %5118, ptr %12, align 4
  br label %5149

5119:                                             ; preds = %5110
  br label %5120

5120:                                             ; preds = %5119
  call void @llvm.lifetime.start.p0(i64 8, ptr %520) #0
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %520, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %521) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %521, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5121 unwind label %5128

5121:                                             ; preds = %5120
  call void @llvm.lifetime.start.p0(i64 16, ptr %523) #0
  %5122 = getelementptr inbounds %class.anon.610, ptr %523, i32 0, i32 0
  store ptr %520, ptr %5122, align 8, !tbaa !5
  %5123 = getelementptr inbounds %class.anon.610, ptr %523, i32 0, i32 1
  %5124 = load ptr, ptr %471, align 8, !tbaa !5
  store ptr %5124, ptr %5123, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %522, ptr noundef nonnull align 8 dereferenceable(16) %523) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %521, ptr noundef %522)
          to label %5125 unwind label %5132

5125:                                             ; preds = %5121
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %522) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %523) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %521) #0
  %5126 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5126, ptr noundef @.str.19)
          to label %5127 unwind label %5137

5127:                                             ; preds = %5125
  invoke void @__cxa_throw(ptr %5126, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5141

5128:                                             ; preds = %5120
  %5129 = landingpad { ptr, i32 }
          cleanup
  %5130 = extractvalue { ptr, i32 } %5129, 0
  store ptr %5130, ptr %11, align 8
  %5131 = extractvalue { ptr, i32 } %5129, 1
  store i32 %5131, ptr %12, align 4
  br label %5136

5132:                                             ; preds = %5121
  %5133 = landingpad { ptr, i32 }
          cleanup
  %5134 = extractvalue { ptr, i32 } %5133, 0
  store ptr %5134, ptr %11, align 8
  %5135 = extractvalue { ptr, i32 } %5133, 1
  store i32 %5135, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %522) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %523) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %521) #0
  br label %5136

5136:                                             ; preds = %5132, %5128
  call void @llvm.lifetime.end.p0(i64 8, ptr %521) #0
  br label %5145

5137:                                             ; preds = %5125
  %5138 = landingpad { ptr, i32 }
          cleanup
  %5139 = extractvalue { ptr, i32 } %5138, 0
  store ptr %5139, ptr %11, align 8
  %5140 = extractvalue { ptr, i32 } %5138, 1
  store i32 %5140, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5126) #0
  br label %5145

5141:                                             ; preds = %5127
  %5142 = landingpad { ptr, i32 }
          cleanup
  %5143 = extractvalue { ptr, i32 } %5142, 0
  store ptr %5143, ptr %11, align 8
  %5144 = extractvalue { ptr, i32 } %5142, 1
  store i32 %5144, ptr %12, align 4
  br label %5145

5145:                                             ; preds = %5141, %5137, %5136
  call void @llvm.lifetime.end.p0(i64 8, ptr %520) #0
  br label %5149

5146:                                             ; No predecessors!
  br label %5147

5147:                                             ; preds = %5146
  br label %5148

5148:                                             ; preds = %5147
  store i8 0, ptr %518, align 1, !tbaa !150
  br label %5110, !llvm.loop !236

5149:                                             ; preds = %5145, %5115
  call void @llvm.lifetime.end.p0(i64 8, ptr %519) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %518) #0
  br label %6506

5150:                                             ; preds = %5114
  br label %5151

5151:                                             ; preds = %5150
  store i8 0, ptr %518, align 1, !tbaa !150
  br label %5102, !llvm.loop !237

5152:                                             ; preds = %5105
  br label %6504

5153:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %524) #0
  store i8 1, ptr %524, align 1, !tbaa !150
  br label %5154

5154:                                             ; preds = %5203, %5153
  %5155 = load i8, ptr %524, align 1, !tbaa !150, !range !151, !noundef !152
  %5156 = trunc i8 %5155 to i1
  br i1 %5156, label %5158, label %5157

5157:                                             ; preds = %5154
  store i32 140, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %524) #0
  br label %5204

5158:                                             ; preds = %5154
  call void @llvm.lifetime.start.p0(i64 8, ptr %525) #0
  %5159 = load ptr, ptr %505, align 8, !tbaa !5
  %5160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %5159)
          to label %5161 unwind label %5167

5161:                                             ; preds = %5158
  store ptr %5160, ptr %525, align 8, !tbaa !5
  br label %5162

5162:                                             ; preds = %5200, %5161
  %5163 = load ptr, ptr %525, align 8, !tbaa !5
  %5164 = load i8, ptr %524, align 1, !tbaa !150, !range !151, !noundef !152
  %5165 = trunc i8 %5164 to i1
  br i1 %5165, label %5171, label %5166

5166:                                             ; preds = %5162
  store i32 143, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #0
  br label %5202

5167:                                             ; preds = %5158
  %5168 = landingpad { ptr, i32 }
          cleanup
  %5169 = extractvalue { ptr, i32 } %5168, 0
  store ptr %5169, ptr %11, align 8
  %5170 = extractvalue { ptr, i32 } %5168, 1
  store i32 %5170, ptr %12, align 4
  br label %5201

5171:                                             ; preds = %5162
  br label %5172

5172:                                             ; preds = %5171
  call void @llvm.lifetime.start.p0(i64 8, ptr %526) #0
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %526, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %527) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5173 unwind label %5180

5173:                                             ; preds = %5172
  call void @llvm.lifetime.start.p0(i64 16, ptr %529) #0
  %5174 = getelementptr inbounds %class.anon.611, ptr %529, i32 0, i32 0
  store ptr %526, ptr %5174, align 8, !tbaa !5
  %5175 = getelementptr inbounds %class.anon.611, ptr %529, i32 0, i32 1
  %5176 = load ptr, ptr %471, align 8, !tbaa !5
  store ptr %5176, ptr %5175, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %528, ptr noundef nonnull align 8 dereferenceable(16) %529) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef %528)
          to label %5177 unwind label %5184

5177:                                             ; preds = %5173
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %528) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %529) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %527) #0
  %5178 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5178, ptr noundef @.str.19)
          to label %5179 unwind label %5189

5179:                                             ; preds = %5177
  invoke void @__cxa_throw(ptr %5178, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5193

5180:                                             ; preds = %5172
  %5181 = landingpad { ptr, i32 }
          cleanup
  %5182 = extractvalue { ptr, i32 } %5181, 0
  store ptr %5182, ptr %11, align 8
  %5183 = extractvalue { ptr, i32 } %5181, 1
  store i32 %5183, ptr %12, align 4
  br label %5188

5184:                                             ; preds = %5173
  %5185 = landingpad { ptr, i32 }
          cleanup
  %5186 = extractvalue { ptr, i32 } %5185, 0
  store ptr %5186, ptr %11, align 8
  %5187 = extractvalue { ptr, i32 } %5185, 1
  store i32 %5187, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %528) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %529) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %527) #0
  br label %5188

5188:                                             ; preds = %5184, %5180
  call void @llvm.lifetime.end.p0(i64 8, ptr %527) #0
  br label %5197

5189:                                             ; preds = %5177
  %5190 = landingpad { ptr, i32 }
          cleanup
  %5191 = extractvalue { ptr, i32 } %5190, 0
  store ptr %5191, ptr %11, align 8
  %5192 = extractvalue { ptr, i32 } %5190, 1
  store i32 %5192, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5178) #0
  br label %5197

5193:                                             ; preds = %5179
  %5194 = landingpad { ptr, i32 }
          cleanup
  %5195 = extractvalue { ptr, i32 } %5194, 0
  store ptr %5195, ptr %11, align 8
  %5196 = extractvalue { ptr, i32 } %5194, 1
  store i32 %5196, ptr %12, align 4
  br label %5197

5197:                                             ; preds = %5193, %5189, %5188
  call void @llvm.lifetime.end.p0(i64 8, ptr %526) #0
  br label %5201

5198:                                             ; No predecessors!
  br label %5199

5199:                                             ; preds = %5198
  br label %5200

5200:                                             ; preds = %5199
  store i8 0, ptr %524, align 1, !tbaa !150
  br label %5162, !llvm.loop !238

5201:                                             ; preds = %5197, %5167
  call void @llvm.lifetime.end.p0(i64 8, ptr %525) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %524) #0
  br label %6506

5202:                                             ; preds = %5166
  br label %5203

5203:                                             ; preds = %5202
  store i8 0, ptr %524, align 1, !tbaa !150
  br label %5154, !llvm.loop !239

5204:                                             ; preds = %5157
  br label %6504

5205:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %530) #0
  store i8 1, ptr %530, align 1, !tbaa !150
  br label %5206

5206:                                             ; preds = %5255, %5205
  %5207 = load i8, ptr %530, align 1, !tbaa !150, !range !151, !noundef !152
  %5208 = trunc i8 %5207 to i1
  br i1 %5208, label %5210, label %5209

5209:                                             ; preds = %5206
  store i32 148, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %530) #0
  br label %5256

5210:                                             ; preds = %5206
  call void @llvm.lifetime.start.p0(i64 8, ptr %531) #0
  %5211 = load ptr, ptr %505, align 8, !tbaa !5
  %5212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %5211)
          to label %5213 unwind label %5219

5213:                                             ; preds = %5210
  store ptr %5212, ptr %531, align 8, !tbaa !5
  br label %5214

5214:                                             ; preds = %5252, %5213
  %5215 = load ptr, ptr %531, align 8, !tbaa !5
  %5216 = load i8, ptr %530, align 1, !tbaa !150, !range !151, !noundef !152
  %5217 = trunc i8 %5216 to i1
  br i1 %5217, label %5223, label %5218

5218:                                             ; preds = %5214
  store i32 151, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #0
  br label %5254

5219:                                             ; preds = %5210
  %5220 = landingpad { ptr, i32 }
          cleanup
  %5221 = extractvalue { ptr, i32 } %5220, 0
  store ptr %5221, ptr %11, align 8
  %5222 = extractvalue { ptr, i32 } %5220, 1
  store i32 %5222, ptr %12, align 4
  br label %5253

5223:                                             ; preds = %5214
  br label %5224

5224:                                             ; preds = %5223
  call void @llvm.lifetime.start.p0(i64 8, ptr %532) #0
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %532, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %533) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %533, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5225 unwind label %5232

5225:                                             ; preds = %5224
  call void @llvm.lifetime.start.p0(i64 16, ptr %535) #0
  %5226 = getelementptr inbounds %class.anon.612, ptr %535, i32 0, i32 0
  store ptr %532, ptr %5226, align 8, !tbaa !5
  %5227 = getelementptr inbounds %class.anon.612, ptr %535, i32 0, i32 1
  %5228 = load ptr, ptr %471, align 8, !tbaa !5
  store ptr %5228, ptr %5227, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %534, ptr noundef nonnull align 8 dereferenceable(16) %535) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %533, ptr noundef %534)
          to label %5229 unwind label %5236

5229:                                             ; preds = %5225
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %534) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %535) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %533) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %533) #0
  %5230 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5230, ptr noundef @.str.19)
          to label %5231 unwind label %5241

5231:                                             ; preds = %5229
  invoke void @__cxa_throw(ptr %5230, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5245

5232:                                             ; preds = %5224
  %5233 = landingpad { ptr, i32 }
          cleanup
  %5234 = extractvalue { ptr, i32 } %5233, 0
  store ptr %5234, ptr %11, align 8
  %5235 = extractvalue { ptr, i32 } %5233, 1
  store i32 %5235, ptr %12, align 4
  br label %5240

5236:                                             ; preds = %5225
  %5237 = landingpad { ptr, i32 }
          cleanup
  %5238 = extractvalue { ptr, i32 } %5237, 0
  store ptr %5238, ptr %11, align 8
  %5239 = extractvalue { ptr, i32 } %5237, 1
  store i32 %5239, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %534) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %535) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %533) #0
  br label %5240

5240:                                             ; preds = %5236, %5232
  call void @llvm.lifetime.end.p0(i64 8, ptr %533) #0
  br label %5249

5241:                                             ; preds = %5229
  %5242 = landingpad { ptr, i32 }
          cleanup
  %5243 = extractvalue { ptr, i32 } %5242, 0
  store ptr %5243, ptr %11, align 8
  %5244 = extractvalue { ptr, i32 } %5242, 1
  store i32 %5244, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5230) #0
  br label %5249

5245:                                             ; preds = %5231
  %5246 = landingpad { ptr, i32 }
          cleanup
  %5247 = extractvalue { ptr, i32 } %5246, 0
  store ptr %5247, ptr %11, align 8
  %5248 = extractvalue { ptr, i32 } %5246, 1
  store i32 %5248, ptr %12, align 4
  br label %5249

5249:                                             ; preds = %5245, %5241, %5240
  call void @llvm.lifetime.end.p0(i64 8, ptr %532) #0
  br label %5253

5250:                                             ; No predecessors!
  br label %5251

5251:                                             ; preds = %5250
  br label %5252

5252:                                             ; preds = %5251
  store i8 0, ptr %530, align 1, !tbaa !150
  br label %5214, !llvm.loop !240

5253:                                             ; preds = %5249, %5219
  call void @llvm.lifetime.end.p0(i64 8, ptr %531) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %530) #0
  br label %6506

5254:                                             ; preds = %5218
  br label %5255

5255:                                             ; preds = %5254
  store i8 0, ptr %530, align 1, !tbaa !150
  br label %5206, !llvm.loop !241

5256:                                             ; preds = %5209
  br label %6504

5257:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %536) #0
  store i8 1, ptr %536, align 1, !tbaa !150
  br label %5258

5258:                                             ; preds = %5285, %5257
  %5259 = load i8, ptr %536, align 1, !tbaa !150, !range !151, !noundef !152
  %5260 = trunc i8 %5259 to i1
  br i1 %5260, label %5262, label %5261

5261:                                             ; preds = %5258
  store i32 156, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %536) #0
  br label %5286

5262:                                             ; preds = %5258
  call void @llvm.lifetime.start.p0(i64 8, ptr %537) #0
  %5263 = load ptr, ptr %505, align 8, !tbaa !5
  %5264 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %5263)
          to label %5265 unwind label %5271

5265:                                             ; preds = %5262
  store ptr %5264, ptr %537, align 8, !tbaa !5
  br label %5266

5266:                                             ; preds = %5278, %5265
  %5267 = load ptr, ptr %537, align 8, !tbaa !5
  %5268 = load i8, ptr %536, align 1, !tbaa !150, !range !151, !noundef !152
  %5269 = trunc i8 %5268 to i1
  br i1 %5269, label %5275, label %5270

5270:                                             ; preds = %5266
  store i32 159, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #0
  br label %5284

5271:                                             ; preds = %5275, %5262
  %5272 = landingpad { ptr, i32 }
          cleanup
  %5273 = extractvalue { ptr, i32 } %5272, 0
  store ptr %5273, ptr %11, align 8
  %5274 = extractvalue { ptr, i32 } %5272, 1
  store i32 %5274, ptr %12, align 4
  br label %5283

5275:                                             ; preds = %5266
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %538)
          to label %5276 unwind label %5271

5276:                                             ; preds = %5275
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %538)
          to label %5277 unwind label %5279

5277:                                             ; preds = %5276
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %538) #0
  br label %5278

5278:                                             ; preds = %5277
  store i8 0, ptr %536, align 1, !tbaa !150
  br label %5266, !llvm.loop !242

5279:                                             ; preds = %5276
  %5280 = landingpad { ptr, i32 }
          cleanup
  %5281 = extractvalue { ptr, i32 } %5280, 0
  store ptr %5281, ptr %11, align 8
  %5282 = extractvalue { ptr, i32 } %5280, 1
  store i32 %5282, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %538) #0
  br label %5283

5283:                                             ; preds = %5279, %5271
  call void @llvm.lifetime.end.p0(i64 8, ptr %537) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %536) #0
  br label %6506

5284:                                             ; preds = %5270
  br label %5285

5285:                                             ; preds = %5284
  store i8 0, ptr %536, align 1, !tbaa !150
  br label %5258, !llvm.loop !243

5286:                                             ; preds = %5261
  br label %6504

5287:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %540) #0
  store i8 1, ptr %540, align 1, !tbaa !150
  br label %5288

5288:                                             ; preds = %5308, %5287
  %5289 = load i8, ptr %540, align 1, !tbaa !150, !range !151, !noundef !152
  %5290 = trunc i8 %5289 to i1
  br i1 %5290, label %5292, label %5291

5291:                                             ; preds = %5288
  store i32 162, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %540) #0
  br label %5309

5292:                                             ; preds = %5288
  call void @llvm.lifetime.start.p0(i64 8, ptr %541) #0
  %5293 = load ptr, ptr %505, align 8, !tbaa !5
  %5294 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %5293)
          to label %5295 unwind label %5301

5295:                                             ; preds = %5292
  store ptr %5294, ptr %541, align 8, !tbaa !5
  br label %5296

5296:                                             ; preds = %5306, %5295
  %5297 = load ptr, ptr %541, align 8, !tbaa !5
  %5298 = load i8, ptr %540, align 1, !tbaa !150, !range !151, !noundef !152
  %5299 = trunc i8 %5298 to i1
  br i1 %5299, label %5305, label %5300

5300:                                             ; preds = %5296
  store i32 165, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %541) #0
  br label %5307

5301:                                             ; preds = %5292
  %5302 = landingpad { ptr, i32 }
          cleanup
  %5303 = extractvalue { ptr, i32 } %5302, 0
  store ptr %5303, ptr %11, align 8
  %5304 = extractvalue { ptr, i32 } %5302, 1
  store i32 %5304, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %541) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %540) #0
  br label %6506

5305:                                             ; preds = %5296
  br label %5306

5306:                                             ; preds = %5305
  store i8 0, ptr %540, align 1, !tbaa !150
  br label %5296, !llvm.loop !244

5307:                                             ; preds = %5300
  br label %5308

5308:                                             ; preds = %5307
  store i8 0, ptr %540, align 1, !tbaa !150
  br label %5288, !llvm.loop !245

5309:                                             ; preds = %5291
  br label %6504

5310:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %542) #0
  store i8 1, ptr %542, align 1, !tbaa !150
  br label %5311

5311:                                             ; preds = %5331, %5310
  %5312 = load i8, ptr %542, align 1, !tbaa !150, !range !151, !noundef !152
  %5313 = trunc i8 %5312 to i1
  br i1 %5313, label %5315, label %5314

5314:                                             ; preds = %5311
  store i32 168, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %542) #0
  br label %5332

5315:                                             ; preds = %5311
  call void @llvm.lifetime.start.p0(i64 8, ptr %543) #0
  %5316 = load ptr, ptr %505, align 8, !tbaa !5
  %5317 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %5316)
          to label %5318 unwind label %5324

5318:                                             ; preds = %5315
  store ptr %5317, ptr %543, align 8, !tbaa !5
  br label %5319

5319:                                             ; preds = %5329, %5318
  %5320 = load ptr, ptr %543, align 8, !tbaa !5
  %5321 = load i8, ptr %542, align 1, !tbaa !150, !range !151, !noundef !152
  %5322 = trunc i8 %5321 to i1
  br i1 %5322, label %5328, label %5323

5323:                                             ; preds = %5319
  store i32 171, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %543) #0
  br label %5330

5324:                                             ; preds = %5315
  %5325 = landingpad { ptr, i32 }
          cleanup
  %5326 = extractvalue { ptr, i32 } %5325, 0
  store ptr %5326, ptr %11, align 8
  %5327 = extractvalue { ptr, i32 } %5325, 1
  store i32 %5327, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %543) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %542) #0
  br label %6506

5328:                                             ; preds = %5319
  br label %5329

5329:                                             ; preds = %5328
  store i8 0, ptr %542, align 1, !tbaa !150
  br label %5319, !llvm.loop !246

5330:                                             ; preds = %5323
  br label %5331

5331:                                             ; preds = %5330
  store i8 0, ptr %542, align 1, !tbaa !150
  br label %5311, !llvm.loop !247

5332:                                             ; preds = %5314
  br label %6504

5333:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %544) #0
  store i8 1, ptr %544, align 1, !tbaa !150
  br label %5334

5334:                                             ; preds = %5354, %5333
  %5335 = load i8, ptr %544, align 1, !tbaa !150, !range !151, !noundef !152
  %5336 = trunc i8 %5335 to i1
  br i1 %5336, label %5338, label %5337

5337:                                             ; preds = %5334
  store i32 174, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %544) #0
  br label %5355

5338:                                             ; preds = %5334
  call void @llvm.lifetime.start.p0(i64 8, ptr %545) #0
  %5339 = load ptr, ptr %505, align 8, !tbaa !5
  %5340 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %5339)
          to label %5341 unwind label %5347

5341:                                             ; preds = %5338
  store ptr %5340, ptr %545, align 8, !tbaa !5
  br label %5342

5342:                                             ; preds = %5352, %5341
  %5343 = load ptr, ptr %545, align 8, !tbaa !5
  %5344 = load i8, ptr %544, align 1, !tbaa !150, !range !151, !noundef !152
  %5345 = trunc i8 %5344 to i1
  br i1 %5345, label %5351, label %5346

5346:                                             ; preds = %5342
  store i32 177, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %545) #0
  br label %5353

5347:                                             ; preds = %5338
  %5348 = landingpad { ptr, i32 }
          cleanup
  %5349 = extractvalue { ptr, i32 } %5348, 0
  store ptr %5349, ptr %11, align 8
  %5350 = extractvalue { ptr, i32 } %5348, 1
  store i32 %5350, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %545) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %544) #0
  br label %6506

5351:                                             ; preds = %5342
  br label %5352

5352:                                             ; preds = %5351
  store i8 0, ptr %544, align 1, !tbaa !150
  br label %5342, !llvm.loop !248

5353:                                             ; preds = %5346
  br label %5354

5354:                                             ; preds = %5353
  store i8 0, ptr %544, align 1, !tbaa !150
  br label %5334, !llvm.loop !249

5355:                                             ; preds = %5337
  br label %6504

5356:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %546) #0
  store i8 1, ptr %546, align 1, !tbaa !150
  br label %5357

5357:                                             ; preds = %5377, %5356
  %5358 = load i8, ptr %546, align 1, !tbaa !150, !range !151, !noundef !152
  %5359 = trunc i8 %5358 to i1
  br i1 %5359, label %5361, label %5360

5360:                                             ; preds = %5357
  store i32 180, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %546) #0
  br label %5378

5361:                                             ; preds = %5357
  call void @llvm.lifetime.start.p0(i64 8, ptr %547) #0
  %5362 = load ptr, ptr %505, align 8, !tbaa !5
  %5363 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %5362)
          to label %5364 unwind label %5370

5364:                                             ; preds = %5361
  store ptr %5363, ptr %547, align 8, !tbaa !5
  br label %5365

5365:                                             ; preds = %5375, %5364
  %5366 = load ptr, ptr %547, align 8, !tbaa !5
  %5367 = load i8, ptr %546, align 1, !tbaa !150, !range !151, !noundef !152
  %5368 = trunc i8 %5367 to i1
  br i1 %5368, label %5374, label %5369

5369:                                             ; preds = %5365
  store i32 183, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %547) #0
  br label %5376

5370:                                             ; preds = %5361
  %5371 = landingpad { ptr, i32 }
          cleanup
  %5372 = extractvalue { ptr, i32 } %5371, 0
  store ptr %5372, ptr %11, align 8
  %5373 = extractvalue { ptr, i32 } %5371, 1
  store i32 %5373, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %547) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %546) #0
  br label %6506

5374:                                             ; preds = %5365
  br label %5375

5375:                                             ; preds = %5374
  store i8 0, ptr %546, align 1, !tbaa !150
  br label %5365, !llvm.loop !250

5376:                                             ; preds = %5369
  br label %5377

5377:                                             ; preds = %5376
  store i8 0, ptr %546, align 1, !tbaa !150
  br label %5357, !llvm.loop !251

5378:                                             ; preds = %5360
  br label %6504

5379:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %548) #0
  store i8 1, ptr %548, align 1, !tbaa !150
  br label %5380

5380:                                             ; preds = %5426, %5379
  %5381 = load i8, ptr %548, align 1, !tbaa !150, !range !151, !noundef !152
  %5382 = trunc i8 %5381 to i1
  br i1 %5382, label %5384, label %5383

5383:                                             ; preds = %5380
  store i32 186, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %548) #0
  br label %5427

5384:                                             ; preds = %5380
  call void @llvm.lifetime.start.p0(i64 8, ptr %549) #0
  %5385 = load ptr, ptr %505, align 8, !tbaa !5
  %5386 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %5385)
          to label %5387 unwind label %5393

5387:                                             ; preds = %5384
  store ptr %5386, ptr %549, align 8, !tbaa !5
  br label %5388

5388:                                             ; preds = %5423, %5387
  %5389 = load ptr, ptr %549, align 8, !tbaa !5
  %5390 = load i8, ptr %548, align 1, !tbaa !150, !range !151, !noundef !152
  %5391 = trunc i8 %5390 to i1
  br i1 %5391, label %5397, label %5392

5392:                                             ; preds = %5388
  store i32 189, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #0
  br label %5425

5393:                                             ; preds = %5402, %5384
  %5394 = landingpad { ptr, i32 }
          cleanup
  %5395 = extractvalue { ptr, i32 } %5394, 0
  store ptr %5395, ptr %11, align 8
  %5396 = extractvalue { ptr, i32 } %5394, 1
  store i32 %5396, ptr %12, align 4
  br label %5424

5397:                                             ; preds = %5388
  %5398 = load ptr, ptr %549, align 8, !tbaa !5
  %5399 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %5398, i32 0, i32 1
  %5400 = load i32, ptr %5399, align 4, !tbaa !140
  %5401 = icmp eq i32 %5400, 2
  br i1 %5401, label %5402, label %5422

5402:                                             ; preds = %5397
  %5403 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %552, ptr noundef nonnull align 8 dereferenceable(32) %5403)
          to label %5404 unwind label %5393

5404:                                             ; preds = %5402
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %551, ptr noundef %552)
          to label %5405 unwind label %5408

5405:                                             ; preds = %5404
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %550, ptr noundef %551)
          to label %5406 unwind label %5412

5406:                                             ; preds = %5405
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %550)
          to label %5407 unwind label %5416

5407:                                             ; preds = %5406
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %552) #0
  br label %5422

5408:                                             ; preds = %5404
  %5409 = landingpad { ptr, i32 }
          cleanup
  %5410 = extractvalue { ptr, i32 } %5409, 0
  store ptr %5410, ptr %11, align 8
  %5411 = extractvalue { ptr, i32 } %5409, 1
  store i32 %5411, ptr %12, align 4
  br label %5421

5412:                                             ; preds = %5405
  %5413 = landingpad { ptr, i32 }
          cleanup
  %5414 = extractvalue { ptr, i32 } %5413, 0
  store ptr %5414, ptr %11, align 8
  %5415 = extractvalue { ptr, i32 } %5413, 1
  store i32 %5415, ptr %12, align 4
  br label %5420

5416:                                             ; preds = %5406
  %5417 = landingpad { ptr, i32 }
          cleanup
  %5418 = extractvalue { ptr, i32 } %5417, 0
  store ptr %5418, ptr %11, align 8
  %5419 = extractvalue { ptr, i32 } %5417, 1
  store i32 %5419, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %550) #0
  br label %5420

5420:                                             ; preds = %5416, %5412
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %551) #0
  br label %5421

5421:                                             ; preds = %5420, %5408
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %552) #0
  br label %5424

5422:                                             ; preds = %5407, %5397
  br label %5423

5423:                                             ; preds = %5422
  store i8 0, ptr %548, align 1, !tbaa !150
  br label %5388, !llvm.loop !252

5424:                                             ; preds = %5421, %5393
  call void @llvm.lifetime.end.p0(i64 8, ptr %549) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %548) #0
  br label %6506

5425:                                             ; preds = %5392
  br label %5426

5426:                                             ; preds = %5425
  store i8 0, ptr %548, align 1, !tbaa !150
  br label %5380, !llvm.loop !253

5427:                                             ; preds = %5383
  br label %6504

5428:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %553) #0
  store i8 1, ptr %553, align 1, !tbaa !150
  br label %5429

5429:                                             ; preds = %5504, %5428
  %5430 = load i8, ptr %553, align 1, !tbaa !150, !range !151, !noundef !152
  %5431 = trunc i8 %5430 to i1
  br i1 %5431, label %5433, label %5432

5432:                                             ; preds = %5429
  store i32 192, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %553) #0
  br label %5505

5433:                                             ; preds = %5429
  call void @llvm.lifetime.start.p0(i64 8, ptr %554) #0
  %5434 = load ptr, ptr %505, align 8, !tbaa !5
  %5435 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %5434)
          to label %5436 unwind label %5442

5436:                                             ; preds = %5433
  store ptr %5435, ptr %554, align 8, !tbaa !5
  br label %5437

5437:                                             ; preds = %5499, %5436
  %5438 = load ptr, ptr %554, align 8, !tbaa !5
  %5439 = load i8, ptr %553, align 1, !tbaa !150, !range !151, !noundef !152
  %5440 = trunc i8 %5439 to i1
  br i1 %5440, label %5446, label %5441

5441:                                             ; preds = %5437
  store i32 195, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #0
  br label %5503

5442:                                             ; preds = %5433
  %5443 = landingpad { ptr, i32 }
          cleanup
  %5444 = extractvalue { ptr, i32 } %5443, 0
  store ptr %5444, ptr %11, align 8
  %5445 = extractvalue { ptr, i32 } %5443, 1
  store i32 %5445, ptr %12, align 4
  br label %5502

5446:                                             ; preds = %5437
  call void @llvm.lifetime.start.p0(i64 32, ptr %555) #0
  %5447 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %556, ptr noundef nonnull align 8 dereferenceable(32) %5447)
          to label %5448 unwind label %5458

5448:                                             ; preds = %5446
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %555, ptr noundef %556)
          to label %5449 unwind label %5462

5449:                                             ; preds = %5448
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %557) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %558, ptr noundef nonnull align 8 dereferenceable(32) %555)
          to label %5450 unwind label %5466

5450:                                             ; preds = %5449
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %557, ptr noundef %558, i32 noundef 0)
          to label %5451 unwind label %5470

5451:                                             ; preds = %5450
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %559) #0
  store i64 0, ptr %559, align 8, !tbaa !144
  br label %5452

5452:                                             ; preds = %5494, %5451
  %5453 = load i64, ptr %559, align 8, !tbaa !144
  %5454 = load ptr, ptr %554, align 8, !tbaa !5
  %5455 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5454) #0
  %5456 = icmp ult i64 %5453, %5455
  br i1 %5456, label %5474, label %5457

5457:                                             ; preds = %5452
  store i32 198, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %559) #0
  br label %5498

5458:                                             ; preds = %5446
  %5459 = landingpad { ptr, i32 }
          cleanup
  %5460 = extractvalue { ptr, i32 } %5459, 0
  store ptr %5460, ptr %11, align 8
  %5461 = extractvalue { ptr, i32 } %5459, 1
  store i32 %5461, ptr %12, align 4
  br label %5501

5462:                                             ; preds = %5448
  %5463 = landingpad { ptr, i32 }
          cleanup
  %5464 = extractvalue { ptr, i32 } %5463, 0
  store ptr %5464, ptr %11, align 8
  %5465 = extractvalue { ptr, i32 } %5463, 1
  store i32 %5465, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #0
  br label %5501

5466:                                             ; preds = %5449
  %5467 = landingpad { ptr, i32 }
          cleanup
  %5468 = extractvalue { ptr, i32 } %5467, 0
  store ptr %5468, ptr %11, align 8
  %5469 = extractvalue { ptr, i32 } %5467, 1
  store i32 %5469, ptr %12, align 4
  br label %5500

5470:                                             ; preds = %5450
  %5471 = landingpad { ptr, i32 }
          cleanup
  %5472 = extractvalue { ptr, i32 } %5471, 0
  store ptr %5472, ptr %11, align 8
  %5473 = extractvalue { ptr, i32 } %5471, 1
  store i32 %5473, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %558) #0
  br label %5500

5474:                                             ; preds = %5452
  %5475 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %5476 = load ptr, ptr %554, align 8, !tbaa !5
  %5477 = load i64, ptr %559, align 8, !tbaa !144
  %5478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5476, i64 noundef %5477) #0
  %5479 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %5475, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %5478)
          to label %5480 unwind label %5484

5480:                                             ; preds = %5474
  br i1 %5479, label %5481, label %5492

5481:                                             ; preds = %5480
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %560, ptr noundef nonnull align 8 dereferenceable(32) %557)
          to label %5482 unwind label %5484

5482:                                             ; preds = %5481
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %560)
          to label %5483 unwind label %5488

5483:                                             ; preds = %5482
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %560) #0
  br label %5492

5484:                                             ; preds = %5492, %5481, %5474
  %5485 = landingpad { ptr, i32 }
          cleanup
  %5486 = extractvalue { ptr, i32 } %5485, 0
  store ptr %5486, ptr %11, align 8
  %5487 = extractvalue { ptr, i32 } %5485, 1
  store i32 %5487, ptr %12, align 4
  br label %5497

5488:                                             ; preds = %5482
  %5489 = landingpad { ptr, i32 }
          cleanup
  %5490 = extractvalue { ptr, i32 } %5489, 0
  store ptr %5490, ptr %11, align 8
  %5491 = extractvalue { ptr, i32 } %5489, 1
  store i32 %5491, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %560) #0
  br label %5497

5492:                                             ; preds = %5483, %5480
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %557)
          to label %5493 unwind label %5484

5493:                                             ; preds = %5492
  br label %5494

5494:                                             ; preds = %5493
  %5495 = load i64, ptr %559, align 8, !tbaa !144
  %5496 = add i64 %5495, 1
  store i64 %5496, ptr %559, align 8, !tbaa !144
  br label %5452, !llvm.loop !254

5497:                                             ; preds = %5488, %5484
  call void @llvm.lifetime.end.p0(i64 8, ptr %559) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %557) #0
  br label %5500

5498:                                             ; preds = %5457
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %557) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %557) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %555) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %555) #0
  br label %5499

5499:                                             ; preds = %5498
  store i8 0, ptr %553, align 1, !tbaa !150
  br label %5437, !llvm.loop !255

5500:                                             ; preds = %5497, %5470, %5466
  call void @llvm.lifetime.end.p0(i64 32, ptr %557) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %555) #0
  br label %5501

5501:                                             ; preds = %5500, %5462, %5458
  call void @llvm.lifetime.end.p0(i64 32, ptr %555) #0
  br label %5502

5502:                                             ; preds = %5501, %5442
  call void @llvm.lifetime.end.p0(i64 8, ptr %554) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %553) #0
  br label %6506

5503:                                             ; preds = %5441
  br label %5504

5504:                                             ; preds = %5503
  store i8 0, ptr %553, align 1, !tbaa !150
  br label %5429, !llvm.loop !256

5505:                                             ; preds = %5432
  br label %6504

5506:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %561) #0
  store i8 1, ptr %561, align 1, !tbaa !150
  br label %5507

5507:                                             ; preds = %5783, %5506
  %5508 = load i8, ptr %561, align 1, !tbaa !150, !range !151, !noundef !152
  %5509 = trunc i8 %5508 to i1
  br i1 %5509, label %5511, label %5510

5510:                                             ; preds = %5507
  store i32 201, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %561) #0
  br label %5784

5511:                                             ; preds = %5507
  call void @llvm.lifetime.start.p0(i64 8, ptr %562) #0
  %5512 = load ptr, ptr %505, align 8, !tbaa !5
  %5513 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %5512)
          to label %5514 unwind label %5520

5514:                                             ; preds = %5511
  store ptr %5513, ptr %562, align 8, !tbaa !5
  br label %5515

5515:                                             ; preds = %5777, %5514
  %5516 = load ptr, ptr %562, align 8, !tbaa !5
  %5517 = load i8, ptr %561, align 1, !tbaa !150, !range !151, !noundef !152
  %5518 = trunc i8 %5517 to i1
  br i1 %5518, label %5524, label %5519

5519:                                             ; preds = %5515
  store i32 204, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %562) #0
  br label %5782

5520:                                             ; preds = %5511
  %5521 = landingpad { ptr, i32 }
          cleanup
  %5522 = extractvalue { ptr, i32 } %5521, 0
  store ptr %5522, ptr %11, align 8
  %5523 = extractvalue { ptr, i32 } %5521, 1
  store i32 %5523, ptr %12, align 4
  br label %5781

5524:                                             ; preds = %5515
  call void @llvm.lifetime.start.p0(i64 8, ptr %563) #0
  %5525 = load ptr, ptr %562, align 8, !tbaa !5
  %5526 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %5525, i32 0, i32 1
  %5527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %5526)
          to label %5528 unwind label %5552

5528:                                             ; preds = %5524
  %5529 = load i64, ptr %5527, align 8, !tbaa !144
  store i64 %5529, ptr %563, align 8, !tbaa !144
  call void @llvm.lifetime.start.p0(i64 32, ptr %564) #0
  %5530 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %565, ptr noundef nonnull align 8 dereferenceable(32) %5530)
          to label %5531 unwind label %5556

5531:                                             ; preds = %5528
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %564, ptr noundef %565)
          to label %5532 unwind label %5560

5532:                                             ; preds = %5531
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %565) #0
  %5533 = load i64, ptr %563, align 8, !tbaa !144
  %5534 = icmp ugt i64 %5533, 0
  br i1 %5534, label %5535, label %5776

5535:                                             ; preds = %5532
  %5536 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %5537 = load ptr, ptr %562, align 8, !tbaa !5
  %5538 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %5537, i32 0, i32 0
  %5539 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %5536, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %5538)
          to label %5540 unwind label %5564

5540:                                             ; preds = %5535
  br i1 %5539, label %5541, label %5776

5541:                                             ; preds = %5540
  %5542 = load i64, ptr %563, align 8, !tbaa !144
  %5543 = icmp ule i64 %5542, 6
  br i1 %5543, label %5544, label %5594

5544:                                             ; preds = %5541
  call void @llvm.lifetime.start.p0(i64 32, ptr %566) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %567, ptr noundef nonnull align 8 dereferenceable(32) %564)
          to label %5545 unwind label %5568

5545:                                             ; preds = %5544
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %566, ptr noundef %567, i32 noundef 0)
          to label %5546 unwind label %5572

5546:                                             ; preds = %5545
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %568) #0
  store i64 0, ptr %568, align 8, !tbaa !144
  br label %5547

5547:                                             ; preds = %5580, %5546
  %5548 = load i64, ptr %568, align 8, !tbaa !144
  %5549 = load i64, ptr %563, align 8, !tbaa !144
  %5550 = icmp ult i64 %5548, %5549
  br i1 %5550, label %5576, label %5551

5551:                                             ; preds = %5547
  store i32 207, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %568) #0
  br label %5592

5552:                                             ; preds = %5524
  %5553 = landingpad { ptr, i32 }
          cleanup
  %5554 = extractvalue { ptr, i32 } %5553, 0
  store ptr %5554, ptr %11, align 8
  %5555 = extractvalue { ptr, i32 } %5553, 1
  store i32 %5555, ptr %12, align 4
  br label %5780

5556:                                             ; preds = %5528
  %5557 = landingpad { ptr, i32 }
          cleanup
  %5558 = extractvalue { ptr, i32 } %5557, 0
  store ptr %5558, ptr %11, align 8
  %5559 = extractvalue { ptr, i32 } %5557, 1
  store i32 %5559, ptr %12, align 4
  br label %5779

5560:                                             ; preds = %5531
  %5561 = landingpad { ptr, i32 }
          cleanup
  %5562 = extractvalue { ptr, i32 } %5561, 0
  store ptr %5562, ptr %11, align 8
  %5563 = extractvalue { ptr, i32 } %5561, 1
  store i32 %5563, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %565) #0
  br label %5779

5564:                                             ; preds = %5535
  %5565 = landingpad { ptr, i32 }
          cleanup
  %5566 = extractvalue { ptr, i32 } %5565, 0
  store ptr %5566, ptr %11, align 8
  %5567 = extractvalue { ptr, i32 } %5565, 1
  store i32 %5567, ptr %12, align 4
  br label %5778

5568:                                             ; preds = %5544
  %5569 = landingpad { ptr, i32 }
          cleanup
  %5570 = extractvalue { ptr, i32 } %5569, 0
  store ptr %5570, ptr %11, align 8
  %5571 = extractvalue { ptr, i32 } %5569, 1
  store i32 %5571, ptr %12, align 4
  br label %5593

5572:                                             ; preds = %5545
  %5573 = landingpad { ptr, i32 }
          cleanup
  %5574 = extractvalue { ptr, i32 } %5573, 0
  store ptr %5574, ptr %11, align 8
  %5575 = extractvalue { ptr, i32 } %5573, 1
  store i32 %5575, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %567) #0
  br label %5593

5576:                                             ; preds = %5547
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %569, ptr noundef nonnull align 8 dereferenceable(32) %566)
          to label %5577 unwind label %5583

5577:                                             ; preds = %5576
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %569)
          to label %5578 unwind label %5587

5578:                                             ; preds = %5577
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %569) #0
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %566)
          to label %5579 unwind label %5583

5579:                                             ; preds = %5578
  br label %5580

5580:                                             ; preds = %5579
  %5581 = load i64, ptr %568, align 8, !tbaa !144
  %5582 = add i64 %5581, 1
  store i64 %5582, ptr %568, align 8, !tbaa !144
  br label %5547, !llvm.loop !257

5583:                                             ; preds = %5578, %5576
  %5584 = landingpad { ptr, i32 }
          cleanup
  %5585 = extractvalue { ptr, i32 } %5584, 0
  store ptr %5585, ptr %11, align 8
  %5586 = extractvalue { ptr, i32 } %5584, 1
  store i32 %5586, ptr %12, align 4
  br label %5591

5587:                                             ; preds = %5577
  %5588 = landingpad { ptr, i32 }
          cleanup
  %5589 = extractvalue { ptr, i32 } %5588, 0
  store ptr %5589, ptr %11, align 8
  %5590 = extractvalue { ptr, i32 } %5588, 1
  store i32 %5590, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %569) #0
  br label %5591

5591:                                             ; preds = %5587, %5583
  call void @llvm.lifetime.end.p0(i64 8, ptr %568) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #0
  br label %5593

5592:                                             ; preds = %5551
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %566) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %566) #0
  br label %5775

5593:                                             ; preds = %5591, %5572, %5568
  call void @llvm.lifetime.end.p0(i64 32, ptr %566) #0
  br label %5778

5594:                                             ; preds = %5541
  call void @llvm.lifetime.start.p0(i64 32, ptr %570) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %571, i32 noundef 0)
          to label %5595 unwind label %5648

5595:                                             ; preds = %5594
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %570, ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %571)
          to label %5596 unwind label %5652

5596:                                             ; preds = %5595
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %572) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %573, ptr noundef nonnull align 8 dereferenceable(32) %564)
          to label %5597 unwind label %5656

5597:                                             ; preds = %5596
  %5598 = invoke noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %570)
          to label %5599 unwind label %5660

5599:                                             ; preds = %5597
  invoke void @_ZN3MIR6LValue9new_IndexES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %572, ptr noundef %573, i32 noundef %5598)
          to label %5600 unwind label %5660

5600:                                             ; preds = %5599
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %573) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %574) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %575, i32 noundef 14)
          to label %5601 unwind label %5664

5601:                                             ; preds = %5600
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %574, ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %575)
          to label %5602 unwind label %5668

5602:                                             ; preds = %5601
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %575) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %576, ptr noundef nonnull align 8 dereferenceable(32) %570)
          to label %5603 unwind label %5672

5603:                                             ; preds = %5602
  %5604 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %579, i32 0, i32 0
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %5604, i64 noundef 0, i64 noundef 0)
          to label %5605 unwind label %5676

5605:                                             ; preds = %5603
  %5606 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %579, i32 0, i32 1
  store i32 0, ptr %5606, align 8, !tbaa !258
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %578, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %579)
          to label %5607 unwind label %5676

5607:                                             ; preds = %5605
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %577, ptr noundef %578)
          to label %5608 unwind label %5680

5608:                                             ; preds = %5607
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %576, ptr noundef %577)
          to label %5609 unwind label %5684

5609:                                             ; preds = %5608
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %577) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %578) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %576) #0
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %580, i32 noundef 1)
          to label %5610 unwind label %5672

5610:                                             ; preds = %5609
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %580)
          to label %5611 unwind label %5690

5611:                                             ; preds = %5610
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %580) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %581, ptr noundef nonnull align 8 dereferenceable(32) %572)
          to label %5612 unwind label %5672

5612:                                             ; preds = %5611
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %581)
          to label %5613 unwind label %5694

5613:                                             ; preds = %5612
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %582, ptr noundef nonnull align 8 dereferenceable(32) %570)
          to label %5614 unwind label %5672

5614:                                             ; preds = %5613
  %5615 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %584, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %585, ptr noundef nonnull align 8 dereferenceable(32) %570)
          to label %5616 unwind label %5698

5616:                                             ; preds = %5614
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %5615, ptr noundef %585)
          to label %5617 unwind label %5702

5617:                                             ; preds = %5616
  store i1 true, ptr %588, align 1
  %5618 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %584, i32 0, i32 1
  store i32 0, ptr %5618, align 8, !tbaa !262
  %5619 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %584, i32 0, i32 2
  %5620 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %587, i32 0, i32 0
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %5620, i64 noundef 1, i64 noundef 0)
          to label %5621 unwind label %5706

5621:                                             ; preds = %5617
  %5622 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %587, i32 0, i32 1
  store i32 0, ptr %5622, align 8, !tbaa !258
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %586, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %587)
          to label %5623 unwind label %5706

5623:                                             ; preds = %5621
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %5619, ptr noundef %586)
          to label %5624 unwind label %5710

5624:                                             ; preds = %5623
  store i1 false, ptr %588, align 1
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %583, ptr noundef %584)
          to label %5625 unwind label %5714

5625:                                             ; preds = %5624
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %582, ptr noundef %583)
          to label %5626 unwind label %5718

5626:                                             ; preds = %5625
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %583) #0
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %584) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %586) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %585) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %589, ptr noundef nonnull align 8 dereferenceable(32) %574)
          to label %5627 unwind label %5672

5627:                                             ; preds = %5626
  %5628 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %591, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %592, ptr noundef nonnull align 8 dereferenceable(32) %570)
          to label %5629 unwind label %5730

5629:                                             ; preds = %5627
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %5628, ptr noundef %592)
          to label %5630 unwind label %5734

5630:                                             ; preds = %5629
  store i1 true, ptr %595, align 1
  %5631 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %591, i32 0, i32 1
  store i32 14, ptr %5631, align 8, !tbaa !262
  %5632 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %591, i32 0, i32 2
  %5633 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %594, i32 0, i32 0
  %5634 = load i64, ptr %563, align 8, !tbaa !144
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %5633, i64 noundef %5634, i64 noundef 0)
          to label %5635 unwind label %5738

5635:                                             ; preds = %5630
  %5636 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %594, i32 0, i32 1
  store i32 0, ptr %5636, align 8, !tbaa !258
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %593, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %594)
          to label %5637 unwind label %5738

5637:                                             ; preds = %5635
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %5632, ptr noundef %593)
          to label %5638 unwind label %5742

5638:                                             ; preds = %5637
  store i1 false, ptr %595, align 1
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %590, ptr noundef %591)
          to label %5639 unwind label %5746

5639:                                             ; preds = %5638
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %589, ptr noundef %590)
          to label %5640 unwind label %5750

5640:                                             ; preds = %5639
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %590) #0
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %591) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %593) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %589) #0
  %5641 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %597, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %5641, ptr noundef nonnull align 8 dereferenceable(32) %574)
          to label %5642 unwind label %5672

5642:                                             ; preds = %5640
  %5643 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %597, i32 0, i32 1
  store i32 1, ptr %5643, align 8, !tbaa !267
  %5644 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %597, i32 0, i32 2
  store i32 2, ptr %5644, align 4, !tbaa !269
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %596, ptr noundef %597)
          to label %5645 unwind label %5762

5645:                                             ; preds = %5642
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %596)
          to label %5646 unwind label %5766

5646:                                             ; preds = %5645
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %596) #0
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %597) #0
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %488)
          to label %5647 unwind label %5672

5647:                                             ; preds = %5646
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %572) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %570) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %570) #0
  br label %5775

5648:                                             ; preds = %5594
  %5649 = landingpad { ptr, i32 }
          cleanup
  %5650 = extractvalue { ptr, i32 } %5649, 0
  store ptr %5650, ptr %11, align 8
  %5651 = extractvalue { ptr, i32 } %5649, 1
  store i32 %5651, ptr %12, align 4
  br label %5774

5652:                                             ; preds = %5595
  %5653 = landingpad { ptr, i32 }
          cleanup
  %5654 = extractvalue { ptr, i32 } %5653, 0
  store ptr %5654, ptr %11, align 8
  %5655 = extractvalue { ptr, i32 } %5653, 1
  store i32 %5655, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %571) #0
  br label %5774

5656:                                             ; preds = %5596
  %5657 = landingpad { ptr, i32 }
          cleanup
  %5658 = extractvalue { ptr, i32 } %5657, 0
  store ptr %5658, ptr %11, align 8
  %5659 = extractvalue { ptr, i32 } %5657, 1
  store i32 %5659, ptr %12, align 4
  br label %5773

5660:                                             ; preds = %5599, %5597
  %5661 = landingpad { ptr, i32 }
          cleanup
  %5662 = extractvalue { ptr, i32 } %5661, 0
  store ptr %5662, ptr %11, align 8
  %5663 = extractvalue { ptr, i32 } %5661, 1
  store i32 %5663, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %573) #0
  br label %5773

5664:                                             ; preds = %5600
  %5665 = landingpad { ptr, i32 }
          cleanup
  %5666 = extractvalue { ptr, i32 } %5665, 0
  store ptr %5666, ptr %11, align 8
  %5667 = extractvalue { ptr, i32 } %5665, 1
  store i32 %5667, ptr %12, align 4
  br label %5772

5668:                                             ; preds = %5601
  %5669 = landingpad { ptr, i32 }
          cleanup
  %5670 = extractvalue { ptr, i32 } %5669, 0
  store ptr %5670, ptr %11, align 8
  %5671 = extractvalue { ptr, i32 } %5669, 1
  store i32 %5671, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %575) #0
  br label %5772

5672:                                             ; preds = %5646, %5640, %5626, %5613, %5611, %5609, %5602
  %5673 = landingpad { ptr, i32 }
          cleanup
  %5674 = extractvalue { ptr, i32 } %5673, 0
  store ptr %5674, ptr %11, align 8
  %5675 = extractvalue { ptr, i32 } %5673, 1
  store i32 %5675, ptr %12, align 4
  br label %5771

5676:                                             ; preds = %5605, %5603
  %5677 = landingpad { ptr, i32 }
          cleanup
  %5678 = extractvalue { ptr, i32 } %5677, 0
  store ptr %5678, ptr %11, align 8
  %5679 = extractvalue { ptr, i32 } %5677, 1
  store i32 %5679, ptr %12, align 4
  br label %5689

5680:                                             ; preds = %5607
  %5681 = landingpad { ptr, i32 }
          cleanup
  %5682 = extractvalue { ptr, i32 } %5681, 0
  store ptr %5682, ptr %11, align 8
  %5683 = extractvalue { ptr, i32 } %5681, 1
  store i32 %5683, ptr %12, align 4
  br label %5688

5684:                                             ; preds = %5608
  %5685 = landingpad { ptr, i32 }
          cleanup
  %5686 = extractvalue { ptr, i32 } %5685, 0
  store ptr %5686, ptr %11, align 8
  %5687 = extractvalue { ptr, i32 } %5685, 1
  store i32 %5687, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %577) #0
  br label %5688

5688:                                             ; preds = %5684, %5680
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %578) #0
  br label %5689

5689:                                             ; preds = %5688, %5676
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %576) #0
  br label %5771

5690:                                             ; preds = %5610
  %5691 = landingpad { ptr, i32 }
          cleanup
  %5692 = extractvalue { ptr, i32 } %5691, 0
  store ptr %5692, ptr %11, align 8
  %5693 = extractvalue { ptr, i32 } %5691, 1
  store i32 %5693, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %580) #0
  br label %5771

5694:                                             ; preds = %5612
  %5695 = landingpad { ptr, i32 }
          cleanup
  %5696 = extractvalue { ptr, i32 } %5695, 0
  store ptr %5696, ptr %11, align 8
  %5697 = extractvalue { ptr, i32 } %5695, 1
  store i32 %5697, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %581) #0
  br label %5771

5698:                                             ; preds = %5614
  %5699 = landingpad { ptr, i32 }
          cleanup
  %5700 = extractvalue { ptr, i32 } %5699, 0
  store ptr %5700, ptr %11, align 8
  %5701 = extractvalue { ptr, i32 } %5699, 1
  store i32 %5701, ptr %12, align 4
  br label %5729

5702:                                             ; preds = %5616
  %5703 = landingpad { ptr, i32 }
          cleanup
  %5704 = extractvalue { ptr, i32 } %5703, 0
  store ptr %5704, ptr %11, align 8
  %5705 = extractvalue { ptr, i32 } %5703, 1
  store i32 %5705, ptr %12, align 4
  br label %5728

5706:                                             ; preds = %5621, %5617
  %5707 = landingpad { ptr, i32 }
          cleanup
  %5708 = extractvalue { ptr, i32 } %5707, 0
  store ptr %5708, ptr %11, align 8
  %5709 = extractvalue { ptr, i32 } %5707, 1
  store i32 %5709, ptr %12, align 4
  br label %5724

5710:                                             ; preds = %5623
  %5711 = landingpad { ptr, i32 }
          cleanup
  %5712 = extractvalue { ptr, i32 } %5711, 0
  store ptr %5712, ptr %11, align 8
  %5713 = extractvalue { ptr, i32 } %5711, 1
  store i32 %5713, ptr %12, align 4
  br label %5723

5714:                                             ; preds = %5624
  %5715 = landingpad { ptr, i32 }
          cleanup
  %5716 = extractvalue { ptr, i32 } %5715, 0
  store ptr %5716, ptr %11, align 8
  %5717 = extractvalue { ptr, i32 } %5715, 1
  store i32 %5717, ptr %12, align 4
  br label %5722

5718:                                             ; preds = %5625
  %5719 = landingpad { ptr, i32 }
          cleanup
  %5720 = extractvalue { ptr, i32 } %5719, 0
  store ptr %5720, ptr %11, align 8
  %5721 = extractvalue { ptr, i32 } %5719, 1
  store i32 %5721, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %583) #0
  br label %5722

5722:                                             ; preds = %5718, %5714
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %584) #0
  br label %5723

5723:                                             ; preds = %5722, %5710
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %586) #0
  br label %5724

5724:                                             ; preds = %5723, %5706
  %5725 = load i1, ptr %588, align 1
  br i1 %5725, label %5726, label %5727

5726:                                             ; preds = %5724
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %5615) #0
  br label %5727

5727:                                             ; preds = %5726, %5724
  br label %5728

5728:                                             ; preds = %5727, %5702
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %585) #0
  br label %5729

5729:                                             ; preds = %5728, %5698
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %582) #0
  br label %5771

5730:                                             ; preds = %5627
  %5731 = landingpad { ptr, i32 }
          cleanup
  %5732 = extractvalue { ptr, i32 } %5731, 0
  store ptr %5732, ptr %11, align 8
  %5733 = extractvalue { ptr, i32 } %5731, 1
  store i32 %5733, ptr %12, align 4
  br label %5761

5734:                                             ; preds = %5629
  %5735 = landingpad { ptr, i32 }
          cleanup
  %5736 = extractvalue { ptr, i32 } %5735, 0
  store ptr %5736, ptr %11, align 8
  %5737 = extractvalue { ptr, i32 } %5735, 1
  store i32 %5737, ptr %12, align 4
  br label %5760

5738:                                             ; preds = %5635, %5630
  %5739 = landingpad { ptr, i32 }
          cleanup
  %5740 = extractvalue { ptr, i32 } %5739, 0
  store ptr %5740, ptr %11, align 8
  %5741 = extractvalue { ptr, i32 } %5739, 1
  store i32 %5741, ptr %12, align 4
  br label %5756

5742:                                             ; preds = %5637
  %5743 = landingpad { ptr, i32 }
          cleanup
  %5744 = extractvalue { ptr, i32 } %5743, 0
  store ptr %5744, ptr %11, align 8
  %5745 = extractvalue { ptr, i32 } %5743, 1
  store i32 %5745, ptr %12, align 4
  br label %5755

5746:                                             ; preds = %5638
  %5747 = landingpad { ptr, i32 }
          cleanup
  %5748 = extractvalue { ptr, i32 } %5747, 0
  store ptr %5748, ptr %11, align 8
  %5749 = extractvalue { ptr, i32 } %5747, 1
  store i32 %5749, ptr %12, align 4
  br label %5754

5750:                                             ; preds = %5639
  %5751 = landingpad { ptr, i32 }
          cleanup
  %5752 = extractvalue { ptr, i32 } %5751, 0
  store ptr %5752, ptr %11, align 8
  %5753 = extractvalue { ptr, i32 } %5751, 1
  store i32 %5753, ptr %12, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %590) #0
  br label %5754

5754:                                             ; preds = %5750, %5746
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %591) #0
  br label %5755

5755:                                             ; preds = %5754, %5742
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %593) #0
  br label %5756

5756:                                             ; preds = %5755, %5738
  %5757 = load i1, ptr %595, align 1
  br i1 %5757, label %5758, label %5759

5758:                                             ; preds = %5756
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %5628) #0
  br label %5759

5759:                                             ; preds = %5758, %5756
  br label %5760

5760:                                             ; preds = %5759, %5734
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #0
  br label %5761

5761:                                             ; preds = %5760, %5730
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %589) #0
  br label %5771

5762:                                             ; preds = %5642
  %5763 = landingpad { ptr, i32 }
          cleanup
  %5764 = extractvalue { ptr, i32 } %5763, 0
  store ptr %5764, ptr %11, align 8
  %5765 = extractvalue { ptr, i32 } %5763, 1
  store i32 %5765, ptr %12, align 4
  br label %5770

5766:                                             ; preds = %5645
  %5767 = landingpad { ptr, i32 }
          cleanup
  %5768 = extractvalue { ptr, i32 } %5767, 0
  store ptr %5768, ptr %11, align 8
  %5769 = extractvalue { ptr, i32 } %5767, 1
  store i32 %5769, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %596) #0
  br label %5770

5770:                                             ; preds = %5766, %5762
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %597) #0
  br label %5771

5771:                                             ; preds = %5770, %5761, %5729, %5694, %5690, %5689, %5672
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %574) #0
  br label %5772

5772:                                             ; preds = %5771, %5668, %5664
  call void @llvm.lifetime.end.p0(i64 32, ptr %574) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %572) #0
  br label %5773

5773:                                             ; preds = %5772, %5660, %5656
  call void @llvm.lifetime.end.p0(i64 32, ptr %572) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %570) #0
  br label %5774

5774:                                             ; preds = %5773, %5652, %5648
  call void @llvm.lifetime.end.p0(i64 32, ptr %570) #0
  br label %5778

5775:                                             ; preds = %5647, %5592
  br label %5776

5776:                                             ; preds = %5775, %5540, %5532
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %564) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %564) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %563) #0
  br label %5777

5777:                                             ; preds = %5776
  store i8 0, ptr %561, align 1, !tbaa !150
  br label %5515, !llvm.loop !270

5778:                                             ; preds = %5774, %5593, %5564
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %564) #0
  br label %5779

5779:                                             ; preds = %5778, %5560, %5556
  call void @llvm.lifetime.end.p0(i64 32, ptr %564) #0
  br label %5780

5780:                                             ; preds = %5779, %5552
  call void @llvm.lifetime.end.p0(i64 8, ptr %563) #0
  br label %5781

5781:                                             ; preds = %5780, %5520
  call void @llvm.lifetime.end.p0(i64 8, ptr %562) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %561) #0
  br label %6506

5782:                                             ; preds = %5519
  br label %5783

5783:                                             ; preds = %5782
  store i8 0, ptr %561, align 1, !tbaa !150
  br label %5507, !llvm.loop !271

5784:                                             ; preds = %5510
  br label %6504

5785:                                             ; preds = %4975
  call void @llvm.lifetime.start.p0(i64 1, ptr %598) #0
  store i8 1, ptr %598, align 1, !tbaa !150
  br label %5786

5786:                                             ; preds = %6502, %5785
  %5787 = load i8, ptr %598, align 1, !tbaa !150, !range !151, !noundef !152
  %5788 = trunc i8 %5787 to i1
  br i1 %5788, label %5790, label %5789

5789:                                             ; preds = %5786
  store i32 210, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %598) #0
  br label %6503

5790:                                             ; preds = %5786
  call void @llvm.lifetime.start.p0(i64 8, ptr %599) #0
  %5791 = load ptr, ptr %505, align 8, !tbaa !5
  %5792 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %5791)
          to label %5793 unwind label %5799

5793:                                             ; preds = %5790
  store ptr %5792, ptr %599, align 8, !tbaa !5
  br label %5794

5794:                                             ; preds = %6498, %5793
  %5795 = load ptr, ptr %599, align 8, !tbaa !5
  %5796 = load i8, ptr %598, align 1, !tbaa !150, !range !151, !noundef !152
  %5797 = trunc i8 %5796 to i1
  br i1 %5797, label %5803, label %5798

5798:                                             ; preds = %5794
  store i32 213, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %599) #0
  br label %6501

5799:                                             ; preds = %5790
  %5800 = landingpad { ptr, i32 }
          cleanup
  %5801 = extractvalue { ptr, i32 } %5800, 0
  store ptr %5801, ptr %11, align 8
  %5802 = extractvalue { ptr, i32 } %5800, 1
  store i32 %5802, ptr %12, align 4
  br label %6500

5803:                                             ; preds = %5794
  call void @llvm.lifetime.start.p0(i64 1, ptr %600) #0
  store i8 0, ptr %600, align 1, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 1, ptr %601) #0
  store i8 1, ptr %601, align 1, !tbaa !150
  br label %5804

5804:                                             ; preds = %6327, %5803
  %5805 = load i8, ptr %601, align 1, !tbaa !150, !range !151, !noundef !152
  %5806 = trunc i8 %5805 to i1
  br i1 %5806, label %5808, label %5807

5807:                                             ; preds = %5804
  store i32 216, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %601) #0
  br label %6328

5808:                                             ; preds = %5804
  call void @llvm.lifetime.start.p0(i64 8, ptr %602) #0
  %5809 = load ptr, ptr %599, align 8, !tbaa !5
  %5810 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %5809, i32 0, i32 1
  store ptr %5810, ptr %602, align 8, !tbaa !5
  br label %5811

5811:                                             ; preds = %6324, %5808
  %5812 = load i8, ptr %601, align 1, !tbaa !150, !range !151, !noundef !152
  %5813 = trunc i8 %5812 to i1
  br i1 %5813, label %5815, label %5814

5814:                                             ; preds = %5811
  store i32 219, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %602) #0
  br label %6326

5815:                                             ; preds = %5811
  %5816 = load ptr, ptr %602, align 8, !tbaa !5
  %5817 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %5816)
          to label %5818 unwind label %5819

5818:                                             ; preds = %5815
  switch i32 %5817, label %6323 [
    i32 0, label %5823
    i32 1, label %5824
    i32 2, label %5848
    i32 3, label %5872
    i32 4, label %5895
    i32 5, label %6061
    i32 6, label %6094
  ]

5819:                                             ; preds = %5815
  %5820 = landingpad { ptr, i32 }
          cleanup
  %5821 = extractvalue { ptr, i32 } %5820, 0
  store ptr %5821, ptr %11, align 8
  %5822 = extractvalue { ptr, i32 } %5820, 1
  store i32 %5822, ptr %12, align 4
  br label %6325

5823:                                             ; preds = %5818
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.9, i32 noundef 1048, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

5824:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %603) #0
  store i8 1, ptr %603, align 1, !tbaa !150
  br label %5825

5825:                                             ; preds = %5846, %5824
  %5826 = load i8, ptr %603, align 1, !tbaa !150, !range !151, !noundef !152
  %5827 = trunc i8 %5826 to i1
  br i1 %5827, label %5829, label %5828

5828:                                             ; preds = %5825
  store i32 223, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %603) #0
  br label %5847

5829:                                             ; preds = %5825
  call void @llvm.lifetime.start.p0(i64 8, ptr %604) #0
  %5830 = load ptr, ptr %602, align 8, !tbaa !5
  %5831 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %5830)
          to label %5832 unwind label %5838

5832:                                             ; preds = %5829
  store ptr %5831, ptr %604, align 8, !tbaa !5
  br label %5833

5833:                                             ; preds = %5844, %5832
  %5834 = load ptr, ptr %604, align 8, !tbaa !5
  %5835 = load i8, ptr %603, align 1, !tbaa !150, !range !151, !noundef !152
  %5836 = trunc i8 %5835 to i1
  br i1 %5836, label %5842, label %5837

5837:                                             ; preds = %5833
  store i32 226, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #0
  br label %5845

5838:                                             ; preds = %5842, %5829
  %5839 = landingpad { ptr, i32 }
          cleanup
  %5840 = extractvalue { ptr, i32 } %5839, 0
  store ptr %5840, ptr %11, align 8
  %5841 = extractvalue { ptr, i32 } %5839, 1
  store i32 %5841, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %604) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %603) #0
  br label %6325

5842:                                             ; preds = %5833
  %5843 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.34, ptr %5843, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %5843, ptr @_ZTIPKc, ptr null) #13
          to label %6584 unwind label %5838

5844:                                             ; No predecessors!
  store i8 0, ptr %603, align 1, !tbaa !150
  br label %5833, !llvm.loop !272

5845:                                             ; preds = %5837
  br label %5846

5846:                                             ; preds = %5845
  store i8 0, ptr %603, align 1, !tbaa !150
  br label %5825, !llvm.loop !273

5847:                                             ; preds = %5828
  br label %6323

5848:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %605) #0
  store i8 1, ptr %605, align 1, !tbaa !150
  br label %5849

5849:                                             ; preds = %5870, %5848
  %5850 = load i8, ptr %605, align 1, !tbaa !150, !range !151, !noundef !152
  %5851 = trunc i8 %5850 to i1
  br i1 %5851, label %5853, label %5852

5852:                                             ; preds = %5849
  store i32 229, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %605) #0
  br label %5871

5853:                                             ; preds = %5849
  call void @llvm.lifetime.start.p0(i64 8, ptr %606) #0
  %5854 = load ptr, ptr %602, align 8, !tbaa !5
  %5855 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %5854)
          to label %5856 unwind label %5862

5856:                                             ; preds = %5853
  store ptr %5855, ptr %606, align 8, !tbaa !5
  br label %5857

5857:                                             ; preds = %5868, %5856
  %5858 = load ptr, ptr %606, align 8, !tbaa !5
  %5859 = load i8, ptr %605, align 1, !tbaa !150, !range !151, !noundef !152
  %5860 = trunc i8 %5859 to i1
  br i1 %5860, label %5866, label %5861

5861:                                             ; preds = %5857
  store i32 232, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %606) #0
  br label %5869

5862:                                             ; preds = %5866, %5853
  %5863 = landingpad { ptr, i32 }
          cleanup
  %5864 = extractvalue { ptr, i32 } %5863, 0
  store ptr %5864, ptr %11, align 8
  %5865 = extractvalue { ptr, i32 } %5863, 1
  store i32 %5865, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %606) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %605) #0
  br label %6325

5866:                                             ; preds = %5857
  %5867 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.34, ptr %5867, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %5867, ptr @_ZTIPKc, ptr null) #13
          to label %6584 unwind label %5862

5868:                                             ; No predecessors!
  store i8 0, ptr %605, align 1, !tbaa !150
  br label %5857, !llvm.loop !274

5869:                                             ; preds = %5861
  br label %5870

5870:                                             ; preds = %5869
  store i8 0, ptr %605, align 1, !tbaa !150
  br label %5849, !llvm.loop !275

5871:                                             ; preds = %5852
  br label %6323

5872:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %607) #0
  store i8 1, ptr %607, align 1, !tbaa !150
  br label %5873

5873:                                             ; preds = %5893, %5872
  %5874 = load i8, ptr %607, align 1, !tbaa !150, !range !151, !noundef !152
  %5875 = trunc i8 %5874 to i1
  br i1 %5875, label %5877, label %5876

5876:                                             ; preds = %5873
  store i32 235, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %607) #0
  br label %5894

5877:                                             ; preds = %5873
  call void @llvm.lifetime.start.p0(i64 8, ptr %608) #0
  %5878 = load ptr, ptr %602, align 8, !tbaa !5
  %5879 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %5878)
          to label %5880 unwind label %5886

5880:                                             ; preds = %5877
  store ptr %5879, ptr %608, align 8, !tbaa !5
  br label %5881

5881:                                             ; preds = %5891, %5880
  %5882 = load ptr, ptr %608, align 8, !tbaa !5
  %5883 = load i8, ptr %607, align 1, !tbaa !150, !range !151, !noundef !152
  %5884 = trunc i8 %5883 to i1
  br i1 %5884, label %5890, label %5885

5885:                                             ; preds = %5881
  store i32 238, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %608) #0
  br label %5892

5886:                                             ; preds = %5877
  %5887 = landingpad { ptr, i32 }
          cleanup
  %5888 = extractvalue { ptr, i32 } %5887, 0
  store ptr %5888, ptr %11, align 8
  %5889 = extractvalue { ptr, i32 } %5887, 1
  store i32 %5889, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %608) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %607) #0
  br label %6325

5890:                                             ; preds = %5881
  br label %5891

5891:                                             ; preds = %5890
  store i8 0, ptr %607, align 1, !tbaa !150
  br label %5881, !llvm.loop !276

5892:                                             ; preds = %5885
  br label %5893

5893:                                             ; preds = %5892
  store i8 0, ptr %607, align 1, !tbaa !150
  br label %5873, !llvm.loop !277

5894:                                             ; preds = %5876
  br label %6323

5895:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %609) #0
  store i8 1, ptr %609, align 1, !tbaa !150
  br label %5896

5896:                                             ; preds = %6059, %5895
  %5897 = load i8, ptr %609, align 1, !tbaa !150, !range !151, !noundef !152
  %5898 = trunc i8 %5897 to i1
  br i1 %5898, label %5900, label %5899

5899:                                             ; preds = %5896
  store i32 241, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %609) #0
  br label %6060

5900:                                             ; preds = %5896
  call void @llvm.lifetime.start.p0(i64 8, ptr %610) #0
  %5901 = load ptr, ptr %602, align 8, !tbaa !5
  %5902 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %5901)
          to label %5903 unwind label %5909

5903:                                             ; preds = %5900
  store ptr %5902, ptr %610, align 8, !tbaa !5
  br label %5904

5904:                                             ; preds = %6056, %5903
  %5905 = load ptr, ptr %610, align 8, !tbaa !5
  %5906 = load i8, ptr %609, align 1, !tbaa !150, !range !151, !noundef !152
  %5907 = trunc i8 %5906 to i1
  br i1 %5907, label %5913, label %5908

5908:                                             ; preds = %5904
  store i32 244, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #0
  br label %6058

5909:                                             ; preds = %5945, %5934, %5932, %5929, %5926, %5923, %5920, %5900
  %5910 = landingpad { ptr, i32 }
          cleanup
  %5911 = extractvalue { ptr, i32 } %5910, 0
  store ptr %5911, ptr %11, align 8
  %5912 = extractvalue { ptr, i32 } %5910, 1
  store i32 %5912, ptr %12, align 4
  br label %6057

5913:                                             ; preds = %5904
  %5914 = load ptr, ptr %610, align 8, !tbaa !5
  %5915 = load ptr, ptr %5914, align 8, !tbaa !5
  %5916 = getelementptr inbounds %"class.HIR::Struct", ptr %5915, i32 0, i32 6
  %5917 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %5916, i32 0, i32 1
  %5918 = load i8, ptr %5917, align 1, !tbaa !278, !range !151, !noundef !152
  %5919 = trunc i8 %5918 to i1
  br i1 %5919, label %5920, label %5923

5920:                                             ; preds = %5913
  %5921 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef nonnull align 8 dereferenceable(8) %5921)
          to label %5922 unwind label %5909

5922:                                             ; preds = %5920
  store i8 1, ptr %600, align 1, !tbaa !150
  br label %5923

5923:                                             ; preds = %5922, %5913
  %5924 = load ptr, ptr %471, align 8, !tbaa !5
  %5925 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %5924)
          to label %5926 unwind label %5909

5926:                                             ; preds = %5923
  %5927 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %5925)
          to label %5928 unwind label %5909

5928:                                             ; preds = %5926
  br i1 %5927, label %5929, label %5962

5929:                                             ; preds = %5928
  %5930 = load ptr, ptr %471, align 8, !tbaa !5
  %5931 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %5930)
          to label %5932 unwind label %5909

5932:                                             ; preds = %5929
  %5933 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %5931)
          to label %5934 unwind label %5909

5934:                                             ; preds = %5932
  %5935 = invoke noundef zeroext i1 @_ZNK3HIR13TypeData_Path12is_generatorEv(ptr noundef nonnull align 8 dereferenceable(112) %5933)
          to label %5936 unwind label %5909

5936:                                             ; preds = %5934
  br i1 %5935, label %5937, label %5962

5937:                                             ; preds = %5936
  br label %5938

5938:                                             ; preds = %5937
  %5939 = load i8, ptr %600, align 1, !tbaa !150, !range !151, !noundef !152
  %5940 = trunc i8 %5939 to i1
  br i1 %5940, label %5959, label %5941

5941:                                             ; preds = %5938
  call void @llvm.lifetime.start.p0(i64 8, ptr %611) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5942 unwind label %5946

5942:                                             ; preds = %5941
  call void @llvm.lifetime.start.p0(i64 1, ptr %613) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %612, ptr noundef nonnull align 1 dereferenceable(1) %613) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef %612)
          to label %5943 unwind label %5950

5943:                                             ; preds = %5942
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %612) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #0
  %5944 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5944, ptr noundef @.str.10)
          to label %5945 unwind label %5955

5945:                                             ; preds = %5943
  invoke void @__cxa_throw(ptr %5944, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5909

5946:                                             ; preds = %5941
  %5947 = landingpad { ptr, i32 }
          cleanup
  %5948 = extractvalue { ptr, i32 } %5947, 0
  store ptr %5948, ptr %11, align 8
  %5949 = extractvalue { ptr, i32 } %5947, 1
  store i32 %5949, ptr %12, align 4
  br label %5954

5950:                                             ; preds = %5942
  %5951 = landingpad { ptr, i32 }
          cleanup
  %5952 = extractvalue { ptr, i32 } %5951, 0
  store ptr %5952, ptr %11, align 8
  %5953 = extractvalue { ptr, i32 } %5951, 1
  store i32 %5953, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %612) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %613) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %611) #0
  br label %5954

5954:                                             ; preds = %5950, %5946
  call void @llvm.lifetime.end.p0(i64 8, ptr %611) #0
  br label %6057

5955:                                             ; preds = %5943
  %5956 = landingpad { ptr, i32 }
          cleanup
  %5957 = extractvalue { ptr, i32 } %5956, 0
  store ptr %5957, ptr %11, align 8
  %5958 = extractvalue { ptr, i32 } %5956, 1
  store i32 %5958, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5944) #0
  br label %6057

5959:                                             ; preds = %5938
  br label %5960

5960:                                             ; preds = %5959
  br label %5961

5961:                                             ; preds = %5960
  br label %6055

5962:                                             ; preds = %5936, %5928
  call void @llvm.lifetime.start.p0(i64 8, ptr %614) #0
  %5963 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %5964 = load ptr, ptr %471, align 8, !tbaa !5
  %5965 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(424) %5963, ptr noundef nonnull align 8 dereferenceable(8) %5964)
          to label %5966 unwind label %5977

5966:                                             ; preds = %5962
  store ptr %5965, ptr %614, align 8, !tbaa !5
  br label %5967

5967:                                             ; preds = %5966
  %5968 = load ptr, ptr %614, align 8, !tbaa !5
  %5969 = icmp ne ptr %5968, null
  br i1 %5969, label %5994, label %5970

5970:                                             ; preds = %5967
  call void @llvm.lifetime.start.p0(i64 8, ptr %615) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %615, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %5971 unwind label %5981

5971:                                             ; preds = %5970
  call void @llvm.lifetime.start.p0(i64 8, ptr %617) #0
  %5972 = getelementptr inbounds %class.anon.615, ptr %617, i32 0, i32 0
  %5973 = load ptr, ptr %471, align 8, !tbaa !5
  store ptr %5973, ptr %5972, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %616, ptr noundef nonnull align 8 dereferenceable(8) %617) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %615, ptr noundef %616)
          to label %5974 unwind label %5985

5974:                                             ; preds = %5971
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %616) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %617) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #0
  %5975 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5975, ptr noundef @.str.10)
          to label %5976 unwind label %5990

5976:                                             ; preds = %5974
  invoke void @__cxa_throw(ptr %5975, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %5977

5977:                                             ; preds = %5976, %5962
  %5978 = landingpad { ptr, i32 }
          cleanup
  %5979 = extractvalue { ptr, i32 } %5978, 0
  store ptr %5979, ptr %11, align 8
  %5980 = extractvalue { ptr, i32 } %5978, 1
  store i32 %5980, ptr %12, align 4
  br label %6054

5981:                                             ; preds = %5970
  %5982 = landingpad { ptr, i32 }
          cleanup
  %5983 = extractvalue { ptr, i32 } %5982, 0
  store ptr %5983, ptr %11, align 8
  %5984 = extractvalue { ptr, i32 } %5982, 1
  store i32 %5984, ptr %12, align 4
  br label %5989

5985:                                             ; preds = %5971
  %5986 = landingpad { ptr, i32 }
          cleanup
  %5987 = extractvalue { ptr, i32 } %5986, 0
  store ptr %5987, ptr %11, align 8
  %5988 = extractvalue { ptr, i32 } %5986, 1
  store i32 %5988, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %616) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %617) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %615) #0
  br label %5989

5989:                                             ; preds = %5985, %5981
  call void @llvm.lifetime.end.p0(i64 8, ptr %615) #0
  br label %6054

5990:                                             ; preds = %5974
  %5991 = landingpad { ptr, i32 }
          cleanup
  %5992 = extractvalue { ptr, i32 } %5991, 0
  store ptr %5992, ptr %11, align 8
  %5993 = extractvalue { ptr, i32 } %5991, 1
  store i32 %5993, ptr %12, align 4
  call void @__cxa_free_exception(ptr %5975) #0
  br label %6054

5994:                                             ; preds = %5967
  br label %5995

5995:                                             ; preds = %5994
  br label %5996

5996:                                             ; preds = %5995
  call void @llvm.lifetime.start.p0(i64 32, ptr %618) #0
  %5997 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %619, ptr noundef nonnull align 8 dereferenceable(32) %5997)
          to label %5998 unwind label %6009

5998:                                             ; preds = %5996
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %618, ptr noundef %619)
          to label %5999 unwind label %6013

5999:                                             ; preds = %5998
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %619) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %620) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %621, ptr noundef nonnull align 8 dereferenceable(32) %618)
          to label %6000 unwind label %6017

6000:                                             ; preds = %5999
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %620, ptr noundef %621, i32 noundef 0)
          to label %6001 unwind label %6021

6001:                                             ; preds = %6000
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %621) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %622) #0
  store i64 0, ptr %622, align 8, !tbaa !144
  br label %6002

6002:                                             ; preds = %6047, %6001
  %6003 = load i64, ptr %622, align 8, !tbaa !144
  %6004 = load ptr, ptr %614, align 8, !tbaa !5
  %6005 = getelementptr inbounds %struct.TypeRepr, ptr %6004, i32 0, i32 3
  %6006 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6005) #0
  %6007 = icmp ult i64 %6003, %6006
  br i1 %6007, label %6025, label %6008

6008:                                             ; preds = %6002
  store i32 251, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %622) #0
  br label %6051

6009:                                             ; preds = %5996
  %6010 = landingpad { ptr, i32 }
          cleanup
  %6011 = extractvalue { ptr, i32 } %6010, 0
  store ptr %6011, ptr %11, align 8
  %6012 = extractvalue { ptr, i32 } %6010, 1
  store i32 %6012, ptr %12, align 4
  br label %6053

6013:                                             ; preds = %5998
  %6014 = landingpad { ptr, i32 }
          cleanup
  %6015 = extractvalue { ptr, i32 } %6014, 0
  store ptr %6015, ptr %11, align 8
  %6016 = extractvalue { ptr, i32 } %6014, 1
  store i32 %6016, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %619) #0
  br label %6053

6017:                                             ; preds = %5999
  %6018 = landingpad { ptr, i32 }
          cleanup
  %6019 = extractvalue { ptr, i32 } %6018, 0
  store ptr %6019, ptr %11, align 8
  %6020 = extractvalue { ptr, i32 } %6018, 1
  store i32 %6020, ptr %12, align 4
  br label %6052

6021:                                             ; preds = %6000
  %6022 = landingpad { ptr, i32 }
          cleanup
  %6023 = extractvalue { ptr, i32 } %6022, 0
  store ptr %6023, ptr %11, align 8
  %6024 = extractvalue { ptr, i32 } %6022, 1
  store i32 %6024, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %621) #0
  br label %6052

6025:                                             ; preds = %6002
  %6026 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %6027 = load ptr, ptr %614, align 8, !tbaa !5
  %6028 = getelementptr inbounds %struct.TypeRepr, ptr %6027, i32 0, i32 3
  %6029 = load i64, ptr %622, align 8, !tbaa !144
  %6030 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6028, i64 noundef %6029) #0
  %6031 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %6030, i32 0, i32 1
  %6032 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %6026, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %6031)
          to label %6033 unwind label %6037

6033:                                             ; preds = %6025
  br i1 %6032, label %6034, label %6045

6034:                                             ; preds = %6033
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %623, ptr noundef nonnull align 8 dereferenceable(32) %620)
          to label %6035 unwind label %6037

6035:                                             ; preds = %6034
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %623)
          to label %6036 unwind label %6041

6036:                                             ; preds = %6035
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %623) #0
  br label %6045

6037:                                             ; preds = %6045, %6034, %6025
  %6038 = landingpad { ptr, i32 }
          cleanup
  %6039 = extractvalue { ptr, i32 } %6038, 0
  store ptr %6039, ptr %11, align 8
  %6040 = extractvalue { ptr, i32 } %6038, 1
  store i32 %6040, ptr %12, align 4
  br label %6050

6041:                                             ; preds = %6035
  %6042 = landingpad { ptr, i32 }
          cleanup
  %6043 = extractvalue { ptr, i32 } %6042, 0
  store ptr %6043, ptr %11, align 8
  %6044 = extractvalue { ptr, i32 } %6042, 1
  store i32 %6044, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %623) #0
  br label %6050

6045:                                             ; preds = %6036, %6033
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %620)
          to label %6046 unwind label %6037

6046:                                             ; preds = %6045
  br label %6047

6047:                                             ; preds = %6046
  %6048 = load i64, ptr %622, align 8, !tbaa !144
  %6049 = add i64 %6048, 1
  store i64 %6049, ptr %622, align 8, !tbaa !144
  br label %6002, !llvm.loop !293

6050:                                             ; preds = %6041, %6037
  call void @llvm.lifetime.end.p0(i64 8, ptr %622) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %620) #0
  br label %6052

6051:                                             ; preds = %6008
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %620) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %620) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %618) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %614) #0
  br label %6055

6052:                                             ; preds = %6050, %6021, %6017
  call void @llvm.lifetime.end.p0(i64 32, ptr %620) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %618) #0
  br label %6053

6053:                                             ; preds = %6052, %6013, %6009
  call void @llvm.lifetime.end.p0(i64 32, ptr %618) #0
  br label %6054

6054:                                             ; preds = %6053, %5990, %5989, %5977
  call void @llvm.lifetime.end.p0(i64 8, ptr %614) #0
  br label %6057

6055:                                             ; preds = %6051, %5961
  br label %6056

6056:                                             ; preds = %6055
  store i8 0, ptr %609, align 1, !tbaa !150
  br label %5904, !llvm.loop !294

6057:                                             ; preds = %6054, %5955, %5954, %5909
  call void @llvm.lifetime.end.p0(i64 8, ptr %610) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %609) #0
  br label %6325

6058:                                             ; preds = %5908
  br label %6059

6059:                                             ; preds = %6058
  store i8 0, ptr %609, align 1, !tbaa !150
  br label %5896, !llvm.loop !295

6060:                                             ; preds = %5899
  br label %6323

6061:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %624) #0
  store i8 1, ptr %624, align 1, !tbaa !150
  br label %6062

6062:                                             ; preds = %6092, %6061
  %6063 = load i8, ptr %624, align 1, !tbaa !150, !range !151, !noundef !152
  %6064 = trunc i8 %6063 to i1
  br i1 %6064, label %6066, label %6065

6065:                                             ; preds = %6062
  store i32 254, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %624) #0
  br label %6093

6066:                                             ; preds = %6062
  call void @llvm.lifetime.start.p0(i64 8, ptr %625) #0
  %6067 = load ptr, ptr %602, align 8, !tbaa !5
  %6068 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %6067)
          to label %6069 unwind label %6075

6069:                                             ; preds = %6066
  store ptr %6068, ptr %625, align 8, !tbaa !5
  br label %6070

6070:                                             ; preds = %6090, %6069
  %6071 = load ptr, ptr %625, align 8, !tbaa !5
  %6072 = load i8, ptr %624, align 1, !tbaa !150, !range !151, !noundef !152
  %6073 = trunc i8 %6072 to i1
  br i1 %6073, label %6079, label %6074

6074:                                             ; preds = %6070
  store i32 257, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #0
  br label %6091

6075:                                             ; preds = %6086, %6066
  %6076 = landingpad { ptr, i32 }
          cleanup
  %6077 = extractvalue { ptr, i32 } %6076, 0
  store ptr %6077, ptr %11, align 8
  %6078 = extractvalue { ptr, i32 } %6076, 1
  store i32 %6078, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %625) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %624) #0
  br label %6325

6079:                                             ; preds = %6070
  %6080 = load ptr, ptr %625, align 8, !tbaa !5
  %6081 = load ptr, ptr %6080, align 8, !tbaa !5
  %6082 = getelementptr inbounds %"class.HIR::Union", ptr %6081, i32 0, i32 3
  %6083 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %6082, i32 0, i32 1
  %6084 = load i8, ptr %6083, align 1, !tbaa !296, !range !151, !noundef !152
  %6085 = trunc i8 %6084 to i1
  br i1 %6085, label %6086, label %6089

6086:                                             ; preds = %6079
  %6087 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef nonnull align 8 dereferenceable(8) %6087)
          to label %6088 unwind label %6075

6088:                                             ; preds = %6086
  store i8 1, ptr %600, align 1, !tbaa !150
  br label %6089

6089:                                             ; preds = %6088, %6079
  br label %6090

6090:                                             ; preds = %6089
  store i8 0, ptr %624, align 1, !tbaa !150
  br label %6070, !llvm.loop !303

6091:                                             ; preds = %6074
  br label %6092

6092:                                             ; preds = %6091
  store i8 0, ptr %624, align 1, !tbaa !150
  br label %6062, !llvm.loop !304

6093:                                             ; preds = %6065
  br label %6323

6094:                                             ; preds = %5818
  call void @llvm.lifetime.start.p0(i64 1, ptr %626) #0
  store i8 1, ptr %626, align 1, !tbaa !150
  br label %6095

6095:                                             ; preds = %6321, %6094
  %6096 = load i8, ptr %626, align 1, !tbaa !150, !range !151, !noundef !152
  %6097 = trunc i8 %6096 to i1
  br i1 %6097, label %6099, label %6098

6098:                                             ; preds = %6095
  store i32 260, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %626) #0
  br label %6322

6099:                                             ; preds = %6095
  call void @llvm.lifetime.start.p0(i64 8, ptr %627) #0
  %6100 = load ptr, ptr %602, align 8, !tbaa !5
  %6101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %6100)
          to label %6102 unwind label %6108

6102:                                             ; preds = %6099
  store ptr %6101, ptr %627, align 8, !tbaa !5
  br label %6103

6103:                                             ; preds = %6318, %6102
  %6104 = load ptr, ptr %627, align 8, !tbaa !5
  %6105 = load i8, ptr %626, align 1, !tbaa !150, !range !151, !noundef !152
  %6106 = trunc i8 %6105 to i1
  br i1 %6106, label %6112, label %6107

6107:                                             ; preds = %6103
  store i32 263, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %627) #0
  br label %6320

6108:                                             ; preds = %6119, %6099
  %6109 = landingpad { ptr, i32 }
          cleanup
  %6110 = extractvalue { ptr, i32 } %6109, 0
  store ptr %6110, ptr %11, align 8
  %6111 = extractvalue { ptr, i32 } %6109, 1
  store i32 %6111, ptr %12, align 4
  br label %6319

6112:                                             ; preds = %6103
  %6113 = load ptr, ptr %627, align 8, !tbaa !5
  %6114 = load ptr, ptr %6113, align 8, !tbaa !5
  %6115 = getelementptr inbounds %"class.HIR::Enum", ptr %6114, i32 0, i32 4
  %6116 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %6115, i32 0, i32 1
  %6117 = load i8, ptr %6116, align 1, !tbaa !305, !range !151, !noundef !152
  %6118 = trunc i8 %6117 to i1
  br i1 %6118, label %6119, label %6122

6119:                                             ; preds = %6112
  %6120 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef nonnull align 8 dereferenceable(8) %6120)
          to label %6121 unwind label %6108

6121:                                             ; preds = %6119
  store i8 1, ptr %600, align 1, !tbaa !150
  br label %6122

6122:                                             ; preds = %6121, %6112
  call void @llvm.lifetime.start.p0(i64 8, ptr %628) #0
  %6123 = load ptr, ptr %627, align 8, !tbaa !5
  %6124 = load ptr, ptr %6123, align 8, !tbaa !5
  store ptr %6124, ptr %628, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %629) #0
  store i8 1, ptr %629, align 1, !tbaa !150
  br label %6125

6125:                                             ; preds = %6316, %6122
  %6126 = load i8, ptr %629, align 1, !tbaa !150, !range !151, !noundef !152
  %6127 = trunc i8 %6126 to i1
  br i1 %6127, label %6129, label %6128

6128:                                             ; preds = %6125
  store i32 266, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %629) #0
  br label %6317

6129:                                             ; preds = %6125
  call void @llvm.lifetime.start.p0(i64 8, ptr %630) #0
  %6130 = load ptr, ptr %628, align 8, !tbaa !5
  %6131 = getelementptr inbounds %"class.HIR::Enum", ptr %6130, i32 0, i32 3
  store ptr %6131, ptr %630, align 8, !tbaa !5
  br label %6132

6132:                                             ; preds = %6313, %6129
  %6133 = load i8, ptr %629, align 1, !tbaa !150, !range !151, !noundef !152
  %6134 = trunc i8 %6133 to i1
  br i1 %6134, label %6136, label %6135

6135:                                             ; preds = %6132
  store i32 269, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %630) #0
  br label %6315

6136:                                             ; preds = %6132
  %6137 = load ptr, ptr %630, align 8, !tbaa !5
  %6138 = invoke noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %6137)
          to label %6139 unwind label %6140

6139:                                             ; preds = %6136
  switch i32 %6138, label %6312 [
    i32 0, label %6144
    i32 2, label %6145
    i32 1, label %6175
  ]

6140:                                             ; preds = %6136
  %6141 = landingpad { ptr, i32 }
          cleanup
  %6142 = extractvalue { ptr, i32 } %6141, 0
  store ptr %6142, ptr %11, align 8
  %6143 = extractvalue { ptr, i32 } %6141, 1
  store i32 %6143, ptr %12, align 4
  br label %6314

6144:                                             ; preds = %6139
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.9, i32 noundef 1095, ptr noundef @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #12
  unreachable

6145:                                             ; preds = %6139
  call void @llvm.lifetime.start.p0(i64 1, ptr %631) #0
  store i8 1, ptr %631, align 1, !tbaa !150
  br label %6146

6146:                                             ; preds = %6173, %6145
  %6147 = load i8, ptr %631, align 1, !tbaa !150, !range !151, !noundef !152
  %6148 = trunc i8 %6147 to i1
  br i1 %6148, label %6150, label %6149

6149:                                             ; preds = %6146
  store i32 273, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %631) #0
  br label %6174

6150:                                             ; preds = %6146
  call void @llvm.lifetime.start.p0(i64 8, ptr %632) #0
  %6151 = load ptr, ptr %630, align 8, !tbaa !5
  %6152 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40) %6151)
          to label %6153 unwind label %6159

6153:                                             ; preds = %6150
  store ptr %6152, ptr %632, align 8, !tbaa !5
  br label %6154

6154:                                             ; preds = %6166, %6153
  %6155 = load ptr, ptr %632, align 8, !tbaa !5
  %6156 = load i8, ptr %631, align 1, !tbaa !150, !range !151, !noundef !152
  %6157 = trunc i8 %6156 to i1
  br i1 %6157, label %6163, label %6158

6158:                                             ; preds = %6154
  store i32 276, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %632) #0
  br label %6172

6159:                                             ; preds = %6163, %6150
  %6160 = landingpad { ptr, i32 }
          cleanup
  %6161 = extractvalue { ptr, i32 } %6160, 0
  store ptr %6161, ptr %11, align 8
  %6162 = extractvalue { ptr, i32 } %6160, 1
  store i32 %6162, ptr %12, align 4
  br label %6171

6163:                                             ; preds = %6154
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %633)
          to label %6164 unwind label %6159

6164:                                             ; preds = %6163
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %633)
          to label %6165 unwind label %6167

6165:                                             ; preds = %6164
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %633) #0
  br label %6166

6166:                                             ; preds = %6165
  store i8 0, ptr %631, align 1, !tbaa !150
  br label %6154, !llvm.loop !310

6167:                                             ; preds = %6164
  %6168 = landingpad { ptr, i32 }
          cleanup
  %6169 = extractvalue { ptr, i32 } %6168, 0
  store ptr %6169, ptr %11, align 8
  %6170 = extractvalue { ptr, i32 } %6168, 1
  store i32 %6170, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %633) #0
  br label %6171

6171:                                             ; preds = %6167, %6159
  call void @llvm.lifetime.end.p0(i64 8, ptr %632) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %631) #0
  br label %6314

6172:                                             ; preds = %6158
  br label %6173

6173:                                             ; preds = %6172
  store i8 0, ptr %631, align 1, !tbaa !150
  br label %6146, !llvm.loop !311

6174:                                             ; preds = %6149
  br label %6312

6175:                                             ; preds = %6139
  call void @llvm.lifetime.start.p0(i64 1, ptr %635) #0
  store i8 1, ptr %635, align 1, !tbaa !150
  br label %6176

6176:                                             ; preds = %6310, %6175
  %6177 = load i8, ptr %635, align 1, !tbaa !150, !range !151, !noundef !152
  %6178 = trunc i8 %6177 to i1
  br i1 %6178, label %6180, label %6179

6179:                                             ; preds = %6176
  store i32 279, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %635) #0
  br label %6311

6180:                                             ; preds = %6176
  call void @llvm.lifetime.start.p0(i64 8, ptr %636) #0
  %6181 = load ptr, ptr %630, align 8, !tbaa !5
  %6182 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %6181)
          to label %6183 unwind label %6189

6183:                                             ; preds = %6180
  store ptr %6182, ptr %636, align 8, !tbaa !5
  br label %6184

6184:                                             ; preds = %6303, %6183
  %6185 = load ptr, ptr %636, align 8, !tbaa !5
  %6186 = load i8, ptr %635, align 1, !tbaa !150, !range !151, !noundef !152
  %6187 = trunc i8 %6186 to i1
  br i1 %6187, label %6193, label %6188

6188:                                             ; preds = %6184
  store i32 282, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %636) #0
  br label %6309

6189:                                             ; preds = %6180
  %6190 = landingpad { ptr, i32 }
          cleanup
  %6191 = extractvalue { ptr, i32 } %6190, 0
  store ptr %6191, ptr %11, align 8
  %6192 = extractvalue { ptr, i32 } %6190, 1
  store i32 %6192, ptr %12, align 4
  br label %6308

6193:                                             ; preds = %6184
  call void @llvm.lifetime.start.p0(i64 32, ptr %637) #0
  %6194 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 2
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %638, ptr noundef nonnull align 8 dereferenceable(32) %6194)
          to label %6195 unwind label %6208

6195:                                             ; preds = %6193
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %637, ptr noundef %638)
          to label %6196 unwind label %6212

6196:                                             ; preds = %6195
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %638) #0
  call void @llvm.lifetime.start.p0(i64 56, ptr %639) #0
  invoke void @_ZN3MIR10Terminator11Data_SwitchC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %639)
          to label %6197 unwind label %6216

6197:                                             ; preds = %6196
  call void @llvm.lifetime.start.p0(i64 32, ptr %640) #0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %640, ptr noundef nonnull align 8 dereferenceable(32) %637)
          to label %6198 unwind label %6220

6198:                                             ; preds = %6197
  %6199 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %639, i32 0, i32 0
  %6200 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %6199, ptr noundef nonnull align 8 dereferenceable(32) %640)
          to label %6201 unwind label %6224

6201:                                             ; preds = %6198
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %640) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %640) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %641) #0
  store i64 0, ptr %641, align 8, !tbaa !144
  br label %6202

6202:                                             ; preds = %6239, %6201
  %6203 = load i64, ptr %641, align 8, !tbaa !144
  %6204 = load ptr, ptr %636, align 8, !tbaa !5
  %6205 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6204) #0
  %6206 = icmp ult i64 %6203, %6205
  br i1 %6206, label %6229, label %6207

6207:                                             ; preds = %6202
  store i32 285, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %641) #0
  br label %6246

6208:                                             ; preds = %6193
  %6209 = landingpad { ptr, i32 }
          cleanup
  %6210 = extractvalue { ptr, i32 } %6209, 0
  store ptr %6210, ptr %11, align 8
  %6211 = extractvalue { ptr, i32 } %6209, 1
  store i32 %6211, ptr %12, align 4
  br label %6307

6212:                                             ; preds = %6195
  %6213 = landingpad { ptr, i32 }
          cleanup
  %6214 = extractvalue { ptr, i32 } %6213, 0
  store ptr %6214, ptr %11, align 8
  %6215 = extractvalue { ptr, i32 } %6213, 1
  store i32 %6215, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %638) #0
  br label %6307

6216:                                             ; preds = %6196
  %6217 = landingpad { ptr, i32 }
          cleanup
  %6218 = extractvalue { ptr, i32 } %6217, 0
  store ptr %6218, ptr %11, align 8
  %6219 = extractvalue { ptr, i32 } %6217, 1
  store i32 %6219, ptr %12, align 4
  br label %6306

6220:                                             ; preds = %6197
  %6221 = landingpad { ptr, i32 }
          cleanup
  %6222 = extractvalue { ptr, i32 } %6221, 0
  store ptr %6222, ptr %11, align 8
  %6223 = extractvalue { ptr, i32 } %6221, 1
  store i32 %6223, ptr %12, align 4
  br label %6228

6224:                                             ; preds = %6198
  %6225 = landingpad { ptr, i32 }
          cleanup
  %6226 = extractvalue { ptr, i32 } %6225, 0
  store ptr %6226, ptr %11, align 8
  %6227 = extractvalue { ptr, i32 } %6225, 1
  store i32 %6227, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %640) #0
  br label %6228

6228:                                             ; preds = %6224, %6220
  call void @llvm.lifetime.end.p0(i64 32, ptr %640) #0
  br label %6305

6229:                                             ; preds = %6202
  %6230 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %639, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %642) #0
  %6231 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 1
  %6232 = load ptr, ptr %6231, align 8, !tbaa !312
  %6233 = getelementptr inbounds %"class.MIR::Function", ptr %6232, i32 0, i32 2
  %6234 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6233) #0
  %6235 = load i64, ptr %641, align 8, !tbaa !144
  %6236 = add i64 %6234, %6235
  %6237 = trunc i64 %6236 to i32
  store i32 %6237, ptr %642, align 4, !tbaa !113
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %6230, ptr noundef nonnull align 4 dereferenceable(4) %642)
          to label %6238 unwind label %6242

6238:                                             ; preds = %6229
  call void @llvm.lifetime.end.p0(i64 4, ptr %642) #0
  br label %6239

6239:                                             ; preds = %6238
  %6240 = load i64, ptr %641, align 8, !tbaa !144
  %6241 = add i64 %6240, 1
  store i64 %6241, ptr %641, align 8, !tbaa !144
  br label %6202, !llvm.loop !314

6242:                                             ; preds = %6229
  %6243 = landingpad { ptr, i32 }
          cleanup
  %6244 = extractvalue { ptr, i32 } %6243, 0
  store ptr %6244, ptr %11, align 8
  %6245 = extractvalue { ptr, i32 } %6243, 1
  store i32 %6245, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %642) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %641) #0
  br label %6305

6246:                                             ; preds = %6207
  invoke void @_ZN3MIR10Terminator11Data_SwitchC2EOS1_(ptr noundef nonnull align 8 dereferenceable(56) %644, ptr noundef nonnull align 8 dereferenceable(56) %639)
          to label %6247 unwind label %6258

6247:                                             ; preds = %6246
  invoke void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %643, ptr noundef %644)
          to label %6248 unwind label %6262

6248:                                             ; preds = %6247
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %643)
          to label %6249 unwind label %6266

6249:                                             ; preds = %6248
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %643) #0
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %644) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %645) #0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %646, ptr noundef nonnull align 8 dereferenceable(32) %637)
          to label %6250 unwind label %6271

6250:                                             ; preds = %6249
  invoke void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %645, ptr noundef %646, i32 noundef 0)
          to label %6251 unwind label %6275

6251:                                             ; preds = %6250
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %646) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %647) #0
  store i64 0, ptr %647, align 8, !tbaa !144
  br label %6252

6252:                                             ; preds = %6286, %6251
  %6253 = load i64, ptr %647, align 8, !tbaa !144
  %6254 = load ptr, ptr %636, align 8, !tbaa !5
  %6255 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6254) #0
  %6256 = icmp ult i64 %6253, %6255
  br i1 %6256, label %6279, label %6257

6257:                                             ; preds = %6252
  store i32 288, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %647) #0
  br label %6302

6258:                                             ; preds = %6246
  %6259 = landingpad { ptr, i32 }
          cleanup
  %6260 = extractvalue { ptr, i32 } %6259, 0
  store ptr %6260, ptr %11, align 8
  %6261 = extractvalue { ptr, i32 } %6259, 1
  store i32 %6261, ptr %12, align 4
  br label %6305

6262:                                             ; preds = %6247
  %6263 = landingpad { ptr, i32 }
          cleanup
  %6264 = extractvalue { ptr, i32 } %6263, 0
  store ptr %6264, ptr %11, align 8
  %6265 = extractvalue { ptr, i32 } %6263, 1
  store i32 %6265, ptr %12, align 4
  br label %6270

6266:                                             ; preds = %6248
  %6267 = landingpad { ptr, i32 }
          cleanup
  %6268 = extractvalue { ptr, i32 } %6267, 0
  store ptr %6268, ptr %11, align 8
  %6269 = extractvalue { ptr, i32 } %6267, 1
  store i32 %6269, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %643) #0
  br label %6270

6270:                                             ; preds = %6266, %6262
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %644) #0
  br label %6305

6271:                                             ; preds = %6249
  %6272 = landingpad { ptr, i32 }
          cleanup
  %6273 = extractvalue { ptr, i32 } %6272, 0
  store ptr %6273, ptr %11, align 8
  %6274 = extractvalue { ptr, i32 } %6272, 1
  store i32 %6274, ptr %12, align 4
  br label %6304

6275:                                             ; preds = %6250
  %6276 = landingpad { ptr, i32 }
          cleanup
  %6277 = extractvalue { ptr, i32 } %6276, 0
  store ptr %6277, ptr %11, align 8
  %6278 = extractvalue { ptr, i32 } %6276, 1
  store i32 %6278, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %646) #0
  br label %6304

6279:                                             ; preds = %6252
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %648, ptr noundef nonnull align 8 dereferenceable(32) %645)
          to label %6280 unwind label %6289

6280:                                             ; preds = %6279
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %648)
          to label %6281 unwind label %6293

6281:                                             ; preds = %6280
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %648) #0
  invoke void @_ZN3MIR6LValue12inc_DowncastEv(ptr noundef nonnull align 8 dereferenceable(32) %645)
          to label %6282 unwind label %6289

6282:                                             ; preds = %6281
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %488)
          to label %6283 unwind label %6289

6283:                                             ; preds = %6282
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %649)
          to label %6284 unwind label %6289

6284:                                             ; preds = %6283
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %649)
          to label %6285 unwind label %6297

6285:                                             ; preds = %6284
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %649) #0
  br label %6286

6286:                                             ; preds = %6285
  %6287 = load i64, ptr %647, align 8, !tbaa !144
  %6288 = add i64 %6287, 1
  store i64 %6288, ptr %647, align 8, !tbaa !144
  br label %6252, !llvm.loop !315

6289:                                             ; preds = %6283, %6282, %6281, %6279
  %6290 = landingpad { ptr, i32 }
          cleanup
  %6291 = extractvalue { ptr, i32 } %6290, 0
  store ptr %6291, ptr %11, align 8
  %6292 = extractvalue { ptr, i32 } %6290, 1
  store i32 %6292, ptr %12, align 4
  br label %6301

6293:                                             ; preds = %6280
  %6294 = landingpad { ptr, i32 }
          cleanup
  %6295 = extractvalue { ptr, i32 } %6294, 0
  store ptr %6295, ptr %11, align 8
  %6296 = extractvalue { ptr, i32 } %6294, 1
  store i32 %6296, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %648) #0
  br label %6301

6297:                                             ; preds = %6284
  %6298 = landingpad { ptr, i32 }
          cleanup
  %6299 = extractvalue { ptr, i32 } %6298, 0
  store ptr %6299, ptr %11, align 8
  %6300 = extractvalue { ptr, i32 } %6298, 1
  store i32 %6300, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %649) #0
  br label %6301

6301:                                             ; preds = %6297, %6293, %6289
  call void @llvm.lifetime.end.p0(i64 8, ptr %647) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %645) #0
  br label %6304

6302:                                             ; preds = %6257
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %645) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %645) #0
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %639) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %639) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %637) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %637) #0
  br label %6303

6303:                                             ; preds = %6302
  store i8 0, ptr %635, align 1, !tbaa !150
  br label %6184, !llvm.loop !316

6304:                                             ; preds = %6301, %6275, %6271
  call void @llvm.lifetime.end.p0(i64 32, ptr %645) #0
  br label %6305

6305:                                             ; preds = %6304, %6270, %6258, %6242, %6228
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %639) #0
  br label %6306

6306:                                             ; preds = %6305, %6216
  call void @llvm.lifetime.end.p0(i64 56, ptr %639) #0
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %637) #0
  br label %6307

6307:                                             ; preds = %6306, %6212, %6208
  call void @llvm.lifetime.end.p0(i64 32, ptr %637) #0
  br label %6308

6308:                                             ; preds = %6307, %6189
  call void @llvm.lifetime.end.p0(i64 8, ptr %636) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %635) #0
  br label %6314

6309:                                             ; preds = %6188
  br label %6310

6310:                                             ; preds = %6309
  store i8 0, ptr %635, align 1, !tbaa !150
  br label %6176, !llvm.loop !317

6311:                                             ; preds = %6179
  br label %6312

6312:                                             ; preds = %6311, %6174, %6139
  br label %6313

6313:                                             ; preds = %6312
  store i8 0, ptr %629, align 1, !tbaa !150
  br label %6132, !llvm.loop !318

6314:                                             ; preds = %6308, %6171, %6140
  call void @llvm.lifetime.end.p0(i64 8, ptr %630) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %629) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %628) #0
  br label %6319

6315:                                             ; preds = %6135
  br label %6316

6316:                                             ; preds = %6315
  store i8 0, ptr %629, align 1, !tbaa !150
  br label %6125, !llvm.loop !319

6317:                                             ; preds = %6128
  call void @llvm.lifetime.end.p0(i64 8, ptr %628) #0
  br label %6318

6318:                                             ; preds = %6317
  store i8 0, ptr %626, align 1, !tbaa !150
  br label %6103, !llvm.loop !320

6319:                                             ; preds = %6314, %6108
  call void @llvm.lifetime.end.p0(i64 8, ptr %627) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %626) #0
  br label %6325

6320:                                             ; preds = %6107
  br label %6321

6321:                                             ; preds = %6320
  store i8 0, ptr %626, align 1, !tbaa !150
  br label %6095, !llvm.loop !321

6322:                                             ; preds = %6098
  br label %6323

6323:                                             ; preds = %6322, %6093, %6060, %5894, %5871, %5847, %5818
  br label %6324

6324:                                             ; preds = %6323
  store i8 0, ptr %601, align 1, !tbaa !150
  br label %5811, !llvm.loop !322

6325:                                             ; preds = %6319, %6075, %6057, %5886, %5862, %5838, %5819
  call void @llvm.lifetime.end.p0(i64 8, ptr %602) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %601) #0
  br label %6499

6326:                                             ; preds = %5814
  br label %6327

6327:                                             ; preds = %6326
  store i8 0, ptr %601, align 1, !tbaa !150
  br label %5804, !llvm.loop !323

6328:                                             ; preds = %5807
  %6329 = load i8, ptr %600, align 1, !tbaa !150, !range !151, !noundef !152
  %6330 = trunc i8 %6329 to i1
  br i1 %6330, label %6331, label %6497

6331:                                             ; preds = %6328
  call void @llvm.lifetime.start.p0(i64 8, ptr %651) #0
  %6332 = load ptr, ptr %4, align 8, !tbaa !5
  %6333 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %653, ptr noundef nonnull align 8 dereferenceable(8) %6333)
          to label %6334 unwind label %6371

6334:                                             ; preds = %6331
  %6335 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %6336 = getelementptr inbounds i8, ptr %6335, i64 8
  %6337 = getelementptr inbounds %struct.TraitResolveCommon, ptr %6336, i32 0, i32 7
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef nonnull align 8 dereferenceable(8) %6337)
          to label %6338 unwind label %6375

6338:                                             ; preds = %6334
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %654, ptr noundef %655)
          to label %6339 unwind label %6379

6339:                                             ; preds = %6338
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %656, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_dropE)
          to label %6340 unwind label %6383

6340:                                             ; preds = %6339
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %657)
          to label %6341 unwind label %6387

6341:                                             ; preds = %6340
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %652, ptr noundef %653, ptr noundef %654, ptr noundef %656, ptr noundef %657)
          to label %6342 unwind label %6391

6342:                                             ; preds = %6341
  %6343 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %6332, ptr noundef %652)
          to label %6344 unwind label %6395

6344:                                             ; preds = %6342
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %652) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %657) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %656) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %654) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %653) #0
  store ptr %6343, ptr %651, align 8, !tbaa !5
  %6345 = load ptr, ptr %651, align 8, !tbaa !5
  %6346 = icmp ne ptr %6345, null
  br i1 %6346, label %6347, label %6495

6347:                                             ; preds = %6344
  call void @llvm.lifetime.start.p0(i64 144, ptr %658) #0
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %658)
          to label %6348 unwind label %6404

6348:                                             ; preds = %6347
  call void @llvm.lifetime.start.p0(i64 88, ptr %659) #0
  %6349 = load ptr, ptr %471, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %660, ptr noundef nonnull align 8 dereferenceable(8) %6349)
          to label %6350 unwind label %6408

6350:                                             ; preds = %6348
  %6351 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  %6352 = getelementptr inbounds i8, ptr %6351, i64 8
  %6353 = getelementptr inbounds %struct.TraitResolveCommon, ptr %6352, i32 0, i32 7
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef nonnull align 8 dereferenceable(8) %6353)
          to label %6354 unwind label %6412

6354:                                             ; preds = %6350
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %661, ptr noundef %662)
          to label %6355 unwind label %6416

6355:                                             ; preds = %6354
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %663, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_dropE)
          to label %6356 unwind label %6420

6356:                                             ; preds = %6355
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %664)
          to label %6357 unwind label %6424

6357:                                             ; preds = %6356
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %659, ptr noundef %660, ptr noundef %661, ptr noundef %663, ptr noundef %664)
          to label %6358 unwind label %6428

6358:                                             ; preds = %6357
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %664) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %663) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %662) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %660) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %665) #0
  %6359 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %665, ptr noundef nonnull align 8 dereferenceable(424) %6359, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(88) %659, ptr noundef nonnull align 8 dereferenceable(144) %658, i1 noundef zeroext false, ptr noundef null)
          to label %6360 unwind label %6436

6360:                                             ; preds = %6358
  br label %6361

6361:                                             ; preds = %6360
  %6362 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %665)
          to label %6363 unwind label %6440

6363:                                             ; preds = %6361
  br i1 %6362, label %6457, label %6364

6364:                                             ; preds = %6363
  call void @llvm.lifetime.start.p0(i64 8, ptr %666) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %6365 unwind label %6444

6365:                                             ; preds = %6364
  call void @llvm.lifetime.start.p0(i64 16, ptr %668) #0
  %6366 = getelementptr inbounds %class.anon.626, ptr %668, i32 0, i32 0
  store ptr %665, ptr %6366, align 8, !tbaa !5
  %6367 = getelementptr inbounds %class.anon.626, ptr %668, i32 0, i32 1
  store ptr %659, ptr %6367, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %667, ptr noundef nonnull align 8 dereferenceable(16) %668) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef %667)
          to label %6368 unwind label %6448

6368:                                             ; preds = %6365
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %667) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %668) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %666) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %666) #0
  %6369 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %6369, ptr noundef @.str.10)
          to label %6370 unwind label %6453

6370:                                             ; preds = %6368
  invoke void @__cxa_throw(ptr %6369, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %6440

6371:                                             ; preds = %6331
  %6372 = landingpad { ptr, i32 }
          cleanup
  %6373 = extractvalue { ptr, i32 } %6372, 0
  store ptr %6373, ptr %11, align 8
  %6374 = extractvalue { ptr, i32 } %6372, 1
  store i32 %6374, ptr %12, align 4
  br label %6496

6375:                                             ; preds = %6334
  %6376 = landingpad { ptr, i32 }
          cleanup
  %6377 = extractvalue { ptr, i32 } %6376, 0
  store ptr %6377, ptr %11, align 8
  %6378 = extractvalue { ptr, i32 } %6376, 1
  store i32 %6378, ptr %12, align 4
  br label %6403

6379:                                             ; preds = %6338
  %6380 = landingpad { ptr, i32 }
          cleanup
  %6381 = extractvalue { ptr, i32 } %6380, 0
  store ptr %6381, ptr %11, align 8
  %6382 = extractvalue { ptr, i32 } %6380, 1
  store i32 %6382, ptr %12, align 4
  br label %6402

6383:                                             ; preds = %6339
  %6384 = landingpad { ptr, i32 }
          cleanup
  %6385 = extractvalue { ptr, i32 } %6384, 0
  store ptr %6385, ptr %11, align 8
  %6386 = extractvalue { ptr, i32 } %6384, 1
  store i32 %6386, ptr %12, align 4
  br label %6401

6387:                                             ; preds = %6340
  %6388 = landingpad { ptr, i32 }
          cleanup
  %6389 = extractvalue { ptr, i32 } %6388, 0
  store ptr %6389, ptr %11, align 8
  %6390 = extractvalue { ptr, i32 } %6388, 1
  store i32 %6390, ptr %12, align 4
  br label %6400

6391:                                             ; preds = %6341
  %6392 = landingpad { ptr, i32 }
          cleanup
  %6393 = extractvalue { ptr, i32 } %6392, 0
  store ptr %6393, ptr %11, align 8
  %6394 = extractvalue { ptr, i32 } %6392, 1
  store i32 %6394, ptr %12, align 4
  br label %6399

6395:                                             ; preds = %6342
  %6396 = landingpad { ptr, i32 }
          cleanup
  %6397 = extractvalue { ptr, i32 } %6396, 0
  store ptr %6397, ptr %11, align 8
  %6398 = extractvalue { ptr, i32 } %6396, 1
  store i32 %6398, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %652) #0
  br label %6399

6399:                                             ; preds = %6395, %6391
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %657) #0
  br label %6400

6400:                                             ; preds = %6399, %6387
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %656) #0
  br label %6401

6401:                                             ; preds = %6400, %6383
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %654) #0
  br label %6402

6402:                                             ; preds = %6401, %6379
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %655) #0
  br label %6403

6403:                                             ; preds = %6402, %6375
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %653) #0
  br label %6496

6404:                                             ; preds = %6347
  %6405 = landingpad { ptr, i32 }
          cleanup
  %6406 = extractvalue { ptr, i32 } %6405, 0
  store ptr %6406, ptr %11, align 8
  %6407 = extractvalue { ptr, i32 } %6405, 1
  store i32 %6407, ptr %12, align 4
  br label %6494

6408:                                             ; preds = %6348
  %6409 = landingpad { ptr, i32 }
          cleanup
  %6410 = extractvalue { ptr, i32 } %6409, 0
  store ptr %6410, ptr %11, align 8
  %6411 = extractvalue { ptr, i32 } %6409, 1
  store i32 %6411, ptr %12, align 4
  br label %6493

6412:                                             ; preds = %6350
  %6413 = landingpad { ptr, i32 }
          cleanup
  %6414 = extractvalue { ptr, i32 } %6413, 0
  store ptr %6414, ptr %11, align 8
  %6415 = extractvalue { ptr, i32 } %6413, 1
  store i32 %6415, ptr %12, align 4
  br label %6435

6416:                                             ; preds = %6354
  %6417 = landingpad { ptr, i32 }
          cleanup
  %6418 = extractvalue { ptr, i32 } %6417, 0
  store ptr %6418, ptr %11, align 8
  %6419 = extractvalue { ptr, i32 } %6417, 1
  store i32 %6419, ptr %12, align 4
  br label %6434

6420:                                             ; preds = %6355
  %6421 = landingpad { ptr, i32 }
          cleanup
  %6422 = extractvalue { ptr, i32 } %6421, 0
  store ptr %6422, ptr %11, align 8
  %6423 = extractvalue { ptr, i32 } %6421, 1
  store i32 %6423, ptr %12, align 4
  br label %6433

6424:                                             ; preds = %6356
  %6425 = landingpad { ptr, i32 }
          cleanup
  %6426 = extractvalue { ptr, i32 } %6425, 0
  store ptr %6426, ptr %11, align 8
  %6427 = extractvalue { ptr, i32 } %6425, 1
  store i32 %6427, ptr %12, align 4
  br label %6432

6428:                                             ; preds = %6357
  %6429 = landingpad { ptr, i32 }
          cleanup
  %6430 = extractvalue { ptr, i32 } %6429, 0
  store ptr %6430, ptr %11, align 8
  %6431 = extractvalue { ptr, i32 } %6429, 1
  store i32 %6431, ptr %12, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %664) #0
  br label %6432

6432:                                             ; preds = %6428, %6424
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %663) #0
  br label %6433

6433:                                             ; preds = %6432, %6420
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %661) #0
  br label %6434

6434:                                             ; preds = %6433, %6416
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %662) #0
  br label %6435

6435:                                             ; preds = %6434, %6412
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %660) #0
  br label %6493

6436:                                             ; preds = %6358
  %6437 = landingpad { ptr, i32 }
          cleanup
  %6438 = extractvalue { ptr, i32 } %6437, 0
  store ptr %6438, ptr %11, align 8
  %6439 = extractvalue { ptr, i32 } %6437, 1
  store i32 %6439, ptr %12, align 4
  br label %6492

6440:                                             ; preds = %6483, %6467, %6460, %6370, %6361
  %6441 = landingpad { ptr, i32 }
          cleanup
  %6442 = extractvalue { ptr, i32 } %6441, 0
  store ptr %6442, ptr %11, align 8
  %6443 = extractvalue { ptr, i32 } %6441, 1
  store i32 %6443, ptr %12, align 4
  br label %6491

6444:                                             ; preds = %6364
  %6445 = landingpad { ptr, i32 }
          cleanup
  %6446 = extractvalue { ptr, i32 } %6445, 0
  store ptr %6446, ptr %11, align 8
  %6447 = extractvalue { ptr, i32 } %6445, 1
  store i32 %6447, ptr %12, align 4
  br label %6452

6448:                                             ; preds = %6365
  %6449 = landingpad { ptr, i32 }
          cleanup
  %6450 = extractvalue { ptr, i32 } %6449, 0
  store ptr %6450, ptr %11, align 8
  %6451 = extractvalue { ptr, i32 } %6449, 1
  store i32 %6451, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %667) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %668) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %666) #0
  br label %6452

6452:                                             ; preds = %6448, %6444
  call void @llvm.lifetime.end.p0(i64 8, ptr %666) #0
  br label %6491

6453:                                             ; preds = %6368
  %6454 = landingpad { ptr, i32 }
          cleanup
  %6455 = extractvalue { ptr, i32 } %6454, 0
  store ptr %6455, ptr %11, align 8
  %6456 = extractvalue { ptr, i32 } %6454, 1
  store i32 %6456, ptr %12, align 4
  call void @__cxa_free_exception(ptr %6369) #0
  br label %6491

6457:                                             ; preds = %6363
  br label %6458

6458:                                             ; preds = %6457
  br label %6459

6459:                                             ; preds = %6458
  br label %6460

6460:                                             ; preds = %6459
  %6461 = invoke noundef zeroext i1 @_ZNK14MonomorphState9has_typesEv(ptr noundef nonnull align 8 dereferenceable(144) %658)
          to label %6462 unwind label %6440

6462:                                             ; preds = %6460
  br i1 %6461, label %6463, label %6481

6463:                                             ; preds = %6462
  call void @llvm.lifetime.start.p0(i64 8, ptr %669) #0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %6464 unwind label %6468

6464:                                             ; preds = %6463
  call void @llvm.lifetime.start.p0(i64 1, ptr %671) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %670, ptr noundef nonnull align 1 dereferenceable(1) %671) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef %670)
          to label %6465 unwind label %6472

6465:                                             ; preds = %6464
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %669) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %669) #0
  %6466 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %6466, ptr noundef @.str.10)
          to label %6467 unwind label %6477

6467:                                             ; preds = %6465
  invoke void @__cxa_throw(ptr %6466, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %6584 unwind label %6440

6468:                                             ; preds = %6463
  %6469 = landingpad { ptr, i32 }
          cleanup
  %6470 = extractvalue { ptr, i32 } %6469, 0
  store ptr %6470, ptr %11, align 8
  %6471 = extractvalue { ptr, i32 } %6469, 1
  store i32 %6471, ptr %12, align 4
  br label %6476

6472:                                             ; preds = %6464
  %6473 = landingpad { ptr, i32 }
          cleanup
  %6474 = extractvalue { ptr, i32 } %6473, 0
  store ptr %6474, ptr %11, align 8
  %6475 = extractvalue { ptr, i32 } %6473, 1
  store i32 %6475, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %671) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %669) #0
  br label %6476

6476:                                             ; preds = %6472, %6468
  call void @llvm.lifetime.end.p0(i64 8, ptr %669) #0
  br label %6491

6477:                                             ; preds = %6465
  %6478 = landingpad { ptr, i32 }
          cleanup
  %6479 = extractvalue { ptr, i32 } %6478, 0
  store ptr %6479, ptr %11, align 8
  %6480 = extractvalue { ptr, i32 } %6478, 1
  store i32 %6480, ptr %12, align 4
  call void @__cxa_free_exception(ptr %6466) #0
  br label %6491

6481:                                             ; preds = %6462
  br label %6482

6482:                                             ; preds = %6481
  br label %6483

6483:                                             ; preds = %6482
  %6484 = load ptr, ptr %651, align 8, !tbaa !5
  %6485 = getelementptr inbounds %struct.TransList_Function, ptr %6484, i32 0, i32 4
  store i8 1, ptr %6485, align 8, !tbaa !324
  %6486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %665)
          to label %6487 unwind label %6440

6487:                                             ; preds = %6483
  %6488 = load ptr, ptr %6486, align 8, !tbaa !5
  %6489 = load ptr, ptr %651, align 8, !tbaa !5
  %6490 = getelementptr inbounds %struct.TransList_Function, ptr %6489, i32 0, i32 1
  store ptr %6488, ptr %6490, align 8, !tbaa !13
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %665) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %665) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %659) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %659) #0
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %658) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %658) #0
  br label %6495

6491:                                             ; preds = %6477, %6476, %6453, %6452, %6440
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %665) #0
  br label %6492

6492:                                             ; preds = %6491, %6436
  call void @llvm.lifetime.end.p0(i64 24, ptr %665) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %659) #0
  br label %6493

6493:                                             ; preds = %6492, %6435, %6408
  call void @llvm.lifetime.end.p0(i64 88, ptr %659) #0
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %658) #0
  br label %6494

6494:                                             ; preds = %6493, %6404
  call void @llvm.lifetime.end.p0(i64 144, ptr %658) #0
  br label %6496

6495:                                             ; preds = %6487, %6344
  call void @llvm.lifetime.end.p0(i64 8, ptr %651) #0
  br label %6497

6496:                                             ; preds = %6494, %6403, %6371
  call void @llvm.lifetime.end.p0(i64 8, ptr %651) #0
  br label %6499

6497:                                             ; preds = %6495, %6328
  call void @llvm.lifetime.end.p0(i64 1, ptr %600) #0
  br label %6498

6498:                                             ; preds = %6497
  store i8 0, ptr %598, align 1, !tbaa !150
  br label %5794, !llvm.loop !325

6499:                                             ; preds = %6496, %6325
  call void @llvm.lifetime.end.p0(i64 1, ptr %600) #0
  br label %6500

6500:                                             ; preds = %6499, %5799
  call void @llvm.lifetime.end.p0(i64 8, ptr %599) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %598) #0
  br label %6506

6501:                                             ; preds = %5798
  br label %6502

6502:                                             ; preds = %6501
  store i8 0, ptr %598, align 1, !tbaa !150
  br label %5786, !llvm.loop !326

6503:                                             ; preds = %5789
  br label %6504

6504:                                             ; preds = %6503, %5784, %5505, %5427, %5378, %5355, %5332, %5309, %5286, %5256, %5204, %5152, %5100, %5048, %5024, %5000, %4975
  br label %6505

6505:                                             ; preds = %6504
  store i8 0, ptr %504, align 1, !tbaa !150
  br label %4964, !llvm.loop !327

6506:                                             ; preds = %6500, %5781, %5502, %5424, %5370, %5347, %5324, %5301, %5283, %5253, %5201, %5149, %5097, %5039, %5015, %4991, %4968
  call void @llvm.lifetime.end.p0(i64 8, ptr %505) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %504) #0
  br label %6568

6507:                                             ; preds = %4967
  br label %6508

6508:                                             ; preds = %6507
  store i8 0, ptr %504, align 1, !tbaa !150
  br label %4956, !llvm.loop !328

6509:                                             ; preds = %4959
  br label %6510

6510:                                             ; preds = %6509, %4954
  br label %6511

6511:                                             ; preds = %6510, %4934
  %6512 = getelementptr inbounds %"struct.(anonymous namespace)::Builder", ptr %488, i32 0, i32 1
  %6513 = load ptr, ptr %6512, align 8, !tbaa !312
  %6514 = getelementptr inbounds %"class.MIR::Function", ptr %6513, i32 0, i32 2
  %6515 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6514) #0
  %6516 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %6515, i32 0, i32 1
  %6517 = invoke noundef zeroext i1 @_ZNK3MIR10Terminator13is_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %6516)
          to label %6518 unwind label %4854

6518:                                             ; preds = %6511
  br i1 %6517, label %6519, label %6526

6519:                                             ; preds = %6518
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %672)
          to label %6520 unwind label %4854

6520:                                             ; preds = %6519
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef %672)
          to label %6521 unwind label %6522

6521:                                             ; preds = %6520
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %672) #0
  br label %6526

6522:                                             ; preds = %6520
  %6523 = landingpad { ptr, i32 }
          cleanup
  %6524 = extractvalue { ptr, i32 } %6523, 0
  store ptr %6524, ptr %11, align 8
  %6525 = extractvalue { ptr, i32 } %6523, 1
  store i32 %6525, ptr %12, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %672) #0
  br label %6568

6526:                                             ; preds = %6521, %6518
  %6527 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %5, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %674) #0
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %674, ptr noundef nonnull align 8 dereferenceable(88) %473)
          to label %6528 unwind label %6551

6528:                                             ; preds = %6526
  %6529 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 11
  %6530 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %6529, i32 0, i32 3
  %6531 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6530)
          to label %6532 unwind label %6551

6532:                                             ; preds = %6528
  %6533 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 8
  %6534 = getelementptr inbounds %"class.HIR::Function", ptr %477, i32 0, i32 10
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %6527, ptr noundef nonnull align 8 dereferenceable(56) %674, ptr noundef nonnull align 8 dereferenceable(96) %6531, ptr noundef nonnull align 8 dereferenceable(24) %6533, ptr noundef nonnull align 8 dereferenceable(8) %6534)
          to label %6535 unwind label %6551

6535:                                             ; preds = %6532
  call void @llvm.lifetime.end.p0(i64 56, ptr %674) #0
  %6536 = load ptr, ptr %4, align 8, !tbaa !5
  %6537 = getelementptr inbounds %class.TransList, ptr %6536, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %675) #0
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.537") align 8 %675, ptr noundef nonnull align 8 dereferenceable(352) %477)
          to label %6538 unwind label %6555

6538:                                             ; preds = %6535
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %6537, ptr noundef nonnull align 8 dereferenceable(8) %675)
          to label %6539 unwind label %6559

6539:                                             ; preds = %6538
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %675) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %676) #0
  %6540 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %677, ptr noundef nonnull align 8 dereferenceable(88) %473) #0
  %6541 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %6540, ptr noundef %677)
          to label %6542 unwind label %6564

6542:                                             ; preds = %6539
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %677) #0
  store ptr %6541, ptr %676, align 8, !tbaa !5
  %6543 = load ptr, ptr %4, align 8, !tbaa !5
  %6544 = getelementptr inbounds %class.TransList, ptr %6543, i32 0, i32 12
  %6545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6544) #0
  %6546 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %6545) #0
  %6547 = load ptr, ptr %676, align 8, !tbaa !5
  %6548 = getelementptr inbounds %struct.TransList_Function, ptr %6547, i32 0, i32 1
  store ptr %6546, ptr %6548, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %676) #0
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %488) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %488) #0
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %484) #0
  call void @llvm.lifetime.end.p0(i64 120, ptr %484) #0
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %477) #0
  call void @llvm.lifetime.end.p0(i64 352, ptr %477) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %473) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %473) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %472) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %471) #0
  br label %6549

6549:                                             ; preds = %6542
  %6550 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %469) #0
  br label %4696

6551:                                             ; preds = %6532, %6528, %6526
  %6552 = landingpad { ptr, i32 }
          cleanup
  %6553 = extractvalue { ptr, i32 } %6552, 0
  store ptr %6553, ptr %11, align 8
  %6554 = extractvalue { ptr, i32 } %6552, 1
  store i32 %6554, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %674) #0
  br label %6568

6555:                                             ; preds = %6535
  %6556 = landingpad { ptr, i32 }
          cleanup
  %6557 = extractvalue { ptr, i32 } %6556, 0
  store ptr %6557, ptr %11, align 8
  %6558 = extractvalue { ptr, i32 } %6556, 1
  store i32 %6558, ptr %12, align 4
  br label %6563

6559:                                             ; preds = %6538
  %6560 = landingpad { ptr, i32 }
          cleanup
  %6561 = extractvalue { ptr, i32 } %6560, 0
  store ptr %6561, ptr %11, align 8
  %6562 = extractvalue { ptr, i32 } %6560, 1
  store i32 %6562, ptr %12, align 4
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %675) #0
  br label %6563

6563:                                             ; preds = %6559, %6555
  call void @llvm.lifetime.end.p0(i64 8, ptr %675) #0
  br label %6568

6564:                                             ; preds = %6539
  %6565 = landingpad { ptr, i32 }
          cleanup
  %6566 = extractvalue { ptr, i32 } %6565, 0
  store ptr %6566, ptr %11, align 8
  %6567 = extractvalue { ptr, i32 } %6565, 1
  store i32 %6567, ptr %12, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %677) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %676) #0
  br label %6568

6568:                                             ; preds = %6564, %6563, %6551, %6522, %6506, %4949, %4935, %4866, %4854
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %488) #0
  br label %6569

6569:                                             ; preds = %6568, %4850
  call void @llvm.lifetime.end.p0(i64 48, ptr %488) #0
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %484) #0
  br label %6570

6570:                                             ; preds = %6569, %4849
  call void @llvm.lifetime.end.p0(i64 120, ptr %484) #0
  br label %6571

6571:                                             ; preds = %6570, %4840, %4827, %4803
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %477) #0
  br label %6572

6572:                                             ; preds = %6571, %4791
  call void @llvm.lifetime.end.p0(i64 352, ptr %477) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %473) #0
  br label %6573

6573:                                             ; preds = %6572, %4790, %4773
  call void @llvm.lifetime.end.p0(i64 88, ptr %473) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #0
  br label %6574

6574:                                             ; preds = %6573, %4769
  call void @llvm.lifetime.end.p0(i64 8, ptr %472) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %471) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %470) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %469) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %468) #0
  br label %6576

6575:                                             ; preds = %4698
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %458) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %458) #0
  call void @_ZN12_GLOBAL__N_15StateD2Ev(ptr noundef nonnull align 8 dereferenceable(576) %5) #0
  call void @llvm.lifetime.end.p0(i64 576, ptr %5) #0
  ret void

6576:                                             ; preds = %6574, %4686
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %458) #0
  br label %6577

6577:                                             ; preds = %6576, %4613, %4609
  call void @llvm.lifetime.end.p0(i64 40, ptr %458) #0
  br label %6578

6578:                                             ; preds = %6577, %4608, %2211, %1279, %910, %753, %727
  call void @_ZN12_GLOBAL__N_15StateD2Ev(ptr noundef nonnull align 8 dereferenceable(576) %5) #0
  call void @llvm.lifetime.end.p0(i64 576, ptr %5) #0
  br label %6579

6579:                                             ; preds = %6578
  %6580 = load ptr, ptr %11, align 8
  %6581 = load i32, ptr %12, align 4
  %6582 = insertvalue { ptr, i32 } poison, ptr %6580, 0
  %6583 = insertvalue { ptr, i32 } %6582, i32 %6581, 1
  resume { ptr, i32 } %6583

6584:                                             ; preds = %6467, %6370, %5976, %5945, %5866, %5842, %5231, %5179, %5127, %5075, %5043, %5019, %4995, %4768, %4671, %4550, %4430, %4378, %3750, %3483, %3353, %3232, %1952, %1719, %1547, %1399, %811
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_15StateC2ERN3HIR5CrateERK9TransList(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(576)) unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) #1

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

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

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

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

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

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

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

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

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

; 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 #8 align 2

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #5

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

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

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

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

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

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

declare noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) #5

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

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

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

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

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

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

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

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

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS4_EESt6vectorIS7_SaIS7_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_23ET_SJ_SJ_T0_"(ptr, ptr, ptr) #8

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, i32 noundef) #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(192)) #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) #9

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9make_vec1ISt4pairIN3HIR7PatternENS1_7TypeRefEEESt6vectorIT_SaIS6_EEOS6_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.301") align 8, ptr noundef nonnull align 8 dereferenceable(224)) #1

; 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.390") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14PatternBindingC2EbNS0_4TypeE8RcStringj(ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR7Pattern4Data8make_AnyENS1_8Data_AnyE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Pattern::Data") align 8) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR8FunctionC2ENS0_8ReceiverENS_13GenericParamsESt6vectorISt4pairINS_7PatternENS_7TypeRefEESaIS7_EES6_NS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #10

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #11

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR9TraitImplC2Ev(ptr noundef nonnull align 8 dereferenceable(328)) unnamed_addr #8 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)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(368)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.426") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(360)) #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR9TraitImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.246") align 8, ptr noundef nonnull align 8 dereferenceable(328)) #1

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

declare noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

declare void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 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)) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(576), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 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)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #1 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

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

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

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

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

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

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

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

declare void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #5

declare void @_ZNK3HIR15TypePathBinding5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_112get_unit_ptrERK4SpanRNS_7BuilderEN3HIR7TypeRefEN3MIR6LValueERS8_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #1

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

declare void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(172)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48)) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) #1 align 2

declare void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.537") align 8, ptr noundef nonnull align 8 dereferenceable(352)) #1

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #5

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 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)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) #4 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)) #4 align 2

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360), ptr noundef, i1 noundef zeroext, ptr noundef, ptr noundef) 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 #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() #8

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

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

declare void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

declare noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef, i64 noundef, i64 noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.560") align 8, ptr noundef nonnull align 8 dereferenceable(360)) #1

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

declare noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) #5

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #5

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS5_SaIS5_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_26EbT_SG_T0_"(ptr, ptr, ptr) #8

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA5_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(5)) #8

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #1 align 2

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

declare noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19deref_boxEN3MIR6LValueE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder9push_stmtEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement9make_DropENS0_9Data_DropE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_IndexES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR13TypeData_Path12is_generatorEv(ptr noundef nonnull align 8 dereferenceable(112)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) #1 align 2

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

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK14MonomorphState9has_typesEv(ptr noundef nonnull align 8 dereferenceable(144)) #1 align 2

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

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

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

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

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

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

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

attributes #0 = { nounwind }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nobuiltin allocsize(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 #11 = { nobuiltin 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 #12 = { noreturn nounwind }
attributes #13 = { noreturn }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTS13TargetVersion", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTS18TransList_Function", !6, i64 0, !6, i64 8, !15, i64 16, !29, i64 184, !35, i64 224}
!15 = !{!"_ZTS12Trans_Params", !16, i64 0, !23, i64 96, !6, i64 104, !24, i64 112, !24, i64 136, !28, i64 160}
!16 = !{!"_ZTS15MonomorphiserPP", !17, i64 0}
!17 = !{!"_ZTS13Monomorphiser", !6, i64 8, !18, i64 16, !19, i64 72}
!18 = !{!"_ZTSN3HIR8ItemPathE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!19 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTS4Span", !6, i64 0}
!24 = !{!"_ZTSN3HIR10PathParamsE", !25, i64 0, !26, i64 8, !27, i64 16}
!25 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!26 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!27 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!28 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!29 = !{!"_ZTS14CachedFunction", !28, i64 0, !30, i64 8, !34, i64 32}
!30 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!35 = !{!"bool", !7, i64 0}
!36 = !{!37, !35, i64 0}
!37 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8FunctionEEE", !35, i64 0, !38, i64 8}
!38 = !{!"_ZTSN3HIR8FunctionE", !35, i64 0, !39, i64 8, !44, i64 80, !28, i64 88, !45, i64 96, !35, i64 104, !35, i64 105, !46, i64 112, !30, i64 208, !35, i64 232, !28, i64 240, !63, i64 248, !70, i64 320}
!39 = !{!"_ZTSN3HIR7LinkageE", !40, i64 0, !41, i64 8, !41, i64 40}
!40 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !42, i64 0, !43, i64 8, !7, i64 16}
!42 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!45 = !{!"_ZTS8RcString", !6, i64 0}
!46 = !{!"_ZTSN3HIR13GenericParamsE", !47, i64 0, !51, i64 24, !55, i64 48, !59, i64 72}
!47 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSN3HIR7ExprPtrE", !64, i64 0, !65, i64 8, !65, i64 32, !34, i64 56, !69, i64 64}
!64 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!65 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!70 = !{!"_ZTSN3HIR8Function8MarkingsE", !71, i64 0, !35, i64 24, !75, i64 28}
!71 = !{!"_ZTSSt6vectorIjSaIjEE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!76 = !{!77, !6, i64 0}
!77 = !{!"_ZTSN12_GLOBAL__N_15StateE", !6, i64 0, !78, i64 8, !6, i64 432, !105, i64 440, !110, i64 520, !94, i64 568}
!78 = !{!"_ZTS18StaticTraitResolve", !79, i64 8, !96, i64 224, !97, i64 232, !97, i64 280, !97, i64 328, !100, i64 376}
!79 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !80, i64 24, !88, i64 72, !94, i64 104, !94, i64 112, !94, i64 120, !94, i64 128, !94, i64 136, !94, i64 144, !94, i64 152, !94, i64 160, !94, i64 168, !94, i64 176, !94, i64 184, !94, i64 192, !94, i64 200, !94, i64 208}
!80 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !81, i64 0}
!81 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !82, i64 0}
!82 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !83, i64 0, !85, i64 8}
!83 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !84, i64 0}
!84 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!85 = !{!"_ZTSSt15_Rb_tree_header", !86, i64 0, !43, i64 32}
!86 = !{!"_ZTSSt18_Rb_tree_node_base", !87, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!87 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!88 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !89, i64 0, !93, i64 24}
!89 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !90, i64 0}
!90 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!93 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!94 = !{!"_ZTSN3HIR10SimplePathE", !95, i64 0}
!95 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!96 = !{!"_ZTS12MetadataType", !7, i64 0}
!97 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !98, i64 0}
!98 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !99, i64 0}
!99 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !83, i64 0, !85, i64 8}
!100 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !101, i64 0}
!101 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !102, i64 0}
!102 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !103, i64 0, !85, i64 8}
!103 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !104, i64 0}
!104 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!105 = !{!"_ZTSSt5dequeIN3HIR7TypeRefESaIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSNSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE11_Deque_implE", !108, i64 0}
!108 = !{!"_ZTSNSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE16_Deque_impl_dataE", !6, i64 0, !43, i64 8, !109, i64 16, !109, i64 48}
!109 = !{!"_ZTSSt15_Deque_iteratorIN3HIR7TypeRefERS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!110 = !{!"_ZTSSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !83, i64 0, !85, i64 8}
!113 = !{!114, !114, i64 0}
!114 = !{!"int", !7, i64 0}
!115 = !{!"branch_weights", i32 1, i32 1048575}
!116 = !{!117, !6, i64 136}
!117 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !118, i64 0, !134, i64 144, !138, i64 168}
!118 = !{!"_ZTSN3HIR9TraitPathE", !119, i64 0, !125, i64 8, !126, i64 40, !131, i64 88, !6, i64 136}
!119 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !120, i64 0}
!120 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !121, i64 0}
!121 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !122, i64 0}
!122 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !123, i64 0}
!123 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !124, i64 0}
!124 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!125 = !{!"_ZTSN3HIR11GenericPathE", !94, i64 0, !24, i64 8}
!126 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !127, i64 0}
!127 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !128, i64 0}
!128 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !129, i64 0, !85, i64 8}
!129 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !130, i64 0}
!130 = !{!"_ZTSSt4lessI8RcStringE"}
!131 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !132, i64 0}
!132 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !133, i64 0}
!133 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !129, i64 0, !85, i64 8}
!134 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !135, i64 0}
!135 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !136, i64 0}
!136 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !137, i64 0}
!137 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!138 = !{!"_ZTSN3HIR11LifetimeRefE", !114, i64 0}
!139 = !{!38, !44, i64 80}
!140 = !{!141, !142, i64 4}
!141 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !138, i64 0, !142, i64 4, !28, i64 8}
!142 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!143 = !{!142, !142, i64 0}
!144 = !{!43, !43, i64 0}
!145 = distinct !{!145, !12}
!146 = !{!147, !6, i64 0}
!147 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_24", !6, i64 0, !6, i64 8, !142, i64 16}
!148 = !{!147, !6, i64 8}
!149 = !{!147, !142, i64 16}
!150 = !{!35, !35, i64 0}
!151 = !{i8 0, i8 2}
!152 = !{}
!153 = distinct !{!153, !12}
!154 = distinct !{!154, !12}
!155 = distinct !{!155, !12}
!156 = distinct !{!156, !12}
!157 = !{!39, !40, i64 0}
!158 = !{!159, !43, i64 8}
!159 = !{!"_ZTS8TypeRepr", !43, i64 0, !43, i64 8, !160, i64 16, !162, i64 88}
!160 = !{!"_ZTSN8TypeRepr11VariantModeE", !161, i64 0, !7, i64 8}
!161 = !{!"_ZTSN8TypeRepr11VariantMode3TagE", !7, i64 0}
!162 = !{!"_ZTSSt6vectorIN8TypeRepr5FieldESaIS1_EE", !163, i64 0}
!163 = !{!"_ZTSSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE", !164, i64 0}
!164 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE12_Vector_implE", !165, i64 0}
!165 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!166 = !{!167, !114, i64 16}
!167 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_25", !6, i64 0, !6, i64 8, !114, i64 16}
!168 = !{!169, !35, i64 304}
!169 = !{!"_ZTSN3HIR6StaticE", !46, i64 0, !39, i64 96, !35, i64 168, !28, i64 176, !63, i64 184, !170, i64 256, !35, i64 304, !35, i64 305, !35, i64 306, !179, i64 312}
!170 = !{!"_ZTS14EncodedLiteral", !171, i64 0, !175, i64 24}
!171 = !{!"_ZTSSt6vectorIhSaIhEE", !172, i64 0}
!172 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !173, i64 0}
!173 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !174, i64 0}
!174 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!175 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !176, i64 0}
!176 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !177, i64 0}
!177 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !178, i64 0}
!178 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!179 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !180, i64 0}
!180 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !181, i64 0}
!181 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !182, i64 0, !85, i64 8}
!182 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !183, i64 0}
!183 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!184 = !{!185, !6, i64 0}
!185 = !{!"_ZTS16TransList_Static", !6, i64 0, !15, i64 8}
!186 = !{!187, !114, i64 16}
!187 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_27", !6, i64 0, !6, i64 8, !114, i64 16}
!188 = !{!189, !114, i64 8}
!189 = !{!"_ZTSSt4pairIK8RcStringS_IjN3HIR11GenericPathEEE", !45, i64 0, !190, i64 8}
!190 = !{!"_ZTSSt4pairIjN3HIR11GenericPathEE", !114, i64 0, !125, i64 8}
!191 = !{!79, !6, i64 0}
!192 = distinct !{!192, !12}
!193 = distinct !{!193, !12}
!194 = distinct !{!194, !12}
!195 = distinct !{!195, !12}
!196 = !{!197, !114, i64 360}
!197 = !{!"_ZTSN3HIR5TraitE", !46, i64 0, !138, i64 96, !198, i64 104, !35, i64 128, !202, i64 136, !207, i64 192, !209, i64 248, !211, i64 304, !114, i64 360, !198, i64 368, !94, i64 392}
!198 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !199, i64 0}
!199 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !200, i64 0}
!200 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !201, i64 0}
!201 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!202 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !203, i64 0}
!203 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !43, i64 8, !204, i64 16, !43, i64 24, !205, i64 32, !6, i64 48}
!204 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!205 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !206, i64 0, !43, i64 8}
!206 = !{!"float", !7, i64 0}
!207 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !208, i64 0}
!208 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !43, i64 8, !204, i64 16, !43, i64 24, !205, i64 32, !6, i64 48}
!209 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !210, i64 0}
!210 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !43, i64 8, !204, i64 16, !43, i64 24, !205, i64 32, !6, i64 48}
!211 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !212, i64 0}
!212 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !43, i64 8, !204, i64 16, !43, i64 24, !205, i64 32, !6, i64 48}
!213 = !{!214, !43, i64 0}
!214 = !{!"_ZTSN8TypeRepr5FieldE", !43, i64 0, !28, i64 8}
!215 = distinct !{!215, !12}
!216 = !{!217, !35, i64 8}
!217 = !{!"_ZTSSt4pairIN3HIR7TypeRefEbE", !28, i64 0, !35, i64 8}
!218 = !{!219, !220, i64 0}
!219 = !{!"_ZTSN3MIR9Statement9Data_DropE", !220, i64 0, !221, i64 8, !114, i64 40}
!220 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!221 = !{!"_ZTSN3MIR6LValueE", !222, i64 0, !223, i64 8}
!222 = !{!"_ZTSN3MIR6LValue7StorageE", !43, i64 0}
!223 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !224, i64 0}
!224 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !225, i64 0}
!225 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !226, i64 0}
!226 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!227 = !{!219, !114, i64 40}
!228 = distinct !{!228, !12}
!229 = distinct !{!229, !12}
!230 = distinct !{!230, !12}
!231 = distinct !{!231, !12}
!232 = distinct !{!232, !12}
!233 = distinct !{!233, !12}
!234 = distinct !{!234, !12}
!235 = distinct !{!235, !12}
!236 = distinct !{!236, !12}
!237 = distinct !{!237, !12}
!238 = distinct !{!238, !12}
!239 = distinct !{!239, !12}
!240 = distinct !{!240, !12}
!241 = distinct !{!241, !12}
!242 = distinct !{!242, !12}
!243 = distinct !{!243, !12}
!244 = distinct !{!244, !12}
!245 = distinct !{!245, !12}
!246 = distinct !{!246, !12}
!247 = distinct !{!247, !12}
!248 = distinct !{!248, !12}
!249 = distinct !{!249, !12}
!250 = distinct !{!250, !12}
!251 = distinct !{!251, !12}
!252 = distinct !{!252, !12}
!253 = distinct !{!253, !12}
!254 = distinct !{!254, !12}
!255 = distinct !{!255, !12}
!256 = distinct !{!256, !12}
!257 = distinct !{!257, !12}
!258 = !{!259, !261, i64 16}
!259 = !{!"_ZTSN3MIR8Constant9Data_UintE", !260, i64 0, !261, i64 16}
!260 = !{!"_ZTS4U128", !43, i64 0, !43, i64 8}
!261 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!262 = !{!263, !266, i64 48}
!263 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !264, i64 0, !266, i64 48, !264, i64 56}
!264 = !{!"_ZTSN3MIR5ParamE", !265, i64 0, !7, i64 8}
!265 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!266 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!267 = !{!268, !114, i64 32}
!268 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !221, i64 0, !114, i64 32, !114, i64 36}
!269 = !{!268, !114, i64 36}
!270 = distinct !{!270, !12}
!271 = distinct !{!271, !12}
!272 = distinct !{!272, !12}
!273 = distinct !{!273, !12}
!274 = distinct !{!274, !12}
!275 = distinct !{!275, !12}
!276 = distinct !{!276, !12}
!277 = distinct !{!277, !12}
!278 = !{!279, !35, i64 145}
!279 = !{!"_ZTSN3HIR6StructE", !46, i64 0, !280, i64 96, !281, i64 104, !114, i64 136, !114, i64 140, !283, i64 144, !289, i64 200, !292, i64 248}
!280 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!281 = !{!"_ZTSN3HIR6Struct4DataE", !282, i64 0, !7, i64 8}
!282 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!283 = !{!"_ZTSN3HIR13TraitMarkingsE", !35, i64 0, !35, i64 1, !35, i64 2, !284, i64 8}
!284 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !285, i64 0}
!285 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !286, i64 0}
!286 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !287, i64 0, !85, i64 8}
!287 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !288, i64 0}
!288 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!289 = !{!"_ZTSN3HIR14StructMarkingsE", !35, i64 0, !114, i64 4, !290, i64 8, !114, i64 12, !291, i64 16, !114, i64 20, !114, i64 24, !35, i64 28, !35, i64 29, !260, i64 32}
!290 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!291 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!292 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!293 = distinct !{!293, !12}
!294 = distinct !{!294, !12}
!295 = distinct !{!295, !12}
!296 = !{!297, !35, i64 129}
!297 = !{!"_ZTSN3HIR5UnionE", !46, i64 0, !298, i64 96, !299, i64 104, !283, i64 128}
!298 = !{!"_ZTSN3HIR5Union4ReprE", !7, i64 0}
!299 = !{!"_ZTSSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE", !300, i64 0}
!300 = !{!"_ZTSSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE", !301, i64 0}
!301 = !{!"_ZTSNSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE12_Vector_implE", !302, i64 0}
!302 = !{!"_ZTSNSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!303 = distinct !{!303, !12}
!304 = distinct !{!304, !12}
!305 = !{!306, !35, i64 145}
!306 = !{!"_ZTSN3HIR4EnumE", !46, i64 0, !35, i64 96, !307, i64 100, !308, i64 104, !283, i64 144}
!307 = !{!"_ZTSN3HIR4Enum4ReprE", !7, i64 0}
!308 = !{!"_ZTSN3HIR4Enum5ClassE", !309, i64 0, !7, i64 8}
!309 = !{!"_ZTSN3HIR4Enum5Class3TagE", !7, i64 0}
!310 = distinct !{!310, !12}
!311 = distinct !{!311, !12}
!312 = !{!313, !6, i64 8}
!313 = !{!"_ZTSN12_GLOBAL__N_17BuilderE", !6, i64 0, !6, i64 8, !221, i64 16}
!314 = distinct !{!314, !12}
!315 = distinct !{!315, !12}
!316 = distinct !{!316, !12}
!317 = distinct !{!317, !12}
!318 = distinct !{!318, !12}
!319 = distinct !{!319, !12}
!320 = distinct !{!320, !12}
!321 = distinct !{!321, !12}
!322 = distinct !{!322, !12}
!323 = distinct !{!323, !12}
!324 = !{!14, !35, i64 224}
!325 = distinct !{!325, !12}
!326 = distinct !{!326, !12}
!327 = distinct !{!327, !12}
!328 = distinct !{!328, !12}


; 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.RcString = type { ptr }
%struct.Span = type { ptr }
%"struct.(anonymous namespace)::State" = type { ptr, %class.StaticTraitResolve, ptr, %"class.std::deque", %"class.std::set", %"struct.HIR::SimplePath" }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.3", %"class.std::map.3", %"class.std::map.3", %"class.std::map.8" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RangeVecMap = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.3" = type { %"class.std::_Rb_tree.4" }
%"class.std::_Rb_tree.4" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.8" = type { %"class.std::_Rb_tree.9" }
%"class.std::_Rb_tree.9" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, 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>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl" }
%"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl" = type { %"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.17" }
%"class.std::_Rb_tree.17" = type { %"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.227, %class.ThinVector.228, %class.ThinVector.229 }
%class.ThinVector.227 = type { ptr }
%class.ThinVector.228 = type { ptr }
%class.ThinVector.229 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.231" }
%"struct.std::_Head_base.231" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.294" = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.306", %"class.std::vector.318", %"class.std::vector.322", %"class.MIR::EnumCachePtr" }
%"class.std::vector.306" = type { %"struct.std::_Vector_base.307" }
%"struct.std::_Vector_base.307" = 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.std::vector.318" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.322" = type { %"struct.std::_Vector_base.323" }
%"struct.std::_Vector_base.323" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::EnumCachePtr" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.327", %"class.MIR::Terminator" }
%"class.std::vector.327" = type { %"struct.std::_Vector_base.328" }
%"struct.std::_Vector_base.328" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.349" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.332" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.332" = type { %"struct.std::_Vector_base.333" }
%"struct.std::_Vector_base.333" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.std::vector.349" = type { %"struct.std::_Vector_base.350" }
%"struct.std::_Vector_base.350" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.301", 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.300 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.300 = type { i64, [8 x i8] }
%"class.HIR::GenericParams" = type { %"class.std::vector.254", %"class.std::vector.259", %"class.std::vector.264", %"class.std::vector.269" }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = 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.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = 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.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = 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.269" = type { %"struct.std::_Vector_base.270" }
%"struct.std::_Vector_base.270" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.301" = type { %"struct.std::_Vector_base.302" }
%"struct.std::_Vector_base.302" = 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 }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.306", %"class.std::vector.306", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.308", i8, i32 }
%"class.std::vector.308" = type { %"struct.std::_Vector_base.309" }
%"struct.std::_Vector_base.309" = 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 }
%"struct.std::pair.390" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.392", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.392" = type { %"struct.std::_Vector_base.393" }
%"struct.std::_Vector_base.393" = 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::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 }
%"struct.HIR::PatternBinding" = type { i8, i32, %class.RcString, i32, i32 }
%"class.HIR::TraitImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef", %"class.std::map.274", %"class.std::map.279", %"class.std::map.284", %"class.std::map.289", %"struct.HIR::SimplePath" }
%"class.std::map.274" = type { %"class.std::_Rb_tree.275" }
%"class.std::_Rb_tree.275" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.279" = type { %"class.std::_Rb_tree.280" }
%"class.std::_Rb_tree.280" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.284" = type { %"class.std::_Rb_tree.285" }
%"class.std::_Rb_tree.285" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.289" = type { %"class.std::_Rb_tree.290" }
%"class.std::_Rb_tree.290" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::pair.426" = type { %class.RcString, %"struct.HIR::TraitImpl::ImplEnt" }
%"struct.HIR::TraitImpl::ImplEnt" = type { i8, %"class.HIR::Function" }
%"class.std::unique_ptr.246" = type { %"struct.std::__uniq_ptr_data.247" }
%"struct.std::__uniq_ptr_data.247" = type { %"class.std::__uniq_ptr_impl.248" }
%"class.std::__uniq_ptr_impl.248" = type { %"class.std::tuple.249" }
%"class.std::tuple.249" = type { %"struct.std::_Tuple_impl.250" }
%"struct.std::_Tuple_impl.250" = type { %"struct.std::_Head_base.253" }
%"struct.std::_Head_base.253" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%class.anon.439 = type { i8 }
%"struct.std::_Rb_tree_const_iterator.440" = type { ptr }
%class.anon.531 = type { ptr, ptr, ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.313" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.313" = type { %"struct.std::_Vector_base.314" }
%"struct.std::_Vector_base.314" = 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.__gnu_cxx::__normal_iterator.532" = type { ptr }
%class.anon.533 = type { i8 }
%"struct.(anonymous namespace)::Builder" = type { ptr, ptr, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%class.anon.535 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%class.anon.536 = type { ptr, ptr, ptr, ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"class.std::unique_ptr.537" = type { %"struct.std::__uniq_ptr_data.538" }
%"struct.std::__uniq_ptr_data.538" = type { %"class.std::__uniq_ptr_impl.539" }
%"class.std::__uniq_ptr_impl.539" = type { %"class.std::tuple.540" }
%"class.std::tuple.540" = type { %"struct.std::_Tuple_impl.541" }
%"struct.std::_Tuple_impl.541" = type { %"struct.std::_Head_base.544" }
%"struct.std::_Head_base.544" = type { ptr }
%class.anon.545 = type { i8 }
%"struct.std::_Rb_tree_iterator.547" = type { ptr }
%struct.anon = type { ptr, ptr, i32 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.306" }
%"class.__gnu_cxx::__normal_iterator.550" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.551" = type { ptr }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"class.std::map.526" }
%struct.EncodedLiteral = type { %"class.std::vector.354", %"class.std::vector.521" }
%"class.std::vector.354" = type { %"struct.std::_Vector_base.355" }
%"struct.std::_Vector_base.355" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.521" = type { %"struct.std::_Vector_base.522" }
%"struct.std::_Vector_base.522" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.526" = type { %"class.std::_Rb_tree.527" }
%"class.std::_Rb_tree.527" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.anon.557 = type <{ ptr, ptr, i32, [4 x i8] }>
%class.anon.559 = type { ptr }
%"class.std::unique_ptr.560" = type { %"struct.std::__uniq_ptr_data.561" }
%"struct.std::__uniq_ptr_data.561" = type { %"class.std::__uniq_ptr_impl.562" }
%"class.std::__uniq_ptr_impl.562" = type { %"class.std::tuple.563" }
%"class.std::tuple.563" = type { %"struct.std::_Tuple_impl.564" }
%"struct.std::_Tuple_impl.564" = type { %"struct.std::_Head_base.567" }
%"struct.std::_Head_base.567" = type { ptr }
%class.anon.568 = type { ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::pair.589" = type <{ %"class.HIR::TypeRef", i8, [7 x i8] }>
%class.anon.592 = type <{ ptr, ptr, i32, [4 x i8] }>
%class.anon.594 = type { ptr }
%"struct.std::__detail::_Node_const_iterator.595" = type { %"struct.std::__detail::_Node_iterator_base.596" }
%"struct.std::__detail::_Node_iterator_base.596" = type { ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.601 = type { ptr }
%class.anon.602 = type { i8 }
%class.anon.604 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.587" = type { ptr }
%class.anon.606 = type { ptr }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.349" }
%class.anon.607 = type { i8 }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%class.anon.609 = type { ptr, ptr }
%class.anon.610 = type { ptr, ptr }
%class.anon.611 = type { ptr, ptr }
%class.anon.612 = type { ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%class.anon.613 = type { i8 }
%class.anon.615 = type { ptr }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.308" }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%"class.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.anon.626 = type { ptr, ptr }
%class.anon.627 = type { i8 }

@__dso_handle = external hidden global i8
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@_ZN12_GLOBAL__N_113rcstring_dropE = external hidden global %class.RcString, align 8
@_ZN12_GLOBAL__N_113rcstring_selfE = external hidden global %class.RcString, align 8
@_ZN12_GLOBAL__N_118rcstring_drop_glueE = external hidden global %class.RcString, align 8
@gTargetVersion = external local_unnamed_addr global i32, align 4
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList = external hidden unnamed_addr constant [50 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList = external hidden unnamed_addr constant [16 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp = external hidden global %struct.Span, align 8
@_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp = external hidden global i64, align 8
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15Trans_AutoImplsRN3HIR5CrateER9TransList(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(576) %1) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.(anonymous namespace)::State", align 8
  %4 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %5 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %6 = alloca %"class.HIR::TypeRef", align 8
  %7 = alloca %"class.HIR::TypeRef", align 8
  %8 = alloca %"class.HIR::TypeRef", align 8
  %9 = alloca %"class.HIR::TypeRef", align 8
  %10 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %12 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %13 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %14 = alloca %"class.HIR::Path", align 8
  %15 = alloca %"class.HIR::TypeRef", align 8
  %16 = alloca %"class.HIR::GenericPath", align 8
  %17 = alloca %"struct.HIR::SimplePath", align 8
  %18 = alloca %class.RcString, align 8
  %19 = alloca %"struct.HIR::PathParams", align 8
  %20 = alloca %"class.HIR::Path", align 8
  %21 = alloca %struct.Span, align 8
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator.294", align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %28 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.MIR::Function", align 8
  %32 = alloca %"struct.MIR::BasicBlock", align 8
  %33 = alloca %"class.MIR::Statement", align 8
  %34 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %35 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %36 = alloca %"class.MIR::Terminator", align 8
  %37 = alloca %"class.HIR::Function", align 8
  %38 = alloca %"class.HIR::GenericParams", align 8
  %39 = alloca %"class.std::vector.301", align 8
  %40 = alloca %"struct.std::pair.390", align 8
  %41 = alloca %"struct.HIR::Pattern", align 8
  %42 = alloca %"struct.HIR::PatternBinding", align 8
  %43 = alloca %class.RcString, align 8
  %44 = alloca %"class.HIR::Pattern::Data", align 8
  %45 = alloca %"class.HIR::TypeRef", align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %"class.HIR::ExprPtr", align 8
  %48 = alloca %"class.MIR::FunctionPointer", align 8
  %49 = alloca %"class.HIR::TraitImpl", align 8
  %50 = alloca %"class.HIR::TypeRef", align 8
  %51 = alloca %"struct.std::pair.426", align 8
  %52 = alloca %class.RcString, align 8
  %53 = alloca %"struct.HIR::TraitImpl::ImplEnt", align 8
  %54 = alloca %"class.std::unique_ptr.246", align 8
  %55 = alloca ptr, align 8
  %56 = alloca %"class.HIR::Path", align 8
  %57 = alloca %"class.HIR::TypeRef", align 8
  %58 = alloca %"class.HIR::GenericPath", align 8
  %59 = alloca %"struct.HIR::SimplePath", align 8
  %60 = alloca %class.RcString, align 8
  %61 = alloca %"struct.HIR::PathParams", align 8
  %62 = alloca %"class.HIR::Path", align 8
  %63 = alloca %"struct.std::_Rb_tree_iterator.294", align 8
  %64 = alloca %class.TraceLog, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.439, align 1
  %67 = alloca %"struct.std::_Rb_tree_const_iterator.440", align 8
  %68 = alloca %"struct.std::_Rb_tree_const_iterator.440", align 8
  %69 = alloca %struct.Span, align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.531, align 8
  %72 = alloca %"struct.HIR::PathParams", align 8
  %73 = alloca %struct.MonomorphStatePtr, align 8
  %74 = alloca %"class.HIR::Function", align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator.532", align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.532", align 8
  %78 = alloca %"struct.std::pair.390", align 8
  %79 = alloca %"struct.HIR::Pattern", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %struct.Span, align 8
  %82 = alloca %"class.std::function", align 8
  %83 = alloca %class.anon.533, align 1
  %84 = alloca %"class.MIR::FunctionPointer", align 8
  %85 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %86 = alloca %"struct.MIR::LValue", align 8
  %87 = alloca %"struct.MIR::LValue", align 8
  %88 = alloca %"class.HIR::TypeRef", align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"struct.MIR::LValue", align 8
  %91 = alloca %"class.HIR::TypeRef", align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %"struct.MIR::LValue", align 8
  %94 = alloca %"class.MIR::RValue", align 8
  %95 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %96 = alloca %struct.Span, align 8
  %97 = alloca %"class.std::function", align 8
  %98 = alloca %class.anon.535, align 8
  %99 = alloca %"struct.MIR::LValue", align 8
  %100 = alloca %"class.HIR::TypeRef", align 8
  %101 = alloca %"class.HIR::TypeRef", align 8
  %102 = alloca %"struct.MIR::LValue", align 8
  %103 = alloca %"class.MIR::RValue", align 8
  %104 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %105 = alloca %"class.HIR::GenericPath", align 8
  %106 = alloca %"class.HIR::TypeRef", align 8
  %107 = alloca %"class.HIR::TypeRef", align 8
  %108 = alloca %"class.HIR::Path", align 8
  %109 = alloca %"class.HIR::GenericPath", align 8
  %110 = alloca %"class.HIR::TypePathBinding", align 8
  %111 = alloca %"struct.MIR::LValue", align 8
  %112 = alloca %"class.HIR::TypeRef", align 8
  %113 = alloca %"struct.MIR::LValue", align 8
  %114 = alloca ptr, align 8
  %115 = alloca %struct.Span, align 8
  %116 = alloca %"class.std::function", align 8
  %117 = alloca %class.anon.536, align 8
  %118 = alloca %"struct.MIR::LValue", align 8
  %119 = alloca %"class.HIR::TypeRef", align 8
  %120 = alloca %"class.HIR::TypeRef", align 8
  %121 = alloca %"struct.MIR::LValue", align 8
  %122 = alloca %"class.MIR::RValue", align 8
  %123 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %124 = alloca %"class.std::vector.349", align 8
  %125 = alloca %"class.MIR::Param", align 8
  %126 = alloca %"struct.MIR::LValue", align 8
  %127 = alloca %"class.MIR::Param", align 8
  %128 = alloca %"struct.MIR::LValue", align 8
  %129 = alloca %"struct.MIR::LValue", align 8
  %130 = alloca %"class.MIR::CallTarget", align 8
  %131 = alloca %"struct.MIR::LValue", align 8
  %132 = alloca %"struct.MIR::LValue", align 8
  %133 = alloca %"struct.MIR::LValue", align 8
  %134 = alloca %"class.std::vector.349", align 8
  %135 = alloca %"class.MIR::Terminator", align 8
  %136 = alloca %"class.MIR::Terminator", align 8
  %137 = alloca %"class.HIR::ItemPath", align 8
  %138 = alloca %"class.std::unique_ptr.537", align 8
  %139 = alloca %"class.HIR::Path", align 8
  %140 = alloca %class.TraceLog, align 8
  %141 = alloca %"class.std::function", align 8
  %142 = alloca %class.anon.545, align 1
  %143 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %144 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %145 = alloca %struct.Span, align 8
  %146 = alloca [3 x %struct.anon], align 16
  %147 = alloca %"class.HIR::Path", align 8
  %148 = alloca %class.RcString, align 8
  %149 = alloca %"struct.HIR::SimplePath", align 8
  %150 = alloca %"class.HIR::Path", align 8
  %151 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %152 = alloca %"class.std::vector.306", align 8
  %153 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %154 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %155 = alloca %"class.HIR::TypeRef", align 8
  %156 = alloca %"class.HIR::TypeRef", align 8
  %157 = alloca %"class.std::vector.306", align 8
  %158 = alloca %"class.HIR::Function", align 8
  %159 = alloca %"class.HIR::TypeRef", align 8
  %160 = alloca %"struct.std::pair.390", align 8
  %161 = alloca %"struct.HIR::Pattern", align 8
  %162 = alloca %"class.HIR::TypeRef", align 8
  %163 = alloca %"class.HIR::TypeRef", align 8
  %164 = alloca %"struct.std::pair.390", align 8
  %165 = alloca %"struct.HIR::Pattern", align 8
  %166 = alloca %"class.MIR::FunctionPointer", align 8
  %167 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %168 = alloca %"class.std::vector.349", align 8
  %169 = alloca %"class.MIR::Param", align 8
  %170 = alloca %"struct.MIR::LValue", align 8
  %171 = alloca %"struct.MIR::LValue", align 8
  %172 = alloca %"struct.MIR::LValue", align 8
  %173 = alloca %"class.MIR::CallTarget", align 8
  %174 = alloca %"class.HIR::Path", align 8
  %175 = alloca %"class.std::vector.349", align 8
  %176 = alloca %"class.MIR::Terminator", align 8
  %177 = alloca %"class.MIR::Terminator", align 8
  %178 = alloca %"class.HIR::ItemPath", align 8
  %179 = alloca %"class.std::unique_ptr.537", align 8
  %180 = alloca %"class.HIR::Path", align 8
  %181 = alloca %class.RcString, align 8
  %182 = alloca %"struct.HIR::SimplePath", align 8
  %183 = alloca %"class.HIR::Path", align 8
  %184 = alloca %"class.std::vector.306", align 8
  %185 = alloca %"class.__gnu_cxx::__normal_iterator.551", align 8
  %186 = alloca %"class.__gnu_cxx::__normal_iterator.551", align 8
  %187 = alloca %"class.HIR::TypeRef", align 8
  %188 = alloca %"class.HIR::TypeRef", align 8
  %189 = alloca %"class.std::vector.306", align 8
  %190 = alloca %"class.HIR::Function", align 8
  %191 = alloca %"class.HIR::TypeRef", align 8
  %192 = alloca %"struct.std::pair.390", align 8
  %193 = alloca %"struct.HIR::Pattern", align 8
  %194 = alloca %"class.HIR::TypeRef", align 8
  %195 = alloca %"class.HIR::TypeRef", align 8
  %196 = alloca %"struct.std::pair.390", align 8
  %197 = alloca %"struct.HIR::Pattern", align 8
  %198 = alloca %"class.MIR::FunctionPointer", align 8
  %199 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %200 = alloca %"class.std::vector.349", align 8
  %201 = alloca %"class.MIR::Param", align 8
  %202 = alloca %"struct.MIR::LValue", align 8
  %203 = alloca %"struct.MIR::LValue", align 8
  %204 = alloca %"struct.MIR::LValue", align 8
  %205 = alloca %"class.MIR::CallTarget", align 8
  %206 = alloca %"struct.MIR::LValue", align 8
  %207 = alloca %"struct.MIR::LValue", align 8
  %208 = alloca %"class.std::vector.349", align 8
  %209 = alloca %"class.MIR::Terminator", align 8
  %210 = alloca %"class.MIR::Terminator", align 8
  %211 = alloca %"class.HIR::ItemPath", align 8
  %212 = alloca %"class.std::unique_ptr.537", align 8
  %213 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %214 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %215 = alloca %struct.Span, align 8
  %216 = alloca %"struct.HIR::SimplePath", align 8
  %217 = alloca %"class.std::vector.306", align 8
  %218 = alloca %"class.HIR::TypeRef", align 8
  %219 = alloca %"class.HIR::TypeRef", align 8
  %220 = alloca %"class.HIR::TypeRef", align 8
  %221 = alloca %"class.HIR::TypeRef", align 8
  %222 = alloca %"class.std::vector.306", align 8
  %223 = alloca %"struct.HIR::Linkage", align 8
  %224 = alloca %"class.HIR::Static", align 8
  %225 = alloca %"struct.HIR::Linkage", align 8
  %226 = alloca %"class.HIR::TypeRef", align 8
  %227 = alloca %"class.HIR::ExprPtr", align 8
  %228 = alloca i64, align 8
  %229 = alloca %class.anon.557, align 8
  %230 = alloca %"class.HIR::TypeRef", align 8
  %231 = alloca %"class.HIR::Path", align 8
  %232 = alloca %"class.HIR::TypeRef", align 8
  %233 = alloca %class.RcString, align 8
  %234 = alloca %"struct.HIR::PathParams", align 8
  %235 = alloca i64, align 8
  %236 = alloca i64, align 8
  %237 = alloca %struct.Span, align 8
  %238 = alloca %"class.std::function", align 8
  %239 = alloca %class.anon.559, align 8
  %240 = alloca %"class.std::unique_ptr.560", align 8
  %241 = alloca %"class.HIR::Path", align 8
  %242 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %243 = alloca %"struct.std::_Rb_tree_iterator.547", align 8
  %244 = alloca %struct.Span, align 8
  %245 = alloca %"struct.HIR::SimplePath", align 8
  %246 = alloca %"struct.HIR::SimplePath", align 8
  %247 = alloca %struct.Span, align 8
  %248 = alloca %"class.std::function", align 8
  %249 = alloca %class.anon.568, align 8
  %250 = alloca %"struct.HIR::PathParams", align 8
  %251 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %252 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %253 = alloca %"class.HIR::TypeRef", align 8
  %254 = alloca %"class.HIR::Path", align 8
  %255 = alloca %"class.HIR::TypeRef", align 8
  %256 = alloca %"class.HIR::GenericPath", align 8
  %257 = alloca %class.RcString, align 8
  %258 = alloca %"struct.HIR::PathParams", align 8
  %259 = alloca %"class.HIR::TypePathBinding", align 8
  %260 = alloca %"class.HIR::TypeRef", align 8
  %261 = alloca %"class.HIR::TypeRef", align 8
  %262 = alloca %"class.HIR::Path", align 8
  %263 = alloca %"class.HIR::GenericPath", align 8
  %264 = alloca %"struct.HIR::SimplePath", align 8
  %265 = alloca %"struct.HIR::PathParams", align 8
  %266 = alloca %"class.HIR::TypePathBinding", align 8
  %267 = alloca %"struct.std::pair.589", align 8
  %268 = alloca %"class.HIR::TypeRef", align 8
  %269 = alloca i8, align 1
  %270 = alloca %struct.MonomorphStatePtr, align 8
  %271 = alloca %"struct.HIR::Linkage", align 8
  %272 = alloca %"class.HIR::Static", align 8
  %273 = alloca %"struct.HIR::Linkage", align 8
  %274 = alloca %"class.HIR::TypeRef", align 8
  %275 = alloca %"class.HIR::ExprPtr", align 8
  %276 = alloca i64, align 8
  %277 = alloca %class.anon.592, align 8
  %278 = alloca %"class.HIR::TypeRef", align 8
  %279 = alloca %"class.HIR::Path", align 8
  %280 = alloca %"class.HIR::TypeRef", align 8
  %281 = alloca %class.RcString, align 8
  %282 = alloca %"struct.HIR::PathParams", align 8
  %283 = alloca i64, align 8
  %284 = alloca i64, align 8
  %285 = alloca %struct.Span, align 8
  %286 = alloca %"class.std::function", align 8
  %287 = alloca %class.anon.594, align 8
  %288 = alloca %"struct.std::__detail::_Node_const_iterator.595", align 8
  %289 = alloca %"struct.std::__detail::_Node_const_iterator.595", align 8
  %290 = alloca %"class.HIR::GenericPath", align 8
  %291 = alloca %"class.HIR::Path", align 8
  %292 = alloca %"class.HIR::TypeRef", align 8
  %293 = alloca %"class.HIR::GenericPath", align 8
  %294 = alloca %class.RcString, align 8
  %295 = alloca %"struct.HIR::PathParams", align 8
  %296 = alloca %struct.MonomorphStatePtr, align 8
  %297 = alloca %"class.HIR::Path", align 8
  %298 = alloca %class.RcString, align 8
  %299 = alloca %"class.std::__cxx11::basic_string", align 8
  %300 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %301 = alloca %"class.HIR::Path", align 8
  %302 = alloca %"class.HIR::Function", align 8
  %303 = alloca %"class.HIR::TypeRef", align 8
  %304 = alloca %"struct.std::pair.390", align 8
  %305 = alloca %"struct.HIR::Pattern", align 8
  %306 = alloca %"class.HIR::TypeRef", align 8
  %307 = alloca %"class.HIR::TypeRef", align 8
  %308 = alloca %"struct.std::pair.390", align 8
  %309 = alloca %"struct.HIR::Pattern", align 8
  %310 = alloca %"class.HIR::TypeRef", align 8
  %311 = alloca %"class.MIR::FunctionPointer", align 8
  %312 = alloca %"class.MIR::TypeResolve", align 8
  %313 = alloca %struct.FmtLambda, align 8
  %314 = alloca %"class.std::function", align 8
  %315 = alloca %class.anon.601, align 8
  %316 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %317 = alloca %"class.std::vector.349", align 8
  %318 = alloca %"class.MIR::Param", align 8
  %319 = alloca %"struct.MIR::LValue", align 8
  %320 = alloca %"struct.MIR::LValue", align 8
  %321 = alloca %"class.MIR::Param", align 8
  %322 = alloca %"struct.MIR::LValue", align 8
  %323 = alloca %"struct.MIR::LValue", align 8
  %324 = alloca %"class.MIR::CallTarget", align 8
  %325 = alloca %"class.HIR::Path", align 8
  %326 = alloca %"class.std::vector.349", align 8
  %327 = alloca %"class.MIR::Terminator", align 8
  %328 = alloca %"class.MIR::Terminator", align 8
  %329 = alloca %"class.HIR::ItemPath", align 8
  %330 = alloca %"class.std::unique_ptr.537", align 8
  %331 = alloca %"class.HIR::Path", align 8
  %332 = alloca %struct.Span, align 8
  %333 = alloca %"class.std::function", align 8
  %334 = alloca %class.anon.602, align 1
  %335 = alloca %"class.HIR::GenericPath", align 8
  %336 = alloca %struct.MonomorphStatePtr, align 8
  %337 = alloca %"class.HIR::Path", align 8
  %338 = alloca %"class.HIR::TypeRef", align 8
  %339 = alloca %"class.HIR::GenericPath", align 8
  %340 = alloca %class.RcString, align 8
  %341 = alloca %"struct.HIR::PathParams", align 8
  %342 = alloca %"class.HIR::Path", align 8
  %343 = alloca %"class.std::unique_ptr.560", align 8
  %344 = alloca %"class.HIR::Path", align 8
  %345 = alloca %class.TraceLog, align 8
  %346 = alloca %"class.std::function", align 8
  %347 = alloca %class.anon.604, align 1
  %348 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %349 = alloca %"class.__gnu_cxx::__normal_iterator.587", align 8
  %350 = alloca %struct.Span, align 8
  %351 = alloca %"class.HIR::TypeRef", align 8
  %352 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %353 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %354 = alloca %struct.Span, align 8
  %355 = alloca %"class.HIR::Path", align 8
  %356 = alloca %"class.HIR::TypeRef", align 8
  %357 = alloca %class.RcString, align 8
  %358 = alloca %"struct.HIR::PathParams", align 8
  %359 = alloca %"class.HIR::Function", align 8
  %360 = alloca %"class.HIR::TypeRef", align 8
  %361 = alloca %"struct.std::pair.390", align 8
  %362 = alloca %"struct.HIR::Pattern", align 8
  %363 = alloca %"class.HIR::TypeRef", align 8
  %364 = alloca %"class.HIR::TypeRef", align 8
  %365 = alloca %"class.MIR::FunctionPointer", align 8
  %366 = alloca %"class.MIR::TypeResolve", align 8
  %367 = alloca %struct.FmtLambda, align 8
  %368 = alloca %"class.std::function", align 8
  %369 = alloca %class.anon.606, align 8
  %370 = alloca %"struct.(anonymous namespace)::Builder", align 8
  %371 = alloca %"struct.MIR::LValue", align 8
  %372 = alloca %"class.MIR::RValue", align 8
  %373 = alloca %"struct.MIR::RValue::Data_Tuple", align 8
  %374 = alloca %"struct.MIR::LValue", align 8
  %375 = alloca %"struct.MIR::LValue", align 8
  %376 = alloca %"struct.MIR::LValue", align 8
  %377 = alloca %"class.HIR::TypeRef", align 8
  %378 = alloca %struct.Span, align 8
  %379 = alloca %"class.std::function", align 8
  %380 = alloca %class.anon.607, align 1
  %381 = alloca %"struct.MIR::LValue", align 8
  %382 = alloca %"class.MIR::Statement", align 8
  %383 = alloca %"struct.MIR::Statement::Data_Drop", align 8
  %384 = alloca %"struct.MIR::LValue", align 8
  %385 = alloca ptr, align 8
  %386 = alloca %struct.Span, align 8
  %387 = alloca %"class.std::function", align 8
  %388 = alloca %class.anon.609, align 8
  %389 = alloca ptr, align 8
  %390 = alloca %struct.Span, align 8
  %391 = alloca %"class.std::function", align 8
  %392 = alloca %class.anon.610, align 8
  %393 = alloca ptr, align 8
  %394 = alloca %struct.Span, align 8
  %395 = alloca %"class.std::function", align 8
  %396 = alloca %class.anon.611, align 8
  %397 = alloca ptr, align 8
  %398 = alloca %struct.Span, align 8
  %399 = alloca %"class.std::function", align 8
  %400 = alloca %class.anon.612, align 8
  %401 = alloca %"class.MIR::Terminator", align 8
  %402 = alloca %"struct.MIR::LValue", align 8
  %403 = alloca %"struct.MIR::LValue", align 8
  %404 = alloca %"struct.MIR::LValue", align 8
  %405 = alloca %"struct.MIR::LValue", align 8
  %406 = alloca %"struct.MIR::LValue", align 8
  %407 = alloca %"struct.MIR::LValue", align 8
  %408 = alloca %"struct.MIR::LValue", align 8
  %409 = alloca %"struct.MIR::LValue", align 8
  %410 = alloca %"struct.MIR::LValue", align 8
  %411 = alloca %"struct.MIR::LValue", align 8
  %412 = alloca %"struct.MIR::LValue", align 8
  %413 = alloca %"struct.MIR::LValue", align 8
  %414 = alloca %"struct.MIR::LValue", align 8
  %415 = alloca %"struct.MIR::LValue", align 8
  %416 = alloca %"class.HIR::TypeRef", align 8
  %417 = alloca %"struct.MIR::LValue", align 8
  %418 = alloca %"struct.MIR::LValue", align 8
  %419 = alloca %"struct.MIR::LValue", align 8
  %420 = alloca %"class.HIR::TypeRef", align 8
  %421 = alloca %"struct.MIR::LValue", align 8
  %422 = alloca %"class.MIR::RValue", align 8
  %423 = alloca %"class.MIR::Constant", align 8
  %424 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %425 = alloca %"class.MIR::Terminator", align 8
  %426 = alloca %"struct.MIR::LValue", align 8
  %427 = alloca %"struct.MIR::LValue", align 8
  %428 = alloca %"class.MIR::RValue", align 8
  %429 = alloca %"struct.MIR::RValue::Data_BinOp", align 8
  %430 = alloca %"struct.MIR::LValue", align 8
  %431 = alloca %"class.MIR::Constant", align 8
  %432 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %433 = alloca %"struct.MIR::LValue", align 8
  %434 = alloca %"class.MIR::RValue", align 8
  %435 = alloca %"struct.MIR::RValue::Data_BinOp", align 8
  %436 = alloca %"struct.MIR::LValue", align 8
  %437 = alloca %"class.MIR::Constant", align 8
  %438 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %439 = alloca %"class.MIR::Terminator", align 8
  %440 = alloca %"struct.MIR::Terminator::Data_If", align 8
  %441 = alloca %struct.Span, align 8
  %442 = alloca %"class.std::function", align 8
  %443 = alloca %class.anon.613, align 1
  %444 = alloca %struct.Span, align 8
  %445 = alloca %"class.std::function", align 8
  %446 = alloca %class.anon.615, align 8
  %447 = alloca %"struct.MIR::LValue", align 8
  %448 = alloca %"struct.MIR::LValue", align 8
  %449 = alloca %"struct.MIR::LValue", align 8
  %450 = alloca %"struct.MIR::LValue", align 8
  %451 = alloca %"struct.MIR::LValue", align 8
  %452 = alloca %"class.MIR::Terminator", align 8
  %453 = alloca %"struct.MIR::LValue", align 8
  %454 = alloca %"struct.MIR::LValue", align 8
  %455 = alloca %"struct.MIR::Terminator::Data_Switch", align 8
  %456 = alloca %"struct.MIR::LValue", align 8
  %457 = alloca i32, align 4
  %458 = alloca %"class.MIR::Terminator", align 8
  %459 = alloca %"struct.MIR::Terminator::Data_Switch", align 8
  %460 = alloca %"struct.MIR::LValue", align 8
  %461 = alloca %"struct.MIR::LValue", align 8
  %462 = alloca %"struct.MIR::LValue", align 8
  %463 = alloca %"class.MIR::Terminator", align 8
  %464 = alloca %"class.HIR::Path", align 8
  %465 = alloca %"class.HIR::TypeRef", align 8
  %466 = alloca %"class.HIR::GenericPath", align 8
  %467 = alloca %"struct.HIR::SimplePath", align 8
  %468 = alloca %class.RcString, align 8
  %469 = alloca %"struct.HIR::PathParams", align 8
  %470 = alloca %struct.MonomorphState, align 8
  %471 = alloca %"class.HIR::Path", align 8
  %472 = alloca %"class.HIR::TypeRef", align 8
  %473 = alloca %"class.HIR::GenericPath", align 8
  %474 = alloca %"struct.HIR::SimplePath", align 8
  %475 = alloca %class.RcString, align 8
  %476 = alloca %"struct.HIR::PathParams", align 8
  %477 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %478 = alloca %struct.Span, align 8
  %479 = alloca %"class.std::function", align 8
  %480 = alloca %class.anon.626, align 8
  %481 = alloca %struct.Span, align 8
  %482 = alloca %"class.std::function", align 8
  %483 = alloca %class.anon.627, align 1
  %484 = alloca %"class.MIR::Terminator", align 8
  %485 = alloca %"class.HIR::ItemPath", align 8
  %486 = alloca %"class.std::unique_ptr.537", align 8
  %487 = alloca %"class.HIR::Path", align 8
  call void @llvm.lifetime.start.p0(i64 576, ptr nonnull %3) #12
  call void @_ZN12_GLOBAL__N_15StateC2ERN3HIR5CrateERK9TransList(ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(576) %1)
  %488 = load i32, ptr @gTargetVersion, align 4, !tbaa !5
  %489 = icmp sgt i32 %488, 0
  br i1 %489, label %490, label %598

490:                                              ; preds = %2
  %491 = getelementptr inbounds i8, ptr %1, i64 360
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #12
  %492 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %491) #12
  store ptr %492, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  %493 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %491) #12
  store ptr %493, ptr %5, align 8
  %494 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #12
  br i1 %494, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %490
  %495 = getelementptr inbounds i8, ptr %3, i64 520
  br label %498

._crit_edge:                                      ; preds = %504, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  %496 = getelementptr inbounds i8, ptr %3, i64 440
  %497 = call noundef zeroext i1 @_ZNKSt5dequeIN3HIR7TypeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %496) #12
  br i1 %497, label %._crit_edge2833, label %.lr.ph2832

498:                                              ; preds = %.lr.ph, %504
  %499 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %6, ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %500 unwind label %507

500:                                              ; preds = %498
  %501 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %495, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %502 unwind label %509

502:                                              ; preds = %500
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %503 unwind label %512

503:                                              ; preds = %502
  invoke void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull %7)
          to label %504 unwind label %514

504:                                              ; preds = %503
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #12
  %505 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #12
  %506 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #12
  br i1 %506, label %498, label %._crit_edge

507:                                              ; preds = %498
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %500
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #12
  br label %511

511:                                              ; preds = %509, %507
  %.pn1476 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  br label %516

512:                                              ; preds = %502
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %516

514:                                              ; preds = %503
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #12
  br label %516

516:                                              ; preds = %514, %512, %511
  %.pn1478 = phi { ptr, i32 } [ %515, %514 ], [ %513, %512 ], [ %.pn1476, %511 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  br label %3347

.lr.ph2832:                                       ; preds = %._crit_edge, %518
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIN3HIR7TypeRefESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %496) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %517)
  call void @_ZNSt5dequeIN3HIR7TypeRefESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %496) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8)
  invoke void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull %9)
          to label %518 unwind label %520

518:                                              ; preds = %.lr.ph2832
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  %519 = call noundef zeroext i1 @_ZNKSt5dequeIN3HIR7TypeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %496) #12
  br i1 %519, label %._crit_edge2833, label %.lr.ph2832, !llvm.loop !9

520:                                              ; preds = %.lr.ph2832
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %3347

._crit_edge2833:                                  ; preds = %518, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %522 = getelementptr inbounds i8, ptr %0, i64 424
  %523 = getelementptr inbounds i8, ptr %3, i64 568
  %524 = invoke ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %522, ptr noundef nonnull align 8 dereferenceable(8) %523)
          to label %525 unwind label %530

525:                                              ; preds = %._crit_edge2833
  store ptr %524, ptr %10, align 8
  %526 = getelementptr inbounds i8, ptr %3, i64 520
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %527 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %526) #12
  store ptr %527, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %528 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %526) #12
  store ptr %528, ptr %12, align 8
  %529 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %529, label %.lr.ph2835, label %._crit_edge2836

._crit_edge2836:                                  ; preds = %588, %525
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %598

530:                                              ; preds = %._crit_edge2833
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %597

.lr.ph2835:                                       ; preds = %525, %588
  %532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %533 = call ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %522) #12
  store ptr %533, ptr %13, align 8
  %534 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_5Crate9ImplGroupISt10unique_ptrINS1_9TraitImplESt14default_deleteIS7_EEEEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %13) #12
  br i1 %534, label %536, label %535

535:                                              ; preds = %.lr.ph2835
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, i32 noundef 380, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

536:                                              ; preds = %.lr.ph2835
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %14) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %15, ptr noundef nonnull align 8 dereferenceable(8) %532)
          to label %537 unwind label %553

537:                                              ; preds = %536
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %523)
          to label %538 unwind label %555

538:                                              ; preds = %537
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull %17)
          to label %539 unwind label %557

539:                                              ; preds = %538
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull @.str)
          to label %540 unwind label %559

540:                                              ; preds = %539
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %541 unwind label %561

541:                                              ; preds = %540
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %19)
          to label %542 unwind label %563

542:                                              ; preds = %541
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %20, ptr noundef nonnull align 8 dereferenceable(88) %14) #12
  %543 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %20)
          to label %544 unwind label %569

544:                                              ; preds = %542
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %20) #12
  %545 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_5Crate9ImplGroupISt10unique_ptrINS1_9TraitImplESt14default_deleteIS7_EEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  %546 = getelementptr inbounds i8, ptr %545, i64 8
  %547 = invoke noundef ptr @_ZNK3HIR5Crate9ImplGroupISt10unique_ptrINS_9TraitImplESt14default_deleteIS3_EEE17get_list_for_typeERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %546, ptr noundef nonnull align 8 dereferenceable(8) %532)
          to label %548 unwind label %.loopexit1614

548:                                              ; preds = %544
  %.not1470 = icmp eq ptr %547, null
  br i1 %.not1470, label %549, label %575

549:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  store ptr %532, ptr %23, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %22)
          to label %550 unwind label %571

550:                                              ; preds = %549
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  %551 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %551, ptr noundef nonnull @.str.10)
          to label %552 unwind label %573

552:                                              ; preds = %550
  invoke void @__cxa_throw(ptr nonnull %551, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1615

553:                                              ; preds = %536
  %554 = landingpad { ptr, i32 }
          cleanup
  br label %596

555:                                              ; preds = %537
  %556 = landingpad { ptr, i32 }
          cleanup
  br label %568

557:                                              ; preds = %538
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %567

559:                                              ; preds = %539
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %566

561:                                              ; preds = %540
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %565

563:                                              ; preds = %541
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  br label %565

565:                                              ; preds = %563, %561
  %.pn1465 = phi { ptr, i32 } [ %564, %563 ], [ %562, %561 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  br label %566

566:                                              ; preds = %565, %559
  %.pn1465.pn = phi { ptr, i32 } [ %.pn1465, %565 ], [ %560, %559 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  br label %567

567:                                              ; preds = %566, %557
  %.pn1465.pn.pn = phi { ptr, i32 } [ %.pn1465.pn, %566 ], [ %558, %557 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  br label %568

568:                                              ; preds = %567, %555
  %.pn1465.pn.pn.pn = phi { ptr, i32 } [ %.pn1465.pn.pn, %567 ], [ %556, %555 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #12
  br label %596

569:                                              ; preds = %542
  %570 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %20) #12
  br label %595

.loopexit1614:                                    ; preds = %544
  %lpad.loopexit1616 = landingpad { ptr, i32 }
          cleanup
  br label %595

.loopexit.split-lp1615:                           ; preds = %552
  %lpad.loopexit.split-lp1617 = landingpad { ptr, i32 }
          cleanup
  br label %595

571:                                              ; preds = %549
  %572 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %595

573:                                              ; preds = %550
  %574 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %551) #12
  br label %595

575:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %576 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #12
  %577 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #12
  %578 = invoke ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS4_EESt6vectorIS7_SaIS7_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_23ET_SJ_SJ_T0_"(ptr %576, ptr %577, ptr nonnull %532)
          to label %579 unwind label %586

579:                                              ; preds = %575
  store ptr %578, ptr %24, align 8
  %580 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %581 = call noundef nonnull align 8 dereferenceable(328) ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %580) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  %582 = getelementptr inbounds i8, ptr %581, i64 128
  %583 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %582) #12
  %584 = icmp eq i64 %583, 1
  br i1 %584, label %588, label %585

585:                                              ; preds = %579
  call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.9, i32 noundef 390, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

586:                                              ; preds = %575
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  br label %595

588:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %589 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %582) #12
  store ptr %589, ptr %25, align 8
  %590 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  %591 = getelementptr inbounds i8, ptr %590, i64 16
  %592 = getelementptr inbounds i8, ptr %543, i64 8
  store ptr %591, ptr %592, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #12
  %593 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  %594 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %594, label %.lr.ph2835, label %._crit_edge2836

595:                                              ; preds = %.loopexit1614, %.loopexit.split-lp1615, %571, %573, %586, %569
  %.pn1471.pn = phi { ptr, i32 } [ %570, %569 ], [ %587, %586 ], [ %574, %573 ], [ %572, %571 ], [ %lpad.loopexit1616, %.loopexit1614 ], [ %lpad.loopexit.split-lp1617, %.loopexit.split-lp1615 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #12
  br label %596

596:                                              ; preds = %595, %568, %553
  %.pn1471.pn.pn = phi { ptr, i32 } [ %.pn1471.pn, %595 ], [ %.pn1465.pn.pn.pn, %568 ], [ %554, %553 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br label %597

597:                                              ; preds = %596, %530
  %.pn1471.pn.pn.pn = phi { ptr, i32 } [ %.pn1471.pn.pn, %596 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %3347

598:                                              ; preds = %._crit_edge2836, %2
  %599 = getelementptr inbounds i8, ptr %1, i64 408
  %600 = call noundef zeroext i1 @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %599) #12
  br i1 %600, label %807, label %601

601:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str.12)
          to label %603 unwind label %618

603:                                              ; preds = %601
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %604 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %599) #12
  store ptr %604, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %605 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %599) #12
  store ptr %605, ptr %28, align 8
  %606 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %606, label %.lr.ph2838, label %._crit_edge2839

.lr.ph2838:                                       ; preds = %603
  %607 = getelementptr inbounds i8, ptr %34, i64 32
  %608 = getelementptr inbounds i8, ptr %35, i64 32
  %609 = getelementptr inbounds i8, ptr %32, i64 24
  %610 = getelementptr inbounds i8, ptr %31, i64 64
  %611 = getelementptr inbounds i8, ptr %38, i64 24
  %612 = getelementptr inbounds i8, ptr %38, i64 48
  %613 = getelementptr inbounds i8, ptr %38, i64 72
  %614 = getelementptr inbounds i8, ptr %37, i64 304
  %615 = getelementptr inbounds i8, ptr %49, i64 120
  %616 = getelementptr inbounds i8, ptr %49, i64 128
  %617 = getelementptr inbounds i8, ptr %53, i64 8
  br label %620

._crit_edge2839:                                  ; preds = %791, %603
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %807

618:                                              ; preds = %601
  %619 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  br label %3347

620:                                              ; preds = %.lr.ph2838, %791
  %621 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #12
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %30)
          to label %622 unwind label %691

622:                                              ; preds = %620
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %29, i32 noundef 0, ptr noundef nonnull %30)
          to label %623 unwind label %693

623:                                              ; preds = %622
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %31) #12
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %31)
          to label %624 unwind label %695

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %32) #12
  invoke void @_ZN3MIR10BasicBlockC2Ev(ptr noundef nonnull align 8 dereferenceable(192) %32)
          to label %625 unwind label %697

625:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %33) #12
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %34)
          to label %626 unwind label %699

626:                                              ; preds = %625
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %35, i32 noundef 0)
          to label %627 unwind label %701

627:                                              ; preds = %626
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %608, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %628 unwind label %703

628:                                              ; preds = %627
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %607, ptr noundef nonnull %35)
          to label %629 unwind label %.thread1486

629:                                              ; preds = %628
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %33, ptr noundef nonnull %34)
          to label %630 unwind label %706

630:                                              ; preds = %629
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(152) %33)
          to label %631 unwind label %708

631:                                              ; preds = %630
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %33) #12
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %34) #12
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #12
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %33) #12
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %36) #12
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %36)
          to label %632 unwind label %712

632:                                              ; preds = %631
  %633 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %609, ptr noundef nonnull align 8 dereferenceable(168) %36)
          to label %634 unwind label %714

634:                                              ; preds = %632
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %36) #12
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %36) #12
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %610, ptr noundef nonnull align 8 dereferenceable(192) %32)
          to label %635 unwind label %717

635:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %37) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %38, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %611, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %611) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %612, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %612) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %613, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %613) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %40) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %41) #12
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_selfE)
  invoke void @_ZN3HIR14PatternBindingC2EbNS0_4TypeE8RcStringj(ptr noundef nonnull align 8 dereferenceable(24) %42, i1 noundef zeroext false, i32 noundef 0, ptr noundef nonnull %43, i32 noundef 0)
          to label %636 unwind label %719

636:                                              ; preds = %635
  invoke void @_ZN3HIR7Pattern4Data8make_AnyENS1_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Pattern::Data") align 8 %44)
          to label %637 unwind label %721

637:                                              ; preds = %636
  invoke void @_ZN3HIR7PatternC2ENS_14PatternBindingENS0_4DataE(ptr noundef nonnull align 8 dereferenceable(212) %41, ptr noundef nonnull %42, ptr noundef nonnull %44)
          to label %638 unwind label %723

638:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %45, ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %639 unwind label %725

639:                                              ; preds = %638
  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.390") align 8 %40, ptr noundef nonnull align 8 dereferenceable(212) %41, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %640 unwind label %727

640:                                              ; preds = %639
  invoke void @_Z9make_vec1ISt4pairIN3HIR7PatternENS1_7TypeRefEEESt6vectorIT_SaIS6_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.301") align 8 %39, ptr noundef nonnull align 8 dereferenceable(224) %40)
          to label %641 unwind label %729

641:                                              ; preds = %640
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %29)
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %47)
          to label %642 unwind label %731

642:                                              ; preds = %641
  invoke void @_ZN3HIR8FunctionC2ENS0_8ReceiverENS_13GenericParamsESt6vectorISt4pairINS_7PatternENS_7TypeRefEESaIS7_EES6_NS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(352) %37, i32 noundef 1, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %46, ptr noundef nonnull %47)
          to label %643 unwind label %733

643:                                              ; preds = %642
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %47) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #12
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %40) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %41) #12
  call void @_ZN3HIR7Pattern4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %44) #12
  call void @_ZN3HIR14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %40) #12
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %38) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #12
  %644 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %645 unwind label %742

645:                                              ; preds = %643
  invoke void @_ZN3MIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %644, ptr noundef nonnull align 8 dereferenceable(96) %31)
          to label %646 unwind label %744

646:                                              ; preds = %645
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %644)
  %647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %648 unwind label %746

648:                                              ; preds = %646
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #12
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %49) #12
  invoke void @_ZN3HIR9TraitImplC2Ev(ptr noundef nonnull align 8 dereferenceable(328) %49)
          to label %649 unwind label %749

649:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %50, ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %650 unwind label %751

650:                                              ; preds = %649
  %651 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %615, ptr noundef nonnull align 8 dereferenceable(8) %50)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #12
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %51) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #12
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %52, ptr noundef nonnull @.str.13)
          to label %652 unwind label %753

652:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %53) #12
  store i8 0, ptr %53, align 8, !tbaa !36
  invoke void @_ZN3HIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(352) %617, ptr noundef nonnull align 8 dereferenceable(352) %37)
          to label %653 unwind label %755

653:                                              ; preds = %652
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.426") align 8 %51, ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(360) %53)
          to label %654 unwind label %757

654:                                              ; preds = %653
  %655 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %616, ptr noundef nonnull align 8 dereferenceable(368) %51)
          to label %656 unwind label %759

656:                                              ; preds = %654
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %51) #12
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %53) #12
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %53) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #12
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %51) #12
  %657 = load ptr, ptr %3, align 8, !tbaa !76
  %658 = getelementptr inbounds i8, ptr %657, i64 424
  %659 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %658, ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %660 unwind label %764

660:                                              ; preds = %656
  %661 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR5Crate9ImplGroupISt10unique_ptrINS_9TraitImplESt14default_deleteIS3_EEE21get_list_for_type_mutERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %659, ptr noundef nonnull align 8 dereferenceable(8) %615)
          to label %662 unwind label %764

662:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #12
  invoke void @_Z15make_unique_ptrIN3HIR9TraitImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.246") align 8 %54, ptr noundef nonnull align 8 dereferenceable(328) %49)
          to label %663 unwind label %766

663:                                              ; preds = %662
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %661, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %664 unwind label %768

664:                                              ; preds = %663
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #12
  %665 = load ptr, ptr %3, align 8, !tbaa !76
  %666 = getelementptr inbounds i8, ptr %665, i64 640
  %667 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupIPKNS0_9TraitImplEEESt4lessIS1_ESaISt4pairIKS1_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %666, ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %668 unwind label %764

668:                                              ; preds = %664
  %669 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %661) #12
  %670 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %669) #12
  %671 = getelementptr inbounds i8, ptr %670, i64 120
  %672 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR5Crate9ImplGroupIPKNS_9TraitImplEE21get_list_for_type_mutERKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(96) %667, ptr noundef nonnull align 8 dereferenceable(8) %671)
          to label %673 unwind label %764

673:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #12
  %674 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %661) #12
  %675 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %674) #12
  store ptr %675, ptr %55, align 8, !tbaa !11
  invoke void @_ZNSt6vectorIPKN3HIR9TraitImplESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %672, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %676 unwind label %771

676:                                              ; preds = %673
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %56) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %57, ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %677 unwind label %773

677:                                              ; preds = %676
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %602)
          to label %678 unwind label %775

678:                                              ; preds = %677
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull %59)
          to label %679 unwind label %777

679:                                              ; preds = %678
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull @.str.13)
          to label %680 unwind label %779

680:                                              ; preds = %679
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %681 unwind label %781

681:                                              ; preds = %680
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %56, ptr noundef nonnull %57, ptr noundef nonnull %58, ptr noundef nonnull %60, ptr noundef nonnull %61)
          to label %682 unwind label %783

682:                                              ; preds = %681
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %62, ptr noundef nonnull align 8 dereferenceable(88) %56) #12
  %683 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %62)
          to label %684 unwind label %789

684:                                              ; preds = %682
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #12
  %685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %661) #12
  %686 = call noundef nonnull align 8 dereferenceable(328) ptr @_ZNKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %685) #12
  %687 = getelementptr inbounds i8, ptr %686, i64 128
  %688 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %687) #12
  %689 = icmp eq i64 %688, 1
  br i1 %689, label %791, label %690

690:                                              ; preds = %684
  call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.9, i32 noundef 443, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

691:                                              ; preds = %620
  %692 = landingpad { ptr, i32 }
          cleanup
  br label %806

693:                                              ; preds = %622
  %694 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  br label %806

695:                                              ; preds = %623
  %696 = landingpad { ptr, i32 }
          cleanup
  br label %805

697:                                              ; preds = %624
  %698 = landingpad { ptr, i32 }
          cleanup
  br label %804

699:                                              ; preds = %625
  %700 = landingpad { ptr, i32 }
          cleanup
  br label %711

701:                                              ; preds = %626
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %.thread

703:                                              ; preds = %627
  %704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #12
  br label %.thread

.thread1486:                                      ; preds = %628
  %705 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #12
  br label %.thread

706:                                              ; preds = %629
  %707 = landingpad { ptr, i32 }
          cleanup
  br label %710

708:                                              ; preds = %630
  %709 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %33) #12
  br label %710

710:                                              ; preds = %706, %708
  %.pn = phi { ptr, i32 } [ %709, %708 ], [ %707, %706 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %34) #12
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #12
  br label %711

.thread:                                          ; preds = %701, %703, %.thread1486
  %.pn.pn.pn1485 = phi { ptr, i32 } [ %705, %.thread1486 ], [ %702, %701 ], [ %704, %703 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  br label %711

711:                                              ; preds = %710, %.thread, %699
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn1485, %.thread ], [ %.pn, %710 ], [ %700, %699 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %33) #12
  br label %803

712:                                              ; preds = %631
  %713 = landingpad { ptr, i32 }
          cleanup
  br label %716

714:                                              ; preds = %632
  %715 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %36) #12
  br label %716

716:                                              ; preds = %714, %712
  %.pn982 = phi { ptr, i32 } [ %715, %714 ], [ %713, %712 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %36) #12
  br label %803

717:                                              ; preds = %634
  %718 = landingpad { ptr, i32 }
          cleanup
  br label %803

719:                                              ; preds = %635
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %741

721:                                              ; preds = %636
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %740

723:                                              ; preds = %637
  %724 = landingpad { ptr, i32 }
          cleanup
  br label %739

725:                                              ; preds = %638
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %738

727:                                              ; preds = %639
  %728 = landingpad { ptr, i32 }
          cleanup
  br label %737

729:                                              ; preds = %640
  %730 = landingpad { ptr, i32 }
          cleanup
  br label %736

731:                                              ; preds = %641
  %732 = landingpad { ptr, i32 }
          cleanup
  br label %735

733:                                              ; preds = %642
  %734 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %47) #12
  br label %735

735:                                              ; preds = %733, %731
  %.pn984 = phi { ptr, i32 } [ %734, %733 ], [ %732, %731 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #12
  br label %736

736:                                              ; preds = %735, %729
  %.pn984.pn = phi { ptr, i32 } [ %.pn984, %735 ], [ %730, %729 ]
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %40) #12
  br label %737

737:                                              ; preds = %736, %727
  %.pn984.pn.pn = phi { ptr, i32 } [ %.pn984.pn, %736 ], [ %728, %727 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #12
  br label %738

738:                                              ; preds = %737, %725
  %.pn984.pn.pn.pn = phi { ptr, i32 } [ %.pn984.pn.pn, %737 ], [ %726, %725 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %41) #12
  br label %739

739:                                              ; preds = %738, %723
  %.pn984.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn984.pn.pn.pn, %738 ], [ %724, %723 ]
  call void @_ZN3HIR7Pattern4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %44) #12
  br label %740

740:                                              ; preds = %739, %721
  %.pn984.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn984.pn.pn.pn.pn, %739 ], [ %722, %721 ]
  call void @_ZN3HIR14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #12
  br label %741

741:                                              ; preds = %740, %719
  %.pn984.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn984.pn.pn.pn.pn.pn, %740 ], [ %720, %719 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %40) #12
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %38) #12
  br label %802

742:                                              ; preds = %643
  %743 = landingpad { ptr, i32 }
          cleanup
  br label %748

744:                                              ; preds = %645
  %745 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %644, i64 noundef 96) #16
  br label %748

746:                                              ; preds = %646
  %747 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #12
  br label %748

748:                                              ; preds = %746, %744, %742
  %.pn992 = phi { ptr, i32 } [ %747, %746 ], [ %745, %744 ], [ %743, %742 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #12
  br label %801

749:                                              ; preds = %648
  %750 = landingpad { ptr, i32 }
          cleanup
  br label %800

751:                                              ; preds = %649
  %752 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #12
  br label %799

753:                                              ; preds = %650
  %754 = landingpad { ptr, i32 }
          cleanup
  br label %763

755:                                              ; preds = %652
  %756 = landingpad { ptr, i32 }
          cleanup
  br label %762

757:                                              ; preds = %653
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %761

759:                                              ; preds = %654
  %760 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(368) %51) #12
  br label %761

761:                                              ; preds = %759, %757
  %.pn994 = phi { ptr, i32 } [ %760, %759 ], [ %758, %757 ]
  call void @_ZN3HIR9TraitImpl7ImplEntINS_8FunctionEED2Ev(ptr noundef nonnull align 8 dereferenceable(360) %53) #12
  br label %762

762:                                              ; preds = %761, %755
  %.pn994.pn = phi { ptr, i32 } [ %.pn994, %761 ], [ %756, %755 ]
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %53) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #12
  br label %763

763:                                              ; preds = %762, %753
  %.pn994.pn.pn = phi { ptr, i32 } [ %.pn994.pn, %762 ], [ %754, %753 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #12
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %51) #12
  br label %799

764:                                              ; preds = %668, %664, %660, %656
  %765 = landingpad { ptr, i32 }
          cleanup
  br label %799

766:                                              ; preds = %662
  %767 = landingpad { ptr, i32 }
          cleanup
  br label %770

768:                                              ; preds = %663
  %769 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #12
  br label %770

770:                                              ; preds = %768, %766
  %.pn998 = phi { ptr, i32 } [ %769, %768 ], [ %767, %766 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #12
  br label %799

771:                                              ; preds = %673
  %772 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #12
  br label %799

773:                                              ; preds = %676
  %774 = landingpad { ptr, i32 }
          cleanup
  br label %798

775:                                              ; preds = %677
  %776 = landingpad { ptr, i32 }
          cleanup
  br label %788

777:                                              ; preds = %678
  %778 = landingpad { ptr, i32 }
          cleanup
  br label %787

779:                                              ; preds = %679
  %780 = landingpad { ptr, i32 }
          cleanup
  br label %786

781:                                              ; preds = %680
  %782 = landingpad { ptr, i32 }
          cleanup
  br label %785

783:                                              ; preds = %681
  %784 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  br label %785

785:                                              ; preds = %783, %781
  %.pn1000 = phi { ptr, i32 } [ %784, %783 ], [ %782, %781 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #12
  br label %786

786:                                              ; preds = %785, %779
  %.pn1000.pn = phi { ptr, i32 } [ %.pn1000, %785 ], [ %780, %779 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #12
  br label %787

787:                                              ; preds = %786, %777
  %.pn1000.pn.pn = phi { ptr, i32 } [ %.pn1000.pn, %786 ], [ %778, %777 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #12
  br label %788

788:                                              ; preds = %787, %775
  %.pn1000.pn.pn.pn = phi { ptr, i32 } [ %.pn1000.pn.pn, %787 ], [ %776, %775 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #12
  br label %798

789:                                              ; preds = %682
  %790 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %56) #12
  br label %798

791:                                              ; preds = %684
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #12
  %792 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %687) #12
  store ptr %792, ptr %63, align 8
  %793 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitImpl7ImplEntINS3_8FunctionEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #12
  %794 = getelementptr inbounds i8, ptr %793, i64 16
  %795 = getelementptr inbounds i8, ptr %683, i64 8
  store ptr %794, ptr %795, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %56) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %56) #12
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %49) #12
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %49) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %37) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %37) #12
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %32) #12
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %32) #12
  call void @_ZN3MIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %31) #12
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %31) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  %796 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  %797 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %797, label %620, label %._crit_edge2839

798:                                              ; preds = %789, %788, %773
  %.pn1005 = phi { ptr, i32 } [ %790, %789 ], [ %.pn1000.pn.pn.pn, %788 ], [ %774, %773 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %56) #12
  br label %799

799:                                              ; preds = %764, %770, %771, %798, %763, %751
  %.pn1005.pn.pn = phi { ptr, i32 } [ %.pn994.pn.pn, %763 ], [ %752, %751 ], [ %.pn1005, %798 ], [ %772, %771 ], [ %765, %764 ], [ %.pn998, %770 ]
  call void @_ZN3HIR9TraitImplD2Ev(ptr noundef nonnull align 8 dereferenceable(328) %49) #12
  br label %800

800:                                              ; preds = %799, %749
  %.pn1005.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn, %799 ], [ %750, %749 ]
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %49) #12
  br label %801

801:                                              ; preds = %800, %748
  %.pn1005.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn, %800 ], [ %.pn992, %748 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %37) #12
  br label %802

802:                                              ; preds = %801, %741
  %.pn1005.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn.pn, %801 ], [ %.pn984.pn.pn.pn.pn.pn.pn, %741 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %37) #12
  br label %803

803:                                              ; preds = %802, %717, %716, %711
  %.pn1005.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn.pn.pn, %802 ], [ %718, %717 ], [ %.pn982, %716 ], [ %.pn.pn.pn.pn, %711 ]
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %32) #12
  br label %804

804:                                              ; preds = %803, %697
  %.pn1005.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn.pn.pn.pn, %803 ], [ %698, %697 ]
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %32) #12
  call void @_ZN3MIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %31) #12
  br label %805

805:                                              ; preds = %804, %695
  %.pn1005.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn.pn.pn.pn.pn, %804 ], [ %696, %695 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %31) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #12
  br label %806

806:                                              ; preds = %805, %693, %691
  %.pn1005.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1005.pn.pn.pn.pn.pn.pn.pn.pn, %805 ], [ %694, %693 ], [ %692, %691 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %3347

807:                                              ; preds = %._crit_edge2839, %598
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %64) #12
  %808 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %809 unwind label %827

809:                                              ; preds = %807
  %810 = select i1 %808, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(1) %66) #12
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %64, ptr noundef %810, ptr noundef nonnull %65)
          to label %811 unwind label %829

811:                                              ; preds = %809
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #12
  %812 = getelementptr inbounds i8, ptr %1, i64 528
  %813 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %814 = getelementptr inbounds i8, ptr %1, i64 456
  %815 = call noundef i64 @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %814) #12
  %816 = add i64 %815, %813
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %812, i64 noundef %816)
          to label %817 unwind label %831

817:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #12
  %818 = call ptr @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %814) #12
  store ptr %818, ptr %67, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #12
  %819 = call ptr @_ZNKSt3setIN3HIR4PathESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %814) #12
  store ptr %819, ptr %68, align 8
  %820 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR4PathEES4_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #12
  br i1 %820, label %.lr.ph2848, label %._crit_edge2849

.lr.ph2848:                                       ; preds = %817
  %821 = getelementptr inbounds i8, ptr %74, i64 240
  %822 = getelementptr inbounds i8, ptr %3, i64 8
  %823 = getelementptr inbounds i8, ptr %74, i64 208
  %824 = getelementptr inbounds i8, ptr %74, i64 304
  %825 = getelementptr inbounds i8, ptr %105, i64 16
  br label %833

._crit_edge2849:                                  ; preds = %1276, %817
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #12
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %64) #12
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %140) #12
  %826 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1325 unwind label %1366

827:                                              ; preds = %807
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %1365

829:                                              ; preds = %809
  %830 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #12
  br label %1365

831:                                              ; preds = %811
  %832 = landingpad { ptr, i32 }
          cleanup
  br label %1364

833:                                              ; preds = %.lr.ph2848, %1276
  %834 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR4PathEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #12
  %835 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %836 unwind label %846

836:                                              ; preds = %833
  br i1 %835, label %837, label %848

837:                                              ; preds = %836
  %838 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %839 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %838, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %840 unwind label %846

840:                                              ; preds = %837
  %841 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %839, ptr noundef nonnull align 8 dereferenceable(88) %834)
          to label %842 unwind label %846

842:                                              ; preds = %840
  %843 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %841, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %844 unwind label %846

844:                                              ; preds = %842
  %845 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %843, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %848 unwind label %846

846:                                              ; preds = %844, %842, %840, %837, %833
  %847 = landingpad { ptr, i32 }
          cleanup
  br label %1324

848:                                              ; preds = %844, %836
  %849 = load atomic i8, ptr @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp acquire, align 8
  %850 = icmp eq i8 %849, 0
  br i1 %850, label %851, label %855, !prof !115

851:                                              ; preds = %848
  %852 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp) #12
  %.not1378 = icmp eq i32 %852, 0
  br i1 %.not1378, label %855, label %853

853:                                              ; preds = %851
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
  %854 = call i32 @__cxa_atexit(ptr nonnull @_ZN4SpanD1Ev, ptr nonnull @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr nonnull @__dso_handle) #12
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp) #12
  br label %855

855:                                              ; preds = %853, %851, %848
  %856 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %834)
  %857 = getelementptr inbounds i8, ptr %856, i64 8
  %858 = getelementptr inbounds i8, ptr %856, i64 40
  %859 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %856)
  %860 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %859)
  %861 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %857)
          to label %862 unwind label %879

862:                                              ; preds = %855
  %863 = getelementptr inbounds i8, ptr %861, i64 192
  %864 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %863, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %865 unwind label %881

865:                                              ; preds = %862
  %866 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %864)
  %867 = getelementptr inbounds i8, ptr %860, i64 136
  %868 = load ptr, ptr %867, align 8, !tbaa !116
  %869 = invoke noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400) %868, ptr noundef nonnull align 8 dereferenceable(32) %857, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %870 unwind label %.loopexit1599

870:                                              ; preds = %865
  %.not1379 = icmp eq i32 %869, 0
  br i1 %.not1379, label %871, label %893

871:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %872 unwind label %883

872:                                              ; preds = %871
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #12
  store ptr %858, ptr %71, align 8, !tbaa !11
  %873 = getelementptr inbounds i8, ptr %71, i64 8
  store ptr %857, ptr %873, align 8, !tbaa !11
  %874 = getelementptr inbounds i8, ptr %71, i64 16
  store ptr %856, ptr %874, align 8, !tbaa !11
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %875 unwind label %885

875:                                              ; preds = %872
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull %70)
          to label %876 unwind label %887

876:                                              ; preds = %875
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #12
  %877 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %877, ptr noundef nonnull @.str.10)
          to label %878 unwind label %891

878:                                              ; preds = %876
  invoke void @__cxa_throw(ptr nonnull %877, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1600

879:                                              ; preds = %855
  %880 = landingpad { ptr, i32 }
          cleanup
  br label %1324

881:                                              ; preds = %862
  %882 = landingpad { ptr, i32 }
          cleanup
  br label %1324

.loopexit1599:                                    ; preds = %865
  %lpad.loopexit1601 = landingpad { ptr, i32 }
          cleanup
  br label %1324

.loopexit.split-lp1600:                           ; preds = %878
  %lpad.loopexit.split-lp1602 = landingpad { ptr, i32 }
          cleanup
  br label %1324

883:                                              ; preds = %871
  %884 = landingpad { ptr, i32 }
          cleanup
  br label %890

885:                                              ; preds = %872
  %886 = landingpad { ptr, i32 }
          cleanup
  br label %889

887:                                              ; preds = %875
  %888 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  br label %889

889:                                              ; preds = %887, %885
  %.pn1380 = phi { ptr, i32 } [ %888, %887 ], [ %886, %885 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #12
  br label %890

890:                                              ; preds = %889, %883
  %.pn1380.pn = phi { ptr, i32 } [ %.pn1380, %889 ], [ %884, %883 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #12
  br label %1324

891:                                              ; preds = %876
  %892 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %877) #12
  br label %1324

893:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %72) #12
  %894 = getelementptr inbounds i8, ptr %866, i64 112
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %72, ptr noundef nonnull align 8 dereferenceable(96) %894, i32 noundef 1, i1 noundef zeroext true)
          to label %895 unwind label %908

895:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %73) #12
  %896 = getelementptr inbounds i8, ptr %856, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %73, ptr noundef nonnull %856, ptr noundef nonnull %896, ptr noundef nonnull %72, ptr noundef null, ptr noundef null)
          to label %897 unwind label %910

897:                                              ; preds = %895
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %74) #12
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %74)
          to label %898 unwind label %912

898:                                              ; preds = %897
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #12
  %899 = getelementptr inbounds i8, ptr %866, i64 240
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(96) %73, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %899, i1 noundef zeroext true)
          to label %900 unwind label %914

900:                                              ; preds = %898
  %901 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %821, ptr noundef nonnull align 8 dereferenceable(8) %75)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #12
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %822, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %821)
          to label %902 unwind label %.loopexit1604

902:                                              ; preds = %900
  %903 = getelementptr inbounds i8, ptr %866, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #12
  %904 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %903) #12
  store ptr %904, ptr %76, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #12
  %905 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %903) #12
  store ptr %905, ptr %77, align 8
  %906 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #12
  br i1 %906, label %.lr.ph2841, label %._crit_edge2842

._crit_edge2842:                                  ; preds = %924, %902
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #12
  %907 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  br i1 %907, label %941, label %953

908:                                              ; preds = %893
  %909 = landingpad { ptr, i32 }
          cleanup
  br label %1323

910:                                              ; preds = %895
  %911 = landingpad { ptr, i32 }
          cleanup
  br label %1322

912:                                              ; preds = %897
  %913 = landingpad { ptr, i32 }
          cleanup
  br label %1321

914:                                              ; preds = %898
  %915 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #12
  br label %1320

.loopexit1604:                                    ; preds = %900
  %lpad.loopexit1606 = landingpad { ptr, i32 }
          cleanup
  br label %1320

.loopexit.split-lp1605:                           ; preds = %945
  %lpad.loopexit.split-lp1607 = landingpad { ptr, i32 }
          cleanup
  br label %1320

.lr.ph2841:                                       ; preds = %902, %924
  %916 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %78) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %79) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %79)
          to label %917 unwind label %927

917:                                              ; preds = %.lr.ph2841
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #12
  %918 = getelementptr inbounds i8, ptr %916, i64 216
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(96) %73, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %918, i1 noundef zeroext true)
          to label %919 unwind label %929

919:                                              ; preds = %917
  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.390") align 8 %78, ptr noundef nonnull align 8 dereferenceable(212) %79, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %920 unwind label %931

920:                                              ; preds = %919
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %823, ptr noundef nonnull align 8 dereferenceable(224) %78)
          to label %921 unwind label %933

921:                                              ; preds = %920
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %78) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %79) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %79) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %78) #12
  %922 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %923 = getelementptr inbounds i8, ptr %922, i64 216
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %822, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(8) %923)
          to label %924 unwind label %938

924:                                              ; preds = %921
  %925 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #12
  %926 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #12
  br i1 %926, label %.lr.ph2841, label %._crit_edge2842

927:                                              ; preds = %.lr.ph2841
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %937

929:                                              ; preds = %917
  %930 = landingpad { ptr, i32 }
          cleanup
  br label %936

931:                                              ; preds = %919
  %932 = landingpad { ptr, i32 }
          cleanup
  br label %935

933:                                              ; preds = %920
  %934 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %78) #12
  br label %935

935:                                              ; preds = %933, %931
  %.pn1449 = phi { ptr, i32 } [ %934, %933 ], [ %932, %931 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #12
  br label %936

936:                                              ; preds = %935, %929
  %.pn1449.pn = phi { ptr, i32 } [ %.pn1449, %935 ], [ %930, %929 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %79) #12
  br label %937

937:                                              ; preds = %936, %927
  %.pn1449.pn.pn = phi { ptr, i32 } [ %.pn1449.pn, %936 ], [ %928, %927 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %79) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %78) #12
  br label %940

938:                                              ; preds = %921
  %939 = landingpad { ptr, i32 }
          cleanup
  br label %940

940:                                              ; preds = %938, %937
  %.pn1453 = phi { ptr, i32 } [ %939, %938 ], [ %.pn1449.pn.pn, %937 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #12
  br label %1320

941:                                              ; preds = %._crit_edge2842
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %942 unwind label %946

942:                                              ; preds = %941
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %83) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 1 dereferenceable(1) %83) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull %82)
          to label %943 unwind label %948

943:                                              ; preds = %942
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #12
  %944 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %944, ptr noundef nonnull @.str.10)
          to label %945 unwind label %951

945:                                              ; preds = %943
  invoke void @__cxa_throw(ptr nonnull %944, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1605

946:                                              ; preds = %941
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %950

948:                                              ; preds = %942
  %949 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #12
  br label %950

950:                                              ; preds = %948, %946
  %.pn1447 = phi { ptr, i32 } [ %949, %948 ], [ %947, %946 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #12
  br label %1320

951:                                              ; preds = %943
  %952 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %944) #12
  br label %1320

953:                                              ; preds = %._crit_edge2842
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #12
  %954 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %955 unwind label %966

955:                                              ; preds = %953
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %954, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %954)
          to label %956 unwind label %968

956:                                              ; preds = %955
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull %954)
  %957 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %824, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %958 unwind label %970

958:                                              ; preds = %956
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %85) #12
  %959 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %960 unwind label %973

960:                                              ; preds = %958
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(96) %959)
          to label %961 unwind label %973

961:                                              ; preds = %960
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #12
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %86, i32 noundef 0)
          to label %962 unwind label %975

962:                                              ; preds = %961
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #12
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %963 unwind label %977

963:                                              ; preds = %962
  %964 = getelementptr inbounds i8, ptr %866, i64 80
  %965 = load i32, ptr %964, align 8, !tbaa !139
  switch i32 %965, label %1181 [
    i32 1, label %979
    i32 2, label %1035
    i32 3, label %1035
    i32 4, label %1035
    i32 5, label %1109
  ]

966:                                              ; preds = %953
  %967 = landingpad { ptr, i32 }
          cleanup
  br label %972

968:                                              ; preds = %955
  %969 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %954, i64 noundef 96) #16
  br label %972

970:                                              ; preds = %956
  %971 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  br label %972

972:                                              ; preds = %970, %968, %966
  %.pn1383 = phi { ptr, i32 } [ %971, %970 ], [ %969, %968 ], [ %967, %966 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #12
  br label %1320

973:                                              ; preds = %960, %958
  %974 = landingpad { ptr, i32 }
          cleanup
  br label %1319

975:                                              ; preds = %961
  %976 = landingpad { ptr, i32 }
          cleanup
  br label %1318

977:                                              ; preds = %962
  %978 = landingpad { ptr, i32 }
          cleanup
  br label %1317

979:                                              ; preds = %963
  %980 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %981 = getelementptr inbounds i8, ptr %980, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %981)
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %88, i32 noundef 2, ptr noundef nonnull %89)
          to label %982 unwind label %1012

982:                                              ; preds = %979
  %983 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %981, ptr noundef nonnull align 8 dereferenceable(8) %88)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #12
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %92)
          to label %984 unwind label %1014

984:                                              ; preds = %982
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %91, i32 noundef 2, ptr noundef nonnull %92)
          to label %985 unwind label %1016

985:                                              ; preds = %984
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %90, ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %91)
          to label %986 unwind label %1018

986:                                              ; preds = %985
  %987 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %988 unwind label %1020

988:                                              ; preds = %986
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %93, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %989 unwind label %1025

989:                                              ; preds = %988
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %95, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %990 unwind label %1027

990:                                              ; preds = %989
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %94, ptr noundef nonnull %95)
          to label %991 unwind label %1029

991:                                              ; preds = %990
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %93, ptr noundef nonnull %94)
          to label %992 unwind label %1031

992:                                              ; preds = %991
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %94) #12
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #12
  %993 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %994 unwind label %1025

994:                                              ; preds = %992
  br i1 %993, label %995, label %1203

995:                                              ; preds = %994
  %996 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %996, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %998 unwind label %1025

998:                                              ; preds = %995
  %999 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %997, ptr noundef nonnull @.str.14)
          to label %1000 unwind label %1025

1000:                                             ; preds = %998
  %1001 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %999, ptr noundef nonnull align 8 dereferenceable(32) %857)
          to label %1002 unwind label %1025

1002:                                             ; preds = %1000
  %1003 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1001, ptr noundef nonnull @.str.15)
          to label %1004 unwind label %1025

1004:                                             ; preds = %1002
  %1005 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1003, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %1006 unwind label %1025

1006:                                             ; preds = %1004
  %1007 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1005, ptr noundef nonnull @.str.16)
          to label %1008 unwind label %1025

1008:                                             ; preds = %1006
  %1009 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1007, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1010 unwind label %1025

1010:                                             ; preds = %1008
  %1011 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1009, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1203 unwind label %1025

1012:                                             ; preds = %979
  %1013 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #12
  br label %1316

1014:                                             ; preds = %982
  %1015 = landingpad { ptr, i32 }
          cleanup
  br label %1024

1016:                                             ; preds = %984
  %1017 = landingpad { ptr, i32 }
          cleanup
  br label %1023

1018:                                             ; preds = %985
  %1019 = landingpad { ptr, i32 }
          cleanup
  br label %1022

1020:                                             ; preds = %986
  %1021 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #12
  br label %1022

1022:                                             ; preds = %1020, %1018
  %.pn1406 = phi { ptr, i32 } [ %1021, %1020 ], [ %1019, %1018 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #12
  br label %1023

1023:                                             ; preds = %1022, %1016
  %.pn1406.pn = phi { ptr, i32 } [ %.pn1406, %1022 ], [ %1017, %1016 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #12
  br label %1024

1024:                                             ; preds = %1023, %1014
  %.pn1406.pn.pn = phi { ptr, i32 } [ %.pn1406.pn, %1023 ], [ %1015, %1014 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #12
  br label %1316

1025:                                             ; preds = %1010, %1008, %1006, %1004, %1002, %1000, %998, %995, %992, %988
  %1026 = landingpad { ptr, i32 }
          cleanup
  br label %1316

1027:                                             ; preds = %989
  %1028 = landingpad { ptr, i32 }
          cleanup
  br label %1034

1029:                                             ; preds = %990
  %1030 = landingpad { ptr, i32 }
          cleanup
  br label %1033

1031:                                             ; preds = %991
  %1032 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %94) #12
  br label %1033

1033:                                             ; preds = %1031, %1029
  %.pn1410 = phi { ptr, i32 } [ %1032, %1031 ], [ %1030, %1029 ]
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #12
  br label %1034

1034:                                             ; preds = %1033, %1027
  %.pn1410.pn = phi { ptr, i32 } [ %.pn1410, %1033 ], [ %1028, %1027 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #12
  br label %1316

1035:                                             ; preds = %963, %963, %963
  %1036 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %1037 = getelementptr inbounds i8, ptr %1036, i64 216
  %1038 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1037)
  %1039 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1038)
  br i1 %1039, label %1052, label %1040

1040:                                             ; preds = %1035
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1041 unwind label %1045

1041:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #12
  store ptr %74, ptr %98, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull %97)
          to label %1042 unwind label %1047

1042:                                             ; preds = %1041
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #12
  %1043 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1043, ptr noundef nonnull @.str.10)
          to label %1044 unwind label %1050

1044:                                             ; preds = %1042
  invoke void @__cxa_throw(ptr nonnull %1043, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1610

.loopexit1609:                                    ; preds = %1109, %1112, %1115, %1117, %1119, %1121, %1123, %1125, %1127
  %lpad.loopexit1611 = landingpad { ptr, i32 }
          cleanup
  br label %1316

.loopexit.split-lp1610:                           ; preds = %1044
  %lpad.loopexit.split-lp1612 = landingpad { ptr, i32 }
          cleanup
  br label %1316

1045:                                             ; preds = %1040
  %1046 = landingpad { ptr, i32 }
          cleanup
  br label %1049

1047:                                             ; preds = %1041
  %1048 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #12
  br label %1049

1049:                                             ; preds = %1047, %1045
  %.pn1396 = phi { ptr, i32 } [ %1048, %1047 ], [ %1046, %1045 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #12
  br label %1316

1050:                                             ; preds = %1042
  %1051 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1043) #12
  br label %1316

1052:                                             ; preds = %1035
  %1053 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %1054 = getelementptr inbounds i8, ptr %1053, i64 216
  %1055 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1054)
  %1056 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1055)
  %1057 = getelementptr inbounds i8, ptr %1056, i64 4
  %1058 = load i32, ptr %1057, align 4, !tbaa !140
  %1059 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1060 unwind label %1078

1060:                                             ; preds = %1052
  br i1 %1059, label %1061, label %1080

1061:                                             ; preds = %1060
  %1062 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1063 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1062, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1064 unwind label %1078

1064:                                             ; preds = %1061
  %1065 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1063, ptr noundef nonnull @.str.14)
          to label %1066 unwind label %1078

1066:                                             ; preds = %1064
  %1067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1065, ptr noundef nonnull align 8 dereferenceable(32) %857)
          to label %1068 unwind label %1078

1068:                                             ; preds = %1066
  %1069 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1067, ptr noundef nonnull @.str.15)
          to label %1070 unwind label %1078

1070:                                             ; preds = %1068
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1069, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %1072 unwind label %1078

1072:                                             ; preds = %1070
  %1073 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1071, ptr noundef nonnull @.str.17)
          to label %1074 unwind label %1078

1074:                                             ; preds = %1072
  %1075 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1073, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1076 unwind label %1078

1076:                                             ; preds = %1074
  %1077 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1075, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1080 unwind label %1078

1078:                                             ; preds = %1085, %1076, %1074, %1072, %1070, %1068, %1066, %1064, %1061, %1052
  %1079 = landingpad { ptr, i32 }
          cleanup
  br label %1316

1080:                                             ; preds = %1076, %1060
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #12
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %101)
          to label %1081 unwind label %1090

1081:                                             ; preds = %1080
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %100, i32 noundef %1058, ptr noundef nonnull %101)
          to label %1082 unwind label %1092

1082:                                             ; preds = %1081
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %99, ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %100)
          to label %1083 unwind label %1094

1083:                                             ; preds = %1082
  %1084 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %1085 unwind label %1096

1085:                                             ; preds = %1083
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %102, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %1086 unwind label %1078

1086:                                             ; preds = %1085
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %104, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %1087 unwind label %1101

1087:                                             ; preds = %1086
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %103, ptr noundef nonnull %104)
          to label %1088 unwind label %1103

1088:                                             ; preds = %1087
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %102, ptr noundef nonnull %103)
          to label %1089 unwind label %1105

1089:                                             ; preds = %1088
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %103) #12
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #12
  br label %1203

1090:                                             ; preds = %1080
  %1091 = landingpad { ptr, i32 }
          cleanup
  br label %1100

1092:                                             ; preds = %1081
  %1093 = landingpad { ptr, i32 }
          cleanup
  br label %1099

1094:                                             ; preds = %1082
  %1095 = landingpad { ptr, i32 }
          cleanup
  br label %1098

1096:                                             ; preds = %1083
  %1097 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #12
  br label %1098

1098:                                             ; preds = %1096, %1094
  %.pn1398 = phi { ptr, i32 } [ %1097, %1096 ], [ %1095, %1094 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #12
  br label %1099

1099:                                             ; preds = %1098, %1092
  %.pn1398.pn = phi { ptr, i32 } [ %.pn1398, %1098 ], [ %1093, %1092 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #12
  br label %1100

1100:                                             ; preds = %1099, %1090
  %.pn1398.pn.pn = phi { ptr, i32 } [ %.pn1398.pn, %1099 ], [ %1091, %1090 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #12
  br label %1316

1101:                                             ; preds = %1086
  %1102 = landingpad { ptr, i32 }
          cleanup
  br label %1108

1103:                                             ; preds = %1087
  %1104 = landingpad { ptr, i32 }
          cleanup
  br label %1107

1105:                                             ; preds = %1088
  %1106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %103) #12
  br label %1107

1107:                                             ; preds = %1105, %1103
  %.pn1402 = phi { ptr, i32 } [ %1106, %1105 ], [ %1104, %1103 ]
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  br label %1108

1108:                                             ; preds = %1107, %1101
  %.pn1402.pn = phi { ptr, i32 } [ %.pn1402, %1107 ], [ %1102, %1101 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #12
  br label %1316

1109:                                             ; preds = %963
  %1110 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1111 unwind label %.loopexit1609

1111:                                             ; preds = %1109
  br i1 %1110, label %1112, label %1129

1112:                                             ; preds = %1111
  %1113 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1113, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1115 unwind label %.loopexit1609

1115:                                             ; preds = %1112
  %1116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1114, ptr noundef nonnull @.str.14)
          to label %1117 unwind label %.loopexit1609

1117:                                             ; preds = %1115
  %1118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1116, ptr noundef nonnull align 8 dereferenceable(32) %857)
          to label %1119 unwind label %.loopexit1609

1119:                                             ; preds = %1117
  %1120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1118, ptr noundef nonnull @.str.15)
          to label %1121 unwind label %.loopexit1609

1121:                                             ; preds = %1119
  %1122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1120, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %1123 unwind label %.loopexit1609

1123:                                             ; preds = %1121
  %1124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1122, ptr noundef nonnull @.str.18)
          to label %1125 unwind label %.loopexit1609

1125:                                             ; preds = %1123
  %1126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1124, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1127 unwind label %.loopexit1609

1127:                                             ; preds = %1125
  %1128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1126, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1129 unwind label %.loopexit1609

1129:                                             ; preds = %1127, %1111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #12
  %1130 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %1131 = getelementptr inbounds i8, ptr %1130, i64 216
  %1132 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1131)
  %1133 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1132)
  %1134 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1133)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %105, ptr noundef nonnull align 8 dereferenceable(32) %1134)
          to label %1135 unwind label %1153

1135:                                             ; preds = %1129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #12
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %106)
          to label %1136 unwind label %1155

1136:                                             ; preds = %1135
  %1137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %825, i64 noundef 0)
          to label %1138 unwind label %1157

1138:                                             ; preds = %1136
  %1139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1137, ptr noundef nonnull align 8 dereferenceable(8) %106)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #12
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %1140 unwind label %1160

1140:                                             ; preds = %1138
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %108, ptr noundef nonnull %109)
          to label %1141 unwind label %1162

1141:                                             ; preds = %1140
  %1142 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #12
  %1143 = getelementptr inbounds i8, ptr %1142, i64 216
  %1144 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1143)
  %1145 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1144)
  %1146 = getelementptr inbounds i8, ptr %1145, i64 88
  invoke void @_ZNK3HIR15TypePathBinding5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %110, ptr noundef nonnull align 8 dereferenceable(16) %1146)
          to label %1147 unwind label %1164

1147:                                             ; preds = %1141
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %107, ptr noundef nonnull %108, ptr noundef nonnull %110)
          to label %1148 unwind label %1166

1148:                                             ; preds = %1147
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %108) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %107)
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %113, i32 noundef 0)
          to label %1149 unwind label %1170

1149:                                             ; preds = %1148
  invoke void @_ZN12_GLOBAL__N_112get_unit_ptrERK4SpanRNS_7BuilderEN3HIR7TypeRefEN3MIR6LValueERS8_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %111, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %112, ptr noundef nonnull %113, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %1150 unwind label %1172

1150:                                             ; preds = %1149
  %1151 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %111)
          to label %1152 unwind label %1174

1152:                                             ; preds = %1150
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #12
  br label %1203

1153:                                             ; preds = %1129
  %1154 = landingpad { ptr, i32 }
          cleanup
  br label %1180

1155:                                             ; preds = %1135
  %1156 = landingpad { ptr, i32 }
          cleanup
  br label %1159

1157:                                             ; preds = %1136
  %1158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #12
  br label %1159

1159:                                             ; preds = %1157, %1155
  %.pn1385 = phi { ptr, i32 } [ %1158, %1157 ], [ %1156, %1155 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #12
  br label %1179

1160:                                             ; preds = %1138
  %1161 = landingpad { ptr, i32 }
          cleanup
  br label %1178

1162:                                             ; preds = %1140
  %1163 = landingpad { ptr, i32 }
          cleanup
  br label %1169

1164:                                             ; preds = %1141
  %1165 = landingpad { ptr, i32 }
          cleanup
  br label %1168

1166:                                             ; preds = %1147
  %1167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #12
  br label %1168

1168:                                             ; preds = %1166, %1164
  %.pn1387 = phi { ptr, i32 } [ %1167, %1166 ], [ %1165, %1164 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %108) #12
  br label %1169

1169:                                             ; preds = %1168, %1162
  %.pn1387.pn = phi { ptr, i32 } [ %.pn1387, %1168 ], [ %1163, %1162 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #12
  br label %1178

1170:                                             ; preds = %1148
  %1171 = landingpad { ptr, i32 }
          cleanup
  br label %1177

1172:                                             ; preds = %1149
  %1173 = landingpad { ptr, i32 }
          cleanup
  br label %1176

1174:                                             ; preds = %1150
  %1175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #12
  br label %1176

1176:                                             ; preds = %1174, %1172
  %.pn1390 = phi { ptr, i32 } [ %1175, %1174 ], [ %1173, %1172 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #12
  br label %1177

1177:                                             ; preds = %1176, %1170
  %.pn1390.pn = phi { ptr, i32 } [ %.pn1390, %1176 ], [ %1171, %1170 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #12
  br label %1178

1178:                                             ; preds = %1177, %1169, %1160
  %.pn1390.pn.pn = phi { ptr, i32 } [ %.pn1390.pn, %1177 ], [ %.pn1387.pn, %1169 ], [ %1161, %1160 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #12
  br label %1179

1179:                                             ; preds = %1178, %1159
  %.pn1390.pn.pn.pn = phi { ptr, i32 } [ %.pn1390.pn.pn, %1178 ], [ %.pn1385, %1159 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #12
  br label %1180

1180:                                             ; preds = %1179, %1153
  %.pn1390.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1390.pn.pn.pn, %1179 ], [ %1154, %1153 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #12
  br label %1316

1181:                                             ; preds = %963
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #12
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %114, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %115) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp)
          to label %1182 unwind label %1190

1182:                                             ; preds = %1181
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %117) #12
  store ptr %114, ptr %117, align 8, !tbaa !11
  %1183 = getelementptr inbounds i8, ptr %117, i64 8
  store ptr %857, ptr %1183, align 8, !tbaa !11
  %1184 = getelementptr inbounds i8, ptr %117, i64 16
  store ptr %858, ptr %1184, align 8, !tbaa !11
  %1185 = getelementptr inbounds i8, ptr %117, i64 24
  store ptr %74, ptr %1185, align 8, !tbaa !11
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(32) %117)
          to label %1186 unwind label %1192

1186:                                             ; preds = %1182
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull %116)
          to label %1187 unwind label %1194

1187:                                             ; preds = %1186
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #12
  %1188 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1188, ptr noundef nonnull @.str.19)
          to label %1189 unwind label %1198

1189:                                             ; preds = %1187
  invoke void @__cxa_throw(ptr nonnull %1188, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %1200

1190:                                             ; preds = %1181
  %1191 = landingpad { ptr, i32 }
          cleanup
  br label %1197

1192:                                             ; preds = %1182
  %1193 = landingpad { ptr, i32 }
          cleanup
  br label %1196

1194:                                             ; preds = %1186
  %1195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #12
  br label %1196

1196:                                             ; preds = %1194, %1192
  %.pn1438 = phi { ptr, i32 } [ %1195, %1194 ], [ %1193, %1192 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #12
  br label %1197

1197:                                             ; preds = %1196, %1190
  %.pn1438.pn = phi { ptr, i32 } [ %.pn1438, %1196 ], [ %1191, %1190 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #12
  br label %1202

1198:                                             ; preds = %1187
  %1199 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1188) #12
  br label %1202

1200:                                             ; preds = %1189
  %1201 = landingpad { ptr, i32 }
          cleanup
  br label %1202

1202:                                             ; preds = %1200, %1198, %1197
  %.pn1441 = phi { ptr, i32 } [ %1201, %1200 ], [ %1199, %1198 ], [ %.pn1438.pn, %1197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #12
  br label %1316

1203:                                             ; preds = %994, %1010, %1152, %1089
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #12
  %1204 = load ptr, ptr %867, align 8, !tbaa !116
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %120, ptr noundef nonnull align 8 dereferenceable(400) %1204, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListE2sp, ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(172) %860)
          to label %1205 unwind label %1217

1205:                                             ; preds = %1203
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %119, i32 noundef 0, ptr noundef nonnull %120)
          to label %1206 unwind label %1219

1206:                                             ; preds = %1205
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %118, ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %119)
          to label %1207 unwind label %1221

1207:                                             ; preds = %1206
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %121, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %1208 unwind label %1224

1208:                                             ; preds = %1207
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %1209 unwind label %1226

1209:                                             ; preds = %1208
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %122, ptr noundef nonnull %123)
          to label %1210 unwind label %1228

1210:                                             ; preds = %1209
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %121, ptr noundef nonnull %122)
          to label %1211 unwind label %1230

1211:                                             ; preds = %1210
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %122) #12
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %124) #12
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %125) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %1212 unwind label %1234

1212:                                             ; preds = %1211
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %125, ptr noundef nonnull %126)
          to label %1213 unwind label %1236

1213:                                             ; preds = %1212
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(48) %125)
          to label %1214 unwind label %1238

1214:                                             ; preds = %1213
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %125) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %125) #12
  %1215 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %903) #12
  %1216 = icmp ugt i64 %1215, 1
  br i1 %1216, label %.lr.ph2845, label %._crit_edge2846

._crit_edge2846:                                  ; preds = %1245, %1214
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %129)
          to label %1257 unwind label %1282

1217:                                             ; preds = %1203
  %1218 = landingpad { ptr, i32 }
          cleanup
  br label %1315

1219:                                             ; preds = %1205
  %1220 = landingpad { ptr, i32 }
          cleanup
  br label %1223

1221:                                             ; preds = %1206
  %1222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #12
  br label %1223

1223:                                             ; preds = %1221, %1219
  %.pn1415 = phi { ptr, i32 } [ %1222, %1221 ], [ %1220, %1219 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #12
  br label %1315

1224:                                             ; preds = %1207
  %1225 = landingpad { ptr, i32 }
          cleanup
  br label %1314

1226:                                             ; preds = %1208
  %1227 = landingpad { ptr, i32 }
          cleanup
  br label %1233

1228:                                             ; preds = %1209
  %1229 = landingpad { ptr, i32 }
          cleanup
  br label %1232

1230:                                             ; preds = %1210
  %1231 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %122) #12
  br label %1232

1232:                                             ; preds = %1230, %1228
  %.pn1417 = phi { ptr, i32 } [ %1231, %1230 ], [ %1229, %1228 ]
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #12
  br label %1233

1233:                                             ; preds = %1232, %1226
  %.pn1417.pn = phi { ptr, i32 } [ %.pn1417, %1232 ], [ %1227, %1226 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #12
  br label %1314

1234:                                             ; preds = %1211
  %1235 = landingpad { ptr, i32 }
          cleanup
  br label %1241

1236:                                             ; preds = %1212
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1240

1238:                                             ; preds = %1213
  %1239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %125) #12
  br label %1240

1240:                                             ; preds = %1238, %1236
  %.pn1420 = phi { ptr, i32 } [ %1239, %1238 ], [ %1237, %1236 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #12
  br label %1241

1241:                                             ; preds = %1240, %1234
  %.pn1420.pn = phi { ptr, i32 } [ %.pn1420, %1240 ], [ %1235, %1234 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %125) #12
  br label %1313

.lr.ph2845:                                       ; preds = %1214, %1245
  %.08832843 = phi i64 [ %1246, %1245 ], [ 1, %1214 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %127) #12
  %1242 = trunc i64 %.08832843 to i32
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %128, i32 noundef %1242)
          to label %1243 unwind label %1249

1243:                                             ; preds = %.lr.ph2845
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %127, ptr noundef nonnull %128)
          to label %1244 unwind label %1251

1244:                                             ; preds = %1243
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(48) %127)
          to label %1245 unwind label %1253

1245:                                             ; preds = %1244
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %127) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %127) #12
  %1246 = add nuw i64 %.08832843, 1
  %1247 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %903) #12
  %1248 = icmp ult i64 %1246, %1247
  br i1 %1248, label %.lr.ph2845, label %._crit_edge2846, !llvm.loop !143

1249:                                             ; preds = %.lr.ph2845
  %1250 = landingpad { ptr, i32 }
          cleanup
  br label %1256

1251:                                             ; preds = %1243
  %1252 = landingpad { ptr, i32 }
          cleanup
  br label %1255

1253:                                             ; preds = %1244
  %1254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %127) #12
  br label %1255

1255:                                             ; preds = %1253, %1251
  %.pn1432 = phi { ptr, i32 } [ %1254, %1253 ], [ %1252, %1251 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  br label %1256

1256:                                             ; preds = %1255, %1249
  %.pn1432.pn = phi { ptr, i32 } [ %.pn1432, %1255 ], [ %1250, %1249 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %127) #12
  br label %1313

1257:                                             ; preds = %._crit_edge2846
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %1258 unwind label %1284

1258:                                             ; preds = %1257
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %132, ptr noundef nonnull %133)
          to label %1259 unwind label %1286

1259:                                             ; preds = %1258
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %131, ptr noundef nonnull %132, i32 noundef %869)
          to label %1260 unwind label %1288

1260:                                             ; preds = %1259
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %130, ptr noundef nonnull %131)
          to label %1261 unwind label %1290

1261:                                             ; preds = %1260
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %134, ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %129, ptr noundef nonnull %130, ptr noundef nonnull %134, i32 noundef 1, i32 noundef 2)
          to label %1262 unwind label %1292

1262:                                             ; preds = %1261
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %130) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %85)
          to label %1263 unwind label %1282

1263:                                             ; preds = %1262
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %135)
          to label %1264 unwind label %1282

1264:                                             ; preds = %1263
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %135)
          to label %1265 unwind label %1298

1265:                                             ; preds = %1264
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %135) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %85)
          to label %1266 unwind label %1282

1266:                                             ; preds = %1265
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %136)
          to label %1267 unwind label %1282

1267:                                             ; preds = %1266
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %85, ptr noundef nonnull %136)
          to label %1268 unwind label %1300

1268:                                             ; preds = %1267
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %136) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %137) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %137, ptr noundef nonnull align 8 dereferenceable(88) %834)
  %1269 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %1270 unwind label %1302

1270:                                             ; preds = %1268
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %822, ptr noundef nonnull align 8 dereferenceable(56) %137, ptr noundef nonnull align 8 dereferenceable(96) %1269, ptr noundef nonnull align 8 dereferenceable(24) %823, ptr noundef nonnull align 8 dereferenceable(8) %821)
          to label %1271 unwind label %1302

1271:                                             ; preds = %1270
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %137) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #12
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.537") align 8 %138, ptr noundef nonnull align 8 dereferenceable(352) %74)
          to label %1272 unwind label %1304

1272:                                             ; preds = %1271
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %812, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %1273 unwind label %1306

1273:                                             ; preds = %1272
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %139, ptr noundef nonnull align 8 dereferenceable(88) %834)
          to label %1274 unwind label %1309

1274:                                             ; preds = %1273
  %1275 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %139)
          to label %1276 unwind label %1311

1276:                                             ; preds = %1274
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %139) #12
  %1277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %1278 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1277) #12
  %1279 = getelementptr inbounds i8, ptr %1275, i64 8
  store ptr %1278, ptr %1279, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %124) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %85) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %85) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %74) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %74) #12
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %73) #12
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %73) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #12
  %1280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR4PathEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #12
  %1281 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR4PathEES4_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #12
  br i1 %1281, label %833, label %._crit_edge2849

1282:                                             ; preds = %1266, %1265, %1263, %1262, %._crit_edge2846
  %1283 = landingpad { ptr, i32 }
          cleanup
  br label %1313

1284:                                             ; preds = %1257
  %1285 = landingpad { ptr, i32 }
          cleanup
  br label %1297

1286:                                             ; preds = %1258
  %1287 = landingpad { ptr, i32 }
          cleanup
  br label %1296

1288:                                             ; preds = %1259
  %1289 = landingpad { ptr, i32 }
          cleanup
  br label %1295

1290:                                             ; preds = %1260
  %1291 = landingpad { ptr, i32 }
          cleanup
  br label %1294

1292:                                             ; preds = %1261
  %1293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %130) #12
  br label %1294

1294:                                             ; preds = %1292, %1290
  %.pn1423 = phi { ptr, i32 } [ %1293, %1292 ], [ %1291, %1290 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #12
  br label %1295

1295:                                             ; preds = %1294, %1288
  %.pn1423.pn = phi { ptr, i32 } [ %.pn1423, %1294 ], [ %1289, %1288 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  br label %1296

1296:                                             ; preds = %1295, %1286
  %.pn1423.pn.pn = phi { ptr, i32 } [ %.pn1423.pn, %1295 ], [ %1287, %1286 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #12
  br label %1297

1297:                                             ; preds = %1296, %1284
  %.pn1423.pn.pn.pn = phi { ptr, i32 } [ %.pn1423.pn.pn, %1296 ], [ %1285, %1284 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #12
  br label %1313

1298:                                             ; preds = %1264
  %1299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %135) #12
  br label %1313

1300:                                             ; preds = %1267
  %1301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %136) #12
  br label %1313

1302:                                             ; preds = %1270, %1268
  %1303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %137) #12
  br label %1313

1304:                                             ; preds = %1271
  %1305 = landingpad { ptr, i32 }
          cleanup
  br label %1308

1306:                                             ; preds = %1272
  %1307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #12
  br label %1308

1308:                                             ; preds = %1306, %1304
  %.pn1428 = phi { ptr, i32 } [ %1307, %1306 ], [ %1305, %1304 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #12
  br label %1313

1309:                                             ; preds = %1273
  %1310 = landingpad { ptr, i32 }
          cleanup
  br label %1313

1311:                                             ; preds = %1274
  %1312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %139) #12
  br label %1313

1313:                                             ; preds = %1309, %1311, %1308, %1302, %1300, %1298, %1297, %1282, %1256, %1241
  %.pn1432.pn.pn = phi { ptr, i32 } [ %.pn1432.pn, %1256 ], [ %.pn1428, %1308 ], [ %1303, %1302 ], [ %1301, %1300 ], [ %1283, %1282 ], [ %1299, %1298 ], [ %.pn1423.pn.pn.pn, %1297 ], [ %.pn1420.pn, %1241 ], [ %1312, %1311 ], [ %1310, %1309 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %124) #12
  br label %1314

1314:                                             ; preds = %1313, %1233, %1224
  %.pn1432.pn.pn.pn = phi { ptr, i32 } [ %.pn1432.pn.pn, %1313 ], [ %.pn1417.pn, %1233 ], [ %1225, %1224 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #12
  br label %1315

1315:                                             ; preds = %1314, %1223, %1217
  %.pn1432.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1432.pn.pn.pn, %1314 ], [ %.pn1415, %1223 ], [ %1218, %1217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #12
  br label %1316

1316:                                             ; preds = %.loopexit1609, %.loopexit.split-lp1610, %1078, %1100, %1108, %1012, %1024, %1025, %1034, %1315, %1202, %1180, %1050, %1049
  %.pn1441.pn = phi { ptr, i32 } [ %.pn1441, %1202 ], [ %.pn1432.pn.pn.pn.pn, %1315 ], [ %.pn1390.pn.pn.pn.pn, %1180 ], [ %1051, %1050 ], [ %.pn1396, %1049 ], [ %1026, %1025 ], [ %.pn1410.pn, %1034 ], [ %.pn1406.pn.pn, %1024 ], [ %1013, %1012 ], [ %.pn1402.pn, %1108 ], [ %1079, %1078 ], [ %.pn1398.pn.pn, %1100 ], [ %lpad.loopexit1611, %.loopexit1609 ], [ %lpad.loopexit.split-lp1612, %.loopexit.split-lp1610 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #12
  br label %1317

1317:                                             ; preds = %1316, %977
  %.pn1441.pn.pn = phi { ptr, i32 } [ %.pn1441.pn, %1316 ], [ %978, %977 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  br label %1318

1318:                                             ; preds = %1317, %975
  %.pn1441.pn.pn.pn = phi { ptr, i32 } [ %.pn1441.pn.pn, %1317 ], [ %976, %975 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %85) #12
  br label %1319

1319:                                             ; preds = %1318, %973
  %.pn1441.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1441.pn.pn.pn, %1318 ], [ %974, %973 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %85) #12
  br label %1320

1320:                                             ; preds = %.loopexit1604, %.loopexit.split-lp1605, %1319, %972, %951, %950, %940, %914
  %.pn1453.pn = phi { ptr, i32 } [ %.pn1453, %940 ], [ %952, %951 ], [ %.pn1447, %950 ], [ %.pn1441.pn.pn.pn.pn, %1319 ], [ %.pn1383, %972 ], [ %915, %914 ], [ %lpad.loopexit1606, %.loopexit1604 ], [ %lpad.loopexit.split-lp1607, %.loopexit.split-lp1605 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %74) #12
  br label %1321

1321:                                             ; preds = %1320, %912
  %.pn1453.pn.pn = phi { ptr, i32 } [ %.pn1453.pn, %1320 ], [ %913, %912 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %74) #12
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %73) #12
  br label %1322

1322:                                             ; preds = %1321, %910
  %.pn1453.pn.pn.pn = phi { ptr, i32 } [ %.pn1453.pn.pn, %1321 ], [ %911, %910 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %73) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #12
  br label %1323

1323:                                             ; preds = %1322, %908
  %.pn1453.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1453.pn.pn.pn, %1322 ], [ %909, %908 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #12
  br label %1324

1324:                                             ; preds = %.loopexit1599, %.loopexit.split-lp1600, %879, %890, %891, %1323, %881, %846
  %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %847, %846 ], [ %880, %879 ], [ %882, %881 ], [ %.pn1453.pn.pn.pn.pn, %1323 ], [ %892, %891 ], [ %.pn1380.pn, %890 ], [ %lpad.loopexit1601, %.loopexit1599 ], [ %lpad.loopexit.split-lp1602, %.loopexit.split-lp1600 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #12
  br label %1364

1325:                                             ; preds = %._crit_edge2849
  %1326 = select i1 %826, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %142) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 1 dereferenceable(1) %142) #12
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %140, ptr noundef %1326, ptr noundef nonnull %141)
          to label %1327 unwind label %1368

1327:                                             ; preds = %1325
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #12
  %1328 = getelementptr inbounds i8, ptr %1, i64 504
  %1329 = getelementptr inbounds i8, ptr %1, i64 168
  %1330 = call noundef i64 @_ZNKSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %1328, i64 noundef %1330)
          to label %1331 unwind label %1370

1331:                                             ; preds = %1327
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #12
  %1332 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1332, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %144) #12
  %1333 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1333, ptr %144, align 8
  %1334 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #12
  br i1 %1334, label %.lr.ph2867, label %._crit_edge2868

.lr.ph2867:                                       ; preds = %1331
  %1335 = getelementptr inbounds i8, ptr %146, i64 8
  %1336 = getelementptr inbounds i8, ptr %3, i64 8
  %1337 = getelementptr inbounds i8, ptr %3, i64 160
  %1338 = getelementptr inbounds i8, ptr %146, i64 16
  %1339 = getelementptr inbounds i8, ptr %146, i64 24
  %1340 = getelementptr inbounds i8, ptr %146, i64 32
  %1341 = getelementptr inbounds i8, ptr %3, i64 168
  %1342 = getelementptr inbounds i8, ptr %146, i64 40
  %1343 = getelementptr inbounds i8, ptr %146, i64 48
  %1344 = getelementptr inbounds i8, ptr %146, i64 56
  %1345 = getelementptr inbounds i8, ptr %3, i64 176
  %1346 = getelementptr inbounds i8, ptr %146, i64 64
  %1347 = getelementptr inbounds i8, ptr %151, i64 120
  %1348 = getelementptr inbounds i8, ptr %151, i64 112
  %1349 = getelementptr inbounds i8, ptr %158, i64 240
  %1350 = getelementptr inbounds i8, ptr %158, i64 208
  %1351 = getelementptr inbounds i8, ptr %158, i64 304
  %1352 = getelementptr inbounds i8, ptr %190, i64 240
  %1353 = getelementptr inbounds i8, ptr %190, i64 208
  %1354 = getelementptr inbounds i8, ptr %190, i64 304
  br label %1372

._crit_edge2868:                                  ; preds = %.loopexit1596, %1331
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %213) #12
  %1355 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1355, ptr %213, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %214) #12
  %1356 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1356, ptr %214, align 8
  %1357 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %214) #12
  br i1 %1357, label %.lr.ph2870, label %._crit_edge2871

.lr.ph2870:                                       ; preds = %._crit_edge2868
  %1358 = getelementptr inbounds i8, ptr %3, i64 8
  %1359 = getelementptr inbounds i8, ptr %224, i64 256
  %1360 = getelementptr inbounds i8, ptr %229, i64 8
  %1361 = getelementptr inbounds i8, ptr %229, i64 16
  %1362 = getelementptr inbounds i8, ptr %1, i64 264
  %1363 = getelementptr inbounds i8, ptr %224, i64 304
  br label %1788

1364:                                             ; preds = %1324, %831
  %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn, %1324 ], [ %832, %831 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #12
  br label %1365

1365:                                             ; preds = %1364, %829, %827
  %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1364 ], [ %830, %829 ], [ %828, %827 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %64) #12
  br label %3347

1366:                                             ; preds = %._crit_edge2849
  %1367 = landingpad { ptr, i32 }
          cleanup
  br label %2591

1368:                                             ; preds = %1325
  %1369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #12
  br label %2591

1370:                                             ; preds = %1327
  %1371 = landingpad { ptr, i32 }
          cleanup
  br label %2590

1372:                                             ; preds = %.lr.ph2867, %.loopexit1596
  %1373 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145)
  %1374 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1373)
  %1375 = getelementptr inbounds i8, ptr %1374, i64 8
  %1376 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1373)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %146) #12
  store ptr @.str.20, ptr %146, align 16, !tbaa !144
  store ptr %1337, ptr %1335, align 8, !tbaa !146
  store i32 0, ptr %1338, align 16, !tbaa !147
  store ptr @.str.21, ptr %1339, align 8, !tbaa !144
  store ptr %1341, ptr %1340, align 16, !tbaa !146
  store i32 1, ptr %1342, align 8, !tbaa !147
  store ptr @.str.22, ptr %1343, align 16, !tbaa !144
  store ptr %1345, ptr %1344, align 8, !tbaa !146
  store i32 2, ptr %1346, align 16, !tbaa !147
  %1377 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1375, ptr noundef nonnull align 8 dereferenceable(8) %1337)
          to label %1378 unwind label %1379

1378:                                             ; preds = %1372
  br i1 %1377, label %1391, label %1381

1379:                                             ; preds = %1387, %1381, %1372
  %1380 = landingpad { ptr, i32 }
          cleanup
  br label %1772

1381:                                             ; preds = %1378
  %1382 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1375, ptr noundef nonnull align 8 dereferenceable(8) %1341)
          to label %1383 unwind label %1379

1383:                                             ; preds = %1381
  br i1 %1382, label %1391, label %1384

1384:                                             ; preds = %1383
  %1385 = load i32, ptr @gTargetVersion, align 4, !tbaa !5
  %1386 = icmp sgt i32 %1385, 1
  br i1 %1386, label %1387, label %1390

1387:                                             ; preds = %1384
  %1388 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1375, ptr noundef nonnull align 8 dereferenceable(8) %1345)
          to label %1389 unwind label %1379

1389:                                             ; preds = %1387
  br i1 %1388, label %1391, label %1390

1390:                                             ; preds = %1389, %1384
  br label %1391

1391:                                             ; preds = %1389, %1383, %1378, %1390
  %1392 = phi i1 [ false, %1390 ], [ true, %1378 ], [ true, %1383 ], [ true, %1389 ]
  %.0886 = phi i64 [ 3, %1390 ], [ 0, %1378 ], [ 1, %1383 ], [ 2, %1389 ]
  %1393 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1376)
  %1394 = call noundef ptr @_ZNK3HIR8TypeData17opt_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1393)
  %.not1301 = icmp eq ptr %1394, null
  br i1 %.not1301, label %1581, label %.preheader1597

.preheader1597:                                   ; preds = %1391
  br i1 %1392, label %.lr.ph2858, label %.loopexit1596

.lr.ph2858:                                       ; preds = %.preheader1597, %1576
  %.18872857 = phi i64 [ %1577, %1576 ], [ %.0886, %.preheader1597 ]
  %.not1343 = icmp eq i64 %.18872857, 2
  %1395 = getelementptr inbounds [3 x %struct.anon], ptr %146, i64 0, i64 %.18872857
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %147) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %147, ptr noundef nonnull align 8 dereferenceable(88) %1373)
          to label %1396 unwind label %1416

1396:                                             ; preds = %.lr.ph2858
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #12
  %1397 = load ptr, ptr %1395, align 8, !tbaa !144
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef %1397)
          to label %1398 unwind label %1418

1398:                                             ; preds = %1396
  %1399 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %147)
  %1400 = getelementptr inbounds i8, ptr %1399, i64 40
  %1401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %1400, ptr noundef nonnull align 8 dereferenceable(8) %148)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %149) #12
  %1402 = getelementptr inbounds i8, ptr %1395, i64 8
  %1403 = load ptr, ptr %1402, align 8, !tbaa !146
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %149, ptr noundef nonnull align 8 dereferenceable(8) %1403)
          to label %1404 unwind label %1420

1404:                                             ; preds = %1398
  %1405 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %147)
  %1406 = getelementptr inbounds i8, ptr %1405, i64 8
  %1407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR10SimplePathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1406, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %1408 unwind label %1422

1408:                                             ; preds = %1404
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %150, ptr noundef nonnull align 8 dereferenceable(88) %147) #12
  %1409 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %150)
          to label %1410 unwind label %1425

1410:                                             ; preds = %1408
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %150) #12
  %.not1340 = icmp eq ptr %1409, null
  br i1 %.not1340, label %1576, label %1411

1411:                                             ; preds = %1410
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %151) #12
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %151, ptr noundef nonnull align 8 dereferenceable(112) %1394, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1412 unwind label %1427

1412:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %152) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %152) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #12
  %1413 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1347) #12
  store ptr %1413, ptr %153, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #12
  %1414 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1347) #12
  store ptr %1414, ptr %154, align 8
  %1415 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #12
  br i1 %1415, label %.lr.ph2851, label %._crit_edge2852

._crit_edge2852:                                  ; preds = %1431, %1412
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %156) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %157, ptr noundef nonnull align 8 dereferenceable(24) %152) #12
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull %157)
          to label %1439 unwind label %1468

1416:                                             ; preds = %.lr.ph2858
  %1417 = landingpad { ptr, i32 }
          cleanup
  br label %1580

1418:                                             ; preds = %1396
  %1419 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #12
  br label %1579

1420:                                             ; preds = %1398
  %1421 = landingpad { ptr, i32 }
          cleanup
  br label %1424

1422:                                             ; preds = %1404
  %1423 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #12
  br label %1424

1424:                                             ; preds = %1422, %1420
  %.pn1338 = phi { ptr, i32 } [ %1423, %1422 ], [ %1421, %1420 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #12
  br label %1579

1425:                                             ; preds = %1408
  %1426 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %150) #12
  br label %1579

1427:                                             ; preds = %1411
  %1428 = landingpad { ptr, i32 }
          cleanup
  br label %1575

.lr.ph2851:                                       ; preds = %1412, %1431
  %1429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %155) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %155, ptr noundef nonnull align 8 dereferenceable(8) %1429)
          to label %1430 unwind label %1434

1430:                                             ; preds = %.lr.ph2851
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %152, ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %1431 unwind label %1436

1431:                                             ; preds = %1430
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #12
  %1432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #12
  %1433 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #12
  br i1 %1433, label %.lr.ph2851, label %._crit_edge2852

1434:                                             ; preds = %.lr.ph2851
  %1435 = landingpad { ptr, i32 }
          cleanup
  br label %1438

1436:                                             ; preds = %1430
  %1437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #12
  br label %1438

1438:                                             ; preds = %1436, %1434
  %.pn1367 = phi { ptr, i32 } [ %1437, %1436 ], [ %1435, %1434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #12
  br label %1574

1439:                                             ; preds = %._crit_edge2852
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #12
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1336, ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1440 unwind label %1470

1440:                                             ; preds = %1439
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %158) #12
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %158)
          to label %1441 unwind label %1472

1441:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %159) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %159, ptr noundef nonnull align 8 dereferenceable(8) %1348)
          to label %1442 unwind label %1474

1442:                                             ; preds = %1441
  %1443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1349, ptr noundef nonnull align 8 dereferenceable(8) %159)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #12
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1336, ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1444 unwind label %1476

1444:                                             ; preds = %1442
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %160) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %161) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %161)
          to label %1445 unwind label %1478

1445:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #12
  br i1 %.not1343, label %1450, label %1446

1446:                                             ; preds = %1445
  %1447 = getelementptr inbounds i8, ptr %1395, i64 16
  %1448 = load i32, ptr %1447, align 8, !tbaa !147
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %163, ptr noundef nonnull align 8 dereferenceable(8) %1376)
          to label %1449 unwind label %1480

1449:                                             ; preds = %1446
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %162, i32 noundef %1448, ptr noundef nonnull %163)
          to label %1451 unwind label %1482

1450:                                             ; preds = %1445
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %162, ptr noundef nonnull align 8 dereferenceable(8) %1376)
          to label %1451 unwind label %1482

1451:                                             ; preds = %1450, %1449
  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.390") align 8 %160, ptr noundef nonnull align 8 dereferenceable(212) %161, ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %1452 unwind label %1484

1452:                                             ; preds = %1451
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1350, ptr noundef nonnull align 8 dereferenceable(224) %160)
          to label %1453 unwind label %1486

1453:                                             ; preds = %1452
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %160) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #12
  br i1 %.not1343, label %1455, label %1454

1454:                                             ; preds = %1453
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #12
  br label %1455

1455:                                             ; preds = %1454, %1453
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %161) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %161) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %160) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %164) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %165) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %165)
          to label %1456 unwind label %1493

1456:                                             ; preds = %1455
  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.390") align 8 %164, ptr noundef nonnull align 8 dereferenceable(212) %165, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1457 unwind label %1495

1457:                                             ; preds = %1456
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1350, ptr noundef nonnull align 8 dereferenceable(224) %164)
          to label %1458 unwind label %1497

1458:                                             ; preds = %1457
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %164) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %165) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %165) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %164) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %166) #12
  %1459 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %1460 unwind label %1501

1460:                                             ; preds = %1458
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %1459, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1459)
          to label %1461 unwind label %1503

1461:                                             ; preds = %1460
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull %1459)
  %1462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1351, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %1463 unwind label %1505

1463:                                             ; preds = %1461
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %166) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %167) #12
  %1464 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1351)
          to label %1465 unwind label %1508

1465:                                             ; preds = %1463
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(96) %1464)
          to label %1466 unwind label %1508

1466:                                             ; preds = %1465
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %168) #12
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  %1467 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1347) #12
  %.not3942 = icmp eq i64 %1467, 0
  br i1 %.not3942, label %._crit_edge2856, label %.lr.ph2855

._crit_edge2856:                                  ; preds = %1514, %1466
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %172)
          to label %1529 unwind label %1547

1468:                                             ; preds = %._crit_edge2852
  %1469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #12
  br label %1573

1470:                                             ; preds = %1439
  %1471 = landingpad { ptr, i32 }
          cleanup
  br label %1572

1472:                                             ; preds = %1440
  %1473 = landingpad { ptr, i32 }
          cleanup
  br label %1571

1474:                                             ; preds = %1441
  %1475 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #12
  br label %1570

1476:                                             ; preds = %1442
  %1477 = landingpad { ptr, i32 }
          cleanup
  br label %1570

1478:                                             ; preds = %1444
  %1479 = landingpad { ptr, i32 }
          cleanup
  br label %1492

1480:                                             ; preds = %1446
  %1481 = landingpad { ptr, i32 }
          cleanup
  br label %1491

1482:                                             ; preds = %1450, %1449
  %1483 = landingpad { ptr, i32 }
          cleanup
  br label %1489

1484:                                             ; preds = %1451
  %1485 = landingpad { ptr, i32 }
          cleanup
  br label %1488

1486:                                             ; preds = %1452
  %1487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %160) #12
  br label %1488

1488:                                             ; preds = %1486, %1484
  %.pn1341 = phi { ptr, i32 } [ %1487, %1486 ], [ %1485, %1484 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #12
  br label %1489

1489:                                             ; preds = %1488, %1482
  %.pn1341.pn = phi { ptr, i32 } [ %.pn1341, %1488 ], [ %1483, %1482 ]
  br i1 %.not1343, label %1491, label %1490

1490:                                             ; preds = %1489
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #12
  br label %1491

1491:                                             ; preds = %1489, %1490, %1480
  %.pn1341.pn.pn = phi { ptr, i32 } [ %.pn1341.pn, %1490 ], [ %.pn1341.pn, %1489 ], [ %1481, %1480 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %161) #12
  br label %1492

1492:                                             ; preds = %1491, %1478
  %.pn1341.pn.pn.pn = phi { ptr, i32 } [ %.pn1341.pn.pn, %1491 ], [ %1479, %1478 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %161) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %160) #12
  br label %1570

1493:                                             ; preds = %1455
  %1494 = landingpad { ptr, i32 }
          cleanup
  br label %1500

1495:                                             ; preds = %1456
  %1496 = landingpad { ptr, i32 }
          cleanup
  br label %1499

1497:                                             ; preds = %1457
  %1498 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %164) #12
  br label %1499

1499:                                             ; preds = %1497, %1495
  %.pn1347 = phi { ptr, i32 } [ %1498, %1497 ], [ %1496, %1495 ]
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %165) #12
  br label %1500

1500:                                             ; preds = %1499, %1493
  %.pn1347.pn = phi { ptr, i32 } [ %.pn1347, %1499 ], [ %1494, %1493 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %165) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %164) #12
  br label %1570

1501:                                             ; preds = %1458
  %1502 = landingpad { ptr, i32 }
          cleanup
  br label %1507

1503:                                             ; preds = %1460
  %1504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %1459, i64 noundef 96) #16
  br label %1507

1505:                                             ; preds = %1461
  %1506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #12
  br label %1507

1507:                                             ; preds = %1505, %1503, %1501
  %.pn1350 = phi { ptr, i32 } [ %1506, %1505 ], [ %1504, %1503 ], [ %1502, %1501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %166) #12
  br label %1570

1508:                                             ; preds = %1465, %1463
  %1509 = landingpad { ptr, i32 }
          cleanup
  br label %1569

.lr.ph2855:                                       ; preds = %1466, %1514
  %.08942853 = phi i64 [ %1515, %1514 ], [ 0, %1466 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %169) #12
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %171, i32 noundef 1)
          to label %1510 unwind label %1518

1510:                                             ; preds = %.lr.ph2855
  %1511 = trunc i64 %.08942853 to i32
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %170, ptr noundef nonnull %171, i32 noundef %1511)
          to label %1512 unwind label %1520

1512:                                             ; preds = %1510
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %169, ptr noundef nonnull %170)
          to label %1513 unwind label %1522

1513:                                             ; preds = %1512
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %168, ptr noundef nonnull align 8 dereferenceable(48) %169)
          to label %1514 unwind label %1524

1514:                                             ; preds = %1513
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %169) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %169) #12
  %1515 = add nuw i64 %.08942853, 1
  %1516 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1347) #12
  %1517 = icmp ult i64 %1515, %1516
  br i1 %1517, label %.lr.ph2855, label %._crit_edge2856, !llvm.loop !148

1518:                                             ; preds = %.lr.ph2855
  %1519 = landingpad { ptr, i32 }
          cleanup
  br label %1528

1520:                                             ; preds = %1510
  %1521 = landingpad { ptr, i32 }
          cleanup
  br label %1527

1522:                                             ; preds = %1512
  %1523 = landingpad { ptr, i32 }
          cleanup
  br label %1526

1524:                                             ; preds = %1513
  %1525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %169) #12
  br label %1526

1526:                                             ; preds = %1524, %1522
  %.pn1357 = phi { ptr, i32 } [ %1525, %1524 ], [ %1523, %1522 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  br label %1527

1527:                                             ; preds = %1526, %1520
  %.pn1357.pn = phi { ptr, i32 } [ %.pn1357, %1526 ], [ %1521, %1520 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #12
  br label %1528

1528:                                             ; preds = %1527, %1518
  %.pn1357.pn.pn = phi { ptr, i32 } [ %.pn1357.pn, %1527 ], [ %1519, %1518 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %169) #12
  br label %1568

1529:                                             ; preds = %._crit_edge2856
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %174, ptr noundef nonnull align 8 dereferenceable(88) %1394)
          to label %1530 unwind label %1549

1530:                                             ; preds = %1529
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %173, ptr noundef nonnull %174)
          to label %1531 unwind label %1551

1531:                                             ; preds = %1530
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %175, ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull %172, ptr noundef nonnull %173, ptr noundef nonnull %175, i32 noundef 1, i32 noundef 2)
          to label %1532 unwind label %1553

1532:                                             ; preds = %1531
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %173) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %174) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %167)
          to label %1533 unwind label %1547

1533:                                             ; preds = %1532
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %176)
          to label %1534 unwind label %1547

1534:                                             ; preds = %1533
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull %176)
          to label %1535 unwind label %1557

1535:                                             ; preds = %1534
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %176) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %167)
          to label %1536 unwind label %1547

1536:                                             ; preds = %1535
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %177)
          to label %1537 unwind label %1547

1537:                                             ; preds = %1536
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull %177)
          to label %1538 unwind label %1559

1538:                                             ; preds = %1537
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %177) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %178) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %178, ptr noundef nonnull align 8 dereferenceable(88) %1373)
  %1539 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1351)
          to label %1540 unwind label %1561

1540:                                             ; preds = %1538
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %1336, ptr noundef nonnull align 8 dereferenceable(56) %178, ptr noundef nonnull align 8 dereferenceable(96) %1539, ptr noundef nonnull align 8 dereferenceable(24) %1350, ptr noundef nonnull align 8 dereferenceable(8) %1349)
          to label %1541 unwind label %1561

1541:                                             ; preds = %1540
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %178) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %179) #12
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.537") align 8 %179, ptr noundef nonnull align 8 dereferenceable(352) %158)
          to label %1542 unwind label %1563

1542:                                             ; preds = %1541
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %812, ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %1543 unwind label %1565

1543:                                             ; preds = %1542
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #12
  %1544 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %1545 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1544) #12
  %1546 = getelementptr inbounds i8, ptr %1409, i64 8
  store ptr %1545, ptr %1546, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %168) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %167) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %158) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %158) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %152) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #12
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %151) #12
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %151) #12
  br label %1576

1547:                                             ; preds = %1536, %1535, %1533, %1532, %._crit_edge2856
  %1548 = landingpad { ptr, i32 }
          cleanup
  br label %1568

1549:                                             ; preds = %1529
  %1550 = landingpad { ptr, i32 }
          cleanup
  br label %1556

1551:                                             ; preds = %1530
  %1552 = landingpad { ptr, i32 }
          cleanup
  br label %1555

1553:                                             ; preds = %1531
  %1554 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %173) #12
  br label %1555

1555:                                             ; preds = %1553, %1551
  %.pn1352 = phi { ptr, i32 } [ %1554, %1553 ], [ %1552, %1551 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %174) #12
  br label %1556

1556:                                             ; preds = %1555, %1549
  %.pn1352.pn = phi { ptr, i32 } [ %.pn1352, %1555 ], [ %1550, %1549 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #12
  br label %1568

1557:                                             ; preds = %1534
  %1558 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %176) #12
  br label %1568

1559:                                             ; preds = %1537
  %1560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %177) #12
  br label %1568

1561:                                             ; preds = %1540, %1538
  %1562 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %178) #12
  br label %1568

1563:                                             ; preds = %1541
  %1564 = landingpad { ptr, i32 }
          cleanup
  br label %1567

1565:                                             ; preds = %1542
  %1566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #12
  br label %1567

1567:                                             ; preds = %1565, %1563
  %.pn1355 = phi { ptr, i32 } [ %1566, %1565 ], [ %1564, %1563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #12
  br label %1568

1568:                                             ; preds = %1567, %1561, %1559, %1557, %1556, %1547, %1528
  %.pn1357.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn, %1528 ], [ %.pn1355, %1567 ], [ %1562, %1561 ], [ %1560, %1559 ], [ %1548, %1547 ], [ %1558, %1557 ], [ %.pn1352.pn, %1556 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %168) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #12
  br label %1569

1569:                                             ; preds = %1568, %1508
  %.pn1357.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn.pn, %1568 ], [ %1509, %1508 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %167) #12
  br label %1570

1570:                                             ; preds = %1569, %1507, %1500, %1492, %1476, %1474
  %.pn1357.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn.pn.pn, %1569 ], [ %.pn1350, %1507 ], [ %.pn1347.pn, %1500 ], [ %.pn1341.pn.pn.pn, %1492 ], [ %1477, %1476 ], [ %1475, %1474 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %158) #12
  br label %1571

1571:                                             ; preds = %1570, %1472
  %.pn1357.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn.pn.pn.pn, %1570 ], [ %1473, %1472 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %158) #12
  br label %1572

1572:                                             ; preds = %1571, %1470
  %.pn1357.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn.pn.pn.pn.pn, %1571 ], [ %1471, %1470 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #12
  br label %1573

1573:                                             ; preds = %1572, %1468
  %.pn1357.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1357.pn.pn.pn.pn.pn.pn.pn, %1572 ], [ %1469, %1468 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #12
  br label %1574

1574:                                             ; preds = %1573, %1438
  %.pn1367.pn = phi { ptr, i32 } [ %.pn1367, %1438 ], [ %.pn1357.pn.pn.pn.pn.pn.pn.pn.pn, %1573 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %152) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #12
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %151) #12
  br label %1575

1575:                                             ; preds = %1574, %1427
  %.pn1367.pn.pn = phi { ptr, i32 } [ %.pn1367.pn, %1574 ], [ %1428, %1427 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %151) #12
  br label %1579

1576:                                             ; preds = %1543, %1410
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %147) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %147) #12
  %1577 = add nuw nsw i64 %.18872857, 1
  %1578 = icmp ult i64 %.18872857, 2
  br i1 %1578, label %.lr.ph2858, label %.loopexit1596, !llvm.loop !149

1579:                                             ; preds = %1425, %1575, %1424, %1418
  %.pn1367.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1338, %1424 ], [ %1419, %1418 ], [ %.pn1367.pn.pn, %1575 ], [ %1426, %1425 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %147) #12
  br label %1580

1580:                                             ; preds = %1579, %1416
  %.pn1367.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1367.pn.pn.pn.pn, %1579 ], [ %1417, %1416 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %147) #12
  br label %1772

1581:                                             ; preds = %1391
  %1582 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1376)
  %1583 = call noundef ptr @_ZNK3HIR8TypeData12opt_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1582)
  %1584 = icmp ne ptr %1583, null
  %or.cond = and i1 %1392, %1584
  br i1 %or.cond, label %.preheader1595, label %.loopexit1596

.preheader1595:                                   ; preds = %1581
  %1585 = getelementptr inbounds i8, ptr %1583, i64 120
  %1586 = getelementptr inbounds i8, ptr %1583, i64 112
  br label %1587

1587:                                             ; preds = %.preheader1595, %1766
  %.2888 = phi i64 [ %1767, %1766 ], [ %.0886, %.preheader1595 ]
  %.not1307.not = icmp eq i64 %.2888, 2
  %1588 = getelementptr inbounds [3 x %struct.anon], ptr %146, i64 0, i64 %.2888
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %180) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %180, ptr noundef nonnull align 8 dereferenceable(88) %1373)
          to label %1589 unwind label %1608

1589:                                             ; preds = %1587
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %181) #12
  %1590 = load ptr, ptr %1588, align 8, !tbaa !144
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef %1590)
          to label %1591 unwind label %1610

1591:                                             ; preds = %1589
  %1592 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %180)
  %1593 = getelementptr inbounds i8, ptr %1592, i64 40
  %1594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %1593, ptr noundef nonnull align 8 dereferenceable(8) %181)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %182) #12
  %1595 = getelementptr inbounds i8, ptr %1588, i64 8
  %1596 = load ptr, ptr %1595, align 8, !tbaa !146
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %182, ptr noundef nonnull align 8 dereferenceable(8) %1596)
          to label %1597 unwind label %1612

1597:                                             ; preds = %1591
  %1598 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %180)
  %1599 = getelementptr inbounds i8, ptr %1598, i64 8
  %1600 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR10SimplePathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1599, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %1601 unwind label %1614

1601:                                             ; preds = %1597
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %183, ptr noundef nonnull align 8 dereferenceable(88) %180) #12
  %1602 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %183)
          to label %1603 unwind label %1617

1603:                                             ; preds = %1601
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %183) #12
  %.not1304 = icmp eq ptr %1602, null
  br i1 %.not1304, label %1766, label %1604

1604:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %184) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %184) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %185) #12
  %1605 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1585) #12
  store ptr %1605, ptr %185, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %186) #12
  %1606 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1585) #12
  store ptr %1606, ptr %186, align 8
  %1607 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %186) #12
  br i1 %1607, label %.lr.ph2860, label %._crit_edge2861

._crit_edge2861:                                  ; preds = %1621, %1604
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %188) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr noundef nonnull align 8 dereferenceable(24) %184) #12
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull %189)
          to label %1629 unwind label %1656

1608:                                             ; preds = %1587
  %1609 = landingpad { ptr, i32 }
          cleanup
  br label %1769

1610:                                             ; preds = %1589
  %1611 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #12
  br label %1768

1612:                                             ; preds = %1591
  %1613 = landingpad { ptr, i32 }
          cleanup
  br label %1616

1614:                                             ; preds = %1597
  %1615 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #12
  br label %1616

1616:                                             ; preds = %1614, %1612
  %.pn1302 = phi { ptr, i32 } [ %1615, %1614 ], [ %1613, %1612 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #12
  br label %1768

1617:                                             ; preds = %1601
  %1618 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %183) #12
  br label %1768

.lr.ph2860:                                       ; preds = %1604, %1621
  %1619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %185) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %187, ptr noundef nonnull align 8 dereferenceable(8) %1619)
          to label %1620 unwind label %1624

1620:                                             ; preds = %.lr.ph2860
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %184, ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %1621 unwind label %1626

1621:                                             ; preds = %1620
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #12
  %1622 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %185) #12
  %1623 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %186) #12
  br i1 %1623, label %.lr.ph2860, label %._crit_edge2861

1624:                                             ; preds = %.lr.ph2860
  %1625 = landingpad { ptr, i32 }
          cleanup
  br label %1628

1626:                                             ; preds = %1620
  %1627 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #12
  br label %1628

1628:                                             ; preds = %1626, %1624
  %.pn1332 = phi { ptr, i32 } [ %1627, %1626 ], [ %1625, %1624 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #12
  br label %1765

1629:                                             ; preds = %._crit_edge2861
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %190) #12
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %190)
          to label %1630 unwind label %1658

1630:                                             ; preds = %1629
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %191) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %191, ptr noundef nonnull align 8 dereferenceable(8) %1586)
          to label %1631 unwind label %1660

1631:                                             ; preds = %1630
  %1632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1352, ptr noundef nonnull align 8 dereferenceable(8) %191)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %192) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %193) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %193)
          to label %1633 unwind label %1662

1633:                                             ; preds = %1631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #12
  br i1 %.not1307.not, label %1638, label %1634

1634:                                             ; preds = %1633
  %1635 = getelementptr inbounds i8, ptr %1588, i64 16
  %1636 = load i32, ptr %1635, align 8, !tbaa !147
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %195, ptr noundef nonnull align 8 dereferenceable(8) %1376)
          to label %1637 unwind label %1664

1637:                                             ; preds = %1634
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %194, i32 noundef %1636, ptr noundef nonnull %195)
          to label %1639 unwind label %1666

1638:                                             ; preds = %1633
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %194, ptr noundef nonnull align 8 dereferenceable(8) %1376)
          to label %1639 unwind label %1666

1639:                                             ; preds = %1638, %1637
  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.390") align 8 %192, ptr noundef nonnull align 8 dereferenceable(212) %193, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %1640 unwind label %1668

1640:                                             ; preds = %1639
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1353, ptr noundef nonnull align 8 dereferenceable(224) %192)
          to label %1641 unwind label %1670

1641:                                             ; preds = %1640
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %192) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #12
  br i1 %.not1307.not, label %1643, label %1642

1642:                                             ; preds = %1641
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #12
  br label %1643

1643:                                             ; preds = %1642, %1641
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %193) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %193) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %192) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %196) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %197) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %197)
          to label %1644 unwind label %1677

1644:                                             ; preds = %1643
  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.390") align 8 %196, ptr noundef nonnull align 8 dereferenceable(212) %197, ptr noundef nonnull align 8 dereferenceable(8) %188)
          to label %1645 unwind label %1679

1645:                                             ; preds = %1644
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1353, ptr noundef nonnull align 8 dereferenceable(224) %196)
          to label %1646 unwind label %1681

1646:                                             ; preds = %1645
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %196) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %197) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %197) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %196) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %198) #12
  %1647 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %1648 unwind label %1685

1648:                                             ; preds = %1646
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %1647, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %1647)
          to label %1649 unwind label %1687

1649:                                             ; preds = %1648
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull %1647)
  %1650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1354, ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %1651 unwind label %1689

1651:                                             ; preds = %1649
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %199) #12
  %1652 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1354)
          to label %1653 unwind label %1692

1653:                                             ; preds = %1651
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(96) %1652)
          to label %1654 unwind label %1692

1654:                                             ; preds = %1653
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %200) #12
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #12
  %1655 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1585) #12
  %.not3943 = icmp eq i64 %1655, 0
  br i1 %.not3943, label %._crit_edge2865, label %.lr.ph2864

._crit_edge2865:                                  ; preds = %1698, %1654
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %204)
          to label %1713 unwind label %1734

1656:                                             ; preds = %._crit_edge2861
  %1657 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  br label %1764

1658:                                             ; preds = %1629
  %1659 = landingpad { ptr, i32 }
          cleanup
  br label %1763

1660:                                             ; preds = %1630
  %1661 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #12
  br label %1762

1662:                                             ; preds = %1631
  %1663 = landingpad { ptr, i32 }
          cleanup
  br label %1676

1664:                                             ; preds = %1634
  %1665 = landingpad { ptr, i32 }
          cleanup
  br label %1675

1666:                                             ; preds = %1638, %1637
  %1667 = landingpad { ptr, i32 }
          cleanup
  br label %1673

1668:                                             ; preds = %1639
  %1669 = landingpad { ptr, i32 }
          cleanup
  br label %1672

1670:                                             ; preds = %1640
  %1671 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %192) #12
  br label %1672

1672:                                             ; preds = %1670, %1668
  %.pn1305 = phi { ptr, i32 } [ %1671, %1670 ], [ %1669, %1668 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %194) #12
  br label %1673

1673:                                             ; preds = %1672, %1666
  %.pn1305.pn = phi { ptr, i32 } [ %.pn1305, %1672 ], [ %1667, %1666 ]
  br i1 %.not1307.not, label %1675, label %1674

1674:                                             ; preds = %1673
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #12
  br label %1675

1675:                                             ; preds = %1673, %1674, %1664
  %.pn1305.pn.pn = phi { ptr, i32 } [ %.pn1305.pn, %1674 ], [ %.pn1305.pn, %1673 ], [ %1665, %1664 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %193) #12
  br label %1676

1676:                                             ; preds = %1675, %1662
  %.pn1305.pn.pn.pn = phi { ptr, i32 } [ %.pn1305.pn.pn, %1675 ], [ %1663, %1662 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %193) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %192) #12
  br label %1762

1677:                                             ; preds = %1643
  %1678 = landingpad { ptr, i32 }
          cleanup
  br label %1684

1679:                                             ; preds = %1644
  %1680 = landingpad { ptr, i32 }
          cleanup
  br label %1683

1681:                                             ; preds = %1645
  %1682 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %196) #12
  br label %1683

1683:                                             ; preds = %1681, %1679
  %.pn1311 = phi { ptr, i32 } [ %1682, %1681 ], [ %1680, %1679 ]
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %197) #12
  br label %1684

1684:                                             ; preds = %1683, %1677
  %.pn1311.pn = phi { ptr, i32 } [ %.pn1311, %1683 ], [ %1678, %1677 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %197) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %196) #12
  br label %1762

1685:                                             ; preds = %1646
  %1686 = landingpad { ptr, i32 }
          cleanup
  br label %1691

1687:                                             ; preds = %1648
  %1688 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %1647, i64 noundef 96) #16
  br label %1691

1689:                                             ; preds = %1649
  %1690 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #12
  br label %1691

1691:                                             ; preds = %1689, %1687, %1685
  %.pn1314 = phi { ptr, i32 } [ %1690, %1689 ], [ %1688, %1687 ], [ %1686, %1685 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #12
  br label %1762

1692:                                             ; preds = %1653, %1651
  %1693 = landingpad { ptr, i32 }
          cleanup
  br label %1761

.lr.ph2864:                                       ; preds = %1654, %1698
  %.09012862 = phi i64 [ %1699, %1698 ], [ 0, %1654 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %201) #12
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %203, i32 noundef 1)
          to label %1694 unwind label %1702

1694:                                             ; preds = %.lr.ph2864
  %1695 = trunc i64 %.09012862 to i32
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %202, ptr noundef nonnull %203, i32 noundef %1695)
          to label %1696 unwind label %1704

1696:                                             ; preds = %1694
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %201, ptr noundef nonnull %202)
          to label %1697 unwind label %1706

1697:                                             ; preds = %1696
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(48) %201)
          to label %1698 unwind label %1708

1698:                                             ; preds = %1697
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %201) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %201) #12
  %1699 = add nuw i64 %.09012862, 1
  %1700 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1585) #12
  %1701 = icmp ult i64 %1699, %1700
  br i1 %1701, label %.lr.ph2864, label %._crit_edge2865, !llvm.loop !150

1702:                                             ; preds = %.lr.ph2864
  %1703 = landingpad { ptr, i32 }
          cleanup
  br label %1712

1704:                                             ; preds = %1694
  %1705 = landingpad { ptr, i32 }
          cleanup
  br label %1711

1706:                                             ; preds = %1696
  %1707 = landingpad { ptr, i32 }
          cleanup
  br label %1710

1708:                                             ; preds = %1697
  %1709 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %201) #12
  br label %1710

1710:                                             ; preds = %1708, %1706
  %.pn1323 = phi { ptr, i32 } [ %1709, %1708 ], [ %1707, %1706 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #12
  br label %1711

1711:                                             ; preds = %1710, %1704
  %.pn1323.pn = phi { ptr, i32 } [ %.pn1323, %1710 ], [ %1705, %1704 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #12
  br label %1712

1712:                                             ; preds = %1711, %1702
  %.pn1323.pn.pn = phi { ptr, i32 } [ %.pn1323.pn, %1711 ], [ %1703, %1702 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %201) #12
  br label %1760

1713:                                             ; preds = %._crit_edge2865
  br i1 %.not1307.not, label %1716, label %1714

1714:                                             ; preds = %1713
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %207, i32 noundef 0)
          to label %1715 unwind label %1736

1715:                                             ; preds = %1714
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %206, ptr noundef nonnull %207)
          to label %1717 unwind label %1738

1716:                                             ; preds = %1713
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %206, i32 noundef 0)
          to label %1717 unwind label %1740

1717:                                             ; preds = %1716, %1715
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %205, ptr noundef nonnull %206)
          to label %1718 unwind label %1742

1718:                                             ; preds = %1717
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %208, ptr noundef nonnull align 8 dereferenceable(24) %200) #12
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull %204, ptr noundef nonnull %205, ptr noundef nonnull %208, i32 noundef 1, i32 noundef 2)
          to label %1719 unwind label %1744

1719:                                             ; preds = %1718
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %205) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #12
  br i1 %.not1307.not, label %.critedge1482, label %.critedge

.critedge:                                        ; preds = %1719
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #12
  br label %.critedge1482

.critedge1482:                                    ; preds = %1719, %.critedge
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %199)
          to label %1720 unwind label %1734

1720:                                             ; preds = %.critedge1482
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %209)
          to label %1721 unwind label %1734

1721:                                             ; preds = %1720
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull %209)
          to label %1722 unwind label %1749

1722:                                             ; preds = %1721
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %209) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %199)
          to label %1723 unwind label %1734

1723:                                             ; preds = %1722
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %210)
          to label %1724 unwind label %1734

1724:                                             ; preds = %1723
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull %210)
          to label %1725 unwind label %1751

1725:                                             ; preds = %1724
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %210) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %211) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %211, ptr noundef nonnull align 8 dereferenceable(88) %1373)
  %1726 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1354)
          to label %1727 unwind label %1753

1727:                                             ; preds = %1725
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %1336, ptr noundef nonnull align 8 dereferenceable(56) %211, ptr noundef nonnull align 8 dereferenceable(96) %1726, ptr noundef nonnull align 8 dereferenceable(24) %1353, ptr noundef nonnull align 8 dereferenceable(8) %1352)
          to label %1728 unwind label %1753

1728:                                             ; preds = %1727
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %211) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %212) #12
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.537") align 8 %212, ptr noundef nonnull align 8 dereferenceable(352) %190)
          to label %1729 unwind label %1755

1729:                                             ; preds = %1728
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %812, ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %1730 unwind label %1757

1730:                                             ; preds = %1729
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #12
  %1731 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %1732 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1731) #12
  %1733 = getelementptr inbounds i8, ptr %1602, i64 8
  store ptr %1732, ptr %1733, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %200) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %199) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %190) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %190) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %184) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %184) #12
  br label %1766

1734:                                             ; preds = %1723, %1722, %1720, %.critedge1482, %._crit_edge2865
  %1735 = landingpad { ptr, i32 }
          cleanup
  br label %1760

1736:                                             ; preds = %1714
  %1737 = landingpad { ptr, i32 }
          cleanup
  br label %1748

1738:                                             ; preds = %1715
  %1739 = landingpad { ptr, i32 }
          cleanup
  br label %1747

1740:                                             ; preds = %1716
  %1741 = landingpad { ptr, i32 }
          cleanup
  br label %1748

1742:                                             ; preds = %1717
  %1743 = landingpad { ptr, i32 }
          cleanup
  br label %1746

1744:                                             ; preds = %1718
  %1745 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %205) #12
  br label %1746

1746:                                             ; preds = %1744, %1742
  %.pn1316 = phi { ptr, i32 } [ %1745, %1744 ], [ %1743, %1742 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #12
  br i1 %.not1307.not, label %1748, label %1747

1747:                                             ; preds = %1746, %1738
  %.pn1316.pn.pn.ph = phi { ptr, i32 } [ %1739, %1738 ], [ %.pn1316, %1746 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #12
  br label %1748

1748:                                             ; preds = %1746, %1740, %1747, %1736
  %.pn1316.pn.pn.pn = phi { ptr, i32 } [ %.pn1316.pn.pn.ph, %1747 ], [ %1737, %1736 ], [ %1741, %1740 ], [ %.pn1316, %1746 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #12
  br label %1760

1749:                                             ; preds = %1721
  %1750 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %209) #12
  br label %1760

1751:                                             ; preds = %1724
  %1752 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %210) #12
  br label %1760

1753:                                             ; preds = %1727, %1725
  %1754 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %211) #12
  br label %1760

1755:                                             ; preds = %1728
  %1756 = landingpad { ptr, i32 }
          cleanup
  br label %1759

1757:                                             ; preds = %1729
  %1758 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #12
  br label %1759

1759:                                             ; preds = %1757, %1755
  %.pn1321 = phi { ptr, i32 } [ %1758, %1757 ], [ %1756, %1755 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #12
  br label %1760

1760:                                             ; preds = %1759, %1753, %1751, %1749, %1748, %1734, %1712
  %.pn1323.pn.pn.pn = phi { ptr, i32 } [ %.pn1323.pn.pn, %1712 ], [ %.pn1321, %1759 ], [ %1754, %1753 ], [ %1752, %1751 ], [ %1735, %1734 ], [ %1750, %1749 ], [ %.pn1316.pn.pn.pn, %1748 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %200) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %200) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #12
  br label %1761

1761:                                             ; preds = %1760, %1692
  %.pn1323.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1323.pn.pn.pn, %1760 ], [ %1693, %1692 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %199) #12
  br label %1762

1762:                                             ; preds = %1761, %1691, %1684, %1676, %1660
  %.pn1323.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1323.pn.pn.pn.pn, %1761 ], [ %.pn1314, %1691 ], [ %.pn1311.pn, %1684 ], [ %.pn1305.pn.pn.pn, %1676 ], [ %1661, %1660 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %190) #12
  br label %1763

1763:                                             ; preds = %1762, %1658
  %.pn1323.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1323.pn.pn.pn.pn.pn, %1762 ], [ %1659, %1658 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %190) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #12
  br label %1764

1764:                                             ; preds = %1763, %1656
  %.pn1323.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1323.pn.pn.pn.pn.pn.pn, %1763 ], [ %1657, %1656 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #12
  br label %1765

1765:                                             ; preds = %1764, %1628
  %.pn1332.pn = phi { ptr, i32 } [ %.pn1332, %1628 ], [ %.pn1323.pn.pn.pn.pn.pn.pn.pn, %1764 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %184) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %184) #12
  br label %1768

1766:                                             ; preds = %1730, %1603
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %180) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %180) #12
  %1767 = add nuw nsw i64 %.2888, 1
  %.old5 = icmp ult i64 %.2888, 2
  br i1 %.old5, label %1587, label %.loopexit1596

1768:                                             ; preds = %1617, %1765, %1616, %1610
  %.pn1332.pn.pn.pn = phi { ptr, i32 } [ %.pn1302, %1616 ], [ %1611, %1610 ], [ %.pn1332.pn, %1765 ], [ %1618, %1617 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %180) #12
  br label %1769

1769:                                             ; preds = %1768, %1608
  %.pn1332.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1332.pn.pn.pn, %1768 ], [ %1609, %1608 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %180) #12
  br label %1772

.loopexit1596:                                    ; preds = %1576, %1766, %.preheader1597, %1581
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %146) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #12
  %1770 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #12
  %1771 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #12
  br i1 %1771, label %1372, label %._crit_edge2868

1772:                                             ; preds = %1580, %1769, %1379
  %.pn1367.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1380, %1379 ], [ %.pn1367.pn.pn.pn.pn.pn, %1580 ], [ %.pn1332.pn.pn.pn.pn, %1769 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %146) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #12
  br label %2590

._crit_edge2871:                                  ; preds = %1922, %._crit_edge2868
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %214) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %242) #12
  %1773 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1773, ptr %242, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %243) #12
  %1774 = call ptr @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  store ptr %1774, ptr %243, align 8
  %1775 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull align 8 dereferenceable(8) %243) #12
  br i1 %1775, label %.lr.ph2895, label %._crit_edge2896

.lr.ph2895:                                       ; preds = %._crit_edge2871
  %1776 = getelementptr inbounds i8, ptr %3, i64 8
  %1777 = getelementptr inbounds i8, ptr %250, i64 8
  %1778 = getelementptr inbounds i8, ptr %1, i64 552
  %1779 = getelementptr inbounds i8, ptr %272, i64 256
  %1780 = getelementptr inbounds i8, ptr %277, i64 8
  %1781 = getelementptr inbounds i8, ptr %277, i64 16
  %1782 = getelementptr inbounds i8, ptr %1, i64 264
  %1783 = getelementptr inbounds i8, ptr %3, i64 16
  %1784 = getelementptr inbounds i8, ptr %302, i64 240
  %1785 = getelementptr inbounds i8, ptr %302, i64 208
  %1786 = getelementptr inbounds i8, ptr %302, i64 304
  %1787 = getelementptr inbounds i8, ptr %272, i64 304
  br label %1942

1788:                                             ; preds = %.lr.ph2870, %1922
  %1789 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %213) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %215) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %215)
  %1790 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1789)
  %1791 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1789)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %216) #12
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %1792 unwind label %1798

1792:                                             ; preds = %1788
  %1793 = getelementptr inbounds i8, ptr %1790, i64 8
  %1794 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1793, ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %1795 unwind label %1800

1795:                                             ; preds = %1792
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #12
  br i1 %1794, label %1922, label %1803

1796:                                             ; preds = %1815, %1813, %1811, %1809, %1806, %1803
  %1797 = landingpad { ptr, i32 }
          cleanup
  br label %1940

1798:                                             ; preds = %1788
  %1799 = landingpad { ptr, i32 }
          cleanup
  br label %1802

1800:                                             ; preds = %1792
  %1801 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #12
  br label %1802

1802:                                             ; preds = %1800, %1798
  %.pn1270 = phi { ptr, i32 } [ %1801, %1800 ], [ %1799, %1798 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #12
  br label %1940

1803:                                             ; preds = %1795
  %1804 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1805 unwind label %1796

1805:                                             ; preds = %1803
  br i1 %1804, label %1806, label %1817

1806:                                             ; preds = %1805
  %1807 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1808 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1807, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1809 unwind label %1796

1809:                                             ; preds = %1806
  %1810 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1808, ptr noundef nonnull @.str.23)
          to label %1811 unwind label %1796

1811:                                             ; preds = %1809
  %1812 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1810, ptr noundef nonnull align 8 dereferenceable(8) %1791)
          to label %1813 unwind label %1796

1813:                                             ; preds = %1811
  %1814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1812, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1815 unwind label %1796

1815:                                             ; preds = %1813
  %1816 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1814, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1817 unwind label %1796

1817:                                             ; preds = %1815, %1805
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %217) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %217) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #12
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %218, i32 noundef 0)
          to label %1818 unwind label %1828

1818:                                             ; preds = %1817
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %217, ptr noundef nonnull align 8 dereferenceable(8) %218)
          to label %1819 unwind label %1830

1819:                                             ; preds = %1818
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %219) #12
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %219, i32 noundef 0)
          to label %1820 unwind label %1833

1820:                                             ; preds = %1819
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %217, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %1821 unwind label %1835

1821:                                             ; preds = %1820
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %219) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %220) #12
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %220, i32 noundef 0)
          to label %1822 unwind label %1838

1822:                                             ; preds = %1821
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %217, ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %1823 unwind label %1840

1823:                                             ; preds = %1822
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %220) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %222, ptr noundef nonnull align 8 dereferenceable(24) %217) #12
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull %222)
          to label %1824 unwind label %1843

1824:                                             ; preds = %1823
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %222) #12
  %1825 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(424) %1358, ptr noundef nonnull align 8 dereferenceable(8) %221)
          to label %1826 unwind label %1845

1826:                                             ; preds = %1824
  %.not1278 = icmp eq ptr %1825, null
  br i1 %.not1278, label %1827, label %1847

1827:                                             ; preds = %1826
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.9, i32 noundef 712, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

1828:                                             ; preds = %1817
  %1829 = landingpad { ptr, i32 }
          cleanup
  br label %1832

1830:                                             ; preds = %1818
  %1831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #12
  br label %1832

1832:                                             ; preds = %1830, %1828
  %.pn1272 = phi { ptr, i32 } [ %1831, %1830 ], [ %1829, %1828 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #12
  br label %1939

1833:                                             ; preds = %1819
  %1834 = landingpad { ptr, i32 }
          cleanup
  br label %1837

1835:                                             ; preds = %1820
  %1836 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #12
  br label %1837

1837:                                             ; preds = %1835, %1833
  %.pn1274 = phi { ptr, i32 } [ %1836, %1835 ], [ %1834, %1833 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %219) #12
  br label %1939

1838:                                             ; preds = %1821
  %1839 = landingpad { ptr, i32 }
          cleanup
  br label %1842

1840:                                             ; preds = %1822
  %1841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #12
  br label %1842

1842:                                             ; preds = %1840, %1838
  %.pn1276 = phi { ptr, i32 } [ %1841, %1840 ], [ %1839, %1838 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %220) #12
  br label %1939

1843:                                             ; preds = %1823
  %1844 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %222) #12
  br label %1938

1845:                                             ; preds = %1824
  %1846 = landingpad { ptr, i32 }
          cleanup
  br label %1937

1847:                                             ; preds = %1826
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %223) #12
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %223) #12
  store i32 1, ptr %223, align 8, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %224) #12
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %225, ptr noundef nonnull align 8 dereferenceable(72) %223) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(8) %221)
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %227)
          to label %1848 unwind label %1870

1848:                                             ; preds = %1847
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %224, ptr noundef nonnull %225, i1 noundef zeroext false, ptr noundef nonnull %226, ptr noundef nonnull %227)
          to label %1849 unwind label %1872

1849:                                             ; preds = %1848
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %227) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %225) #12
  %1850 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1851 unwind label %1875

1851:                                             ; preds = %1849
  %1852 = lshr i32 %1850, 3
  %1853 = getelementptr inbounds i8, ptr %1825, i64 8
  %1854 = load i64, ptr %1853, align 8, !tbaa !152
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1359, i64 noundef %1854)
          to label %1855 unwind label %1875

1855:                                             ; preds = %1851
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %228) #12
  store i64 0, ptr %228, align 8, !tbaa !160
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %229) #12
  store ptr %1359, ptr %229, align 8, !tbaa !11
  store ptr %228, ptr %1360, align 8, !tbaa !11
  store i32 %1852, ptr %1361, align 8, !tbaa !161
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %230) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %230, ptr noundef nonnull align 8 dereferenceable(8) %1791)
          to label %1856 unwind label %1877

1856:                                             ; preds = %1855
  %1857 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %1362, ptr noundef nonnull align 8 dereferenceable(8) %230)
          to label %1858 unwind label %1879

1858:                                             ; preds = %1856
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %232, ptr noundef nonnull align 8 dereferenceable(8) %1791)
          to label %1859 unwind label %1882

1859:                                             ; preds = %1858
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %234)
          to label %1860 unwind label %1884

1860:                                             ; preds = %1859
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %231, ptr noundef nonnull %232, ptr noundef nonnull %233, ptr noundef nonnull %234)
          to label %1861 unwind label %1886

1861:                                             ; preds = %1860
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_25clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %229, ptr noundef nonnull %231)
          to label %1862 unwind label %1888

1862:                                             ; preds = %1861
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %231) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %235) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %236) #12
  %1863 = invoke noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(424) %1358, ptr noundef nonnull align 8 dereferenceable(8) %1791, ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %1864 unwind label %.loopexit1590

1864:                                             ; preds = %1862
  br i1 %1863, label %1899, label %1865

1865:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %237) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %1866 unwind label %1892

1866:                                             ; preds = %1865
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %239) #12
  store ptr %1791, ptr %239, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef nonnull align 8 dereferenceable(8) %239) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull %238)
          to label %1867 unwind label %1894

1867:                                             ; preds = %1866
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %239) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #12
  %1868 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1868, ptr noundef nonnull @.str.10)
          to label %1869 unwind label %1897

1869:                                             ; preds = %1867
  invoke void @__cxa_throw(ptr nonnull %1868, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1591

1870:                                             ; preds = %1847
  %1871 = landingpad { ptr, i32 }
          cleanup
  br label %1874

1872:                                             ; preds = %1848
  %1873 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %227) #12
  br label %1874

1874:                                             ; preds = %1872, %1870
  %.pn1279 = phi { ptr, i32 } [ %1873, %1872 ], [ %1871, %1870 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %225) #12
  br label %1936

1875:                                             ; preds = %1851, %1849
  %1876 = landingpad { ptr, i32 }
          cleanup
  br label %1935

1877:                                             ; preds = %1855
  %1878 = landingpad { ptr, i32 }
          cleanup
  br label %1881

1879:                                             ; preds = %1856
  %1880 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #12
  br label %1881

1881:                                             ; preds = %1879, %1877
  %.pn1281 = phi { ptr, i32 } [ %1880, %1879 ], [ %1878, %1877 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #12
  br label %1934

1882:                                             ; preds = %1858
  %1883 = landingpad { ptr, i32 }
          cleanup
  br label %1934

1884:                                             ; preds = %1859
  %1885 = landingpad { ptr, i32 }
          cleanup
  br label %1891

1886:                                             ; preds = %1860
  %1887 = landingpad { ptr, i32 }
          cleanup
  br label %1890

1888:                                             ; preds = %1861
  %1889 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %231) #12
  br label %1890

1890:                                             ; preds = %1888, %1886
  %.pn1283 = phi { ptr, i32 } [ %1889, %1888 ], [ %1887, %1886 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #12
  br label %1891

1891:                                             ; preds = %1890, %1884
  %.pn1283.pn = phi { ptr, i32 } [ %.pn1283, %1890 ], [ %1885, %1884 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #12
  br label %1934

.loopexit1590:                                    ; preds = %1862, %1899, %1903
  %lpad.loopexit1592 = landingpad { ptr, i32 }
          cleanup
  br label %1913

.loopexit.split-lp1591:                           ; preds = %1869
  %lpad.loopexit.split-lp1593 = landingpad { ptr, i32 }
          cleanup
  br label %1913

1892:                                             ; preds = %1865
  %1893 = landingpad { ptr, i32 }
          cleanup
  br label %1896

1894:                                             ; preds = %1866
  %1895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %239) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #12
  br label %1896

1896:                                             ; preds = %1894, %1892
  %.pn1286 = phi { ptr, i32 } [ %1895, %1894 ], [ %1893, %1892 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #12
  br label %1913

1897:                                             ; preds = %1867
  %1898 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1868) #12
  br label %1913

1899:                                             ; preds = %1864
  %1900 = load i64, ptr %228, align 8, !tbaa !160
  %1901 = zext nneg i32 %1852 to i64
  %1902 = load i64, ptr %235, align 8, !tbaa !160
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %1359, i64 noundef %1900, i64 noundef %1901, i64 noundef %1902)
          to label %1903 unwind label %.loopexit1590

1903:                                             ; preds = %1899
  %1904 = load i64, ptr %228, align 8, !tbaa !160
  %1905 = add i64 %1904, %1901
  store i64 %1905, ptr %228, align 8, !tbaa !160
  %1906 = load i64, ptr %236, align 8, !tbaa !160
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %1359, i64 noundef %1905, i64 noundef %1901, i64 noundef %1906)
          to label %1907 unwind label %.loopexit1590

1907:                                             ; preds = %1903
  %1908 = load i64, ptr %228, align 8, !tbaa !160
  %1909 = add i64 %1908, %1901
  store i64 %1909, ptr %228, align 8, !tbaa !160
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %236) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #12
  %1910 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1359) #12
  %1911 = icmp eq i64 %1909, %1910
  br i1 %1911, label %1914, label %1912

1912:                                             ; preds = %1907
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.9, i32 noundef 740, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

1913:                                             ; preds = %.loopexit1590, %.loopexit.split-lp1591, %1897, %1896
  %.pn1288 = phi { ptr, i32 } [ %1898, %1897 ], [ %.pn1286, %1896 ], [ %lpad.loopexit1592, %.loopexit1590 ], [ %lpad.loopexit.split-lp1593, %.loopexit.split-lp1591 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %236) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #12
  br label %1934

1914:                                             ; preds = %1907
  store i8 1, ptr %1363, align 8, !tbaa !163
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %240) #12
  invoke void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.560") align 8 %240, ptr noundef nonnull align 8 dereferenceable(360) %224)
          to label %1915 unwind label %1925

1915:                                             ; preds = %1914
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1328, ptr noundef nonnull align 8 dereferenceable(8) %240)
          to label %1916 unwind label %1927

1916:                                             ; preds = %1915
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %240) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %241, ptr noundef nonnull align 8 dereferenceable(88) %1789)
          to label %1917 unwind label %1930

1917:                                             ; preds = %1916
  %1918 = invoke noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %241)
          to label %1919 unwind label %1932

1919:                                             ; preds = %1917
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %241) #12
  %1920 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1328) #12
  %1921 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1920) #12
  store ptr %1921, ptr %1918, align 8, !tbaa !179
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %229) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %228) #12
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %224) #12
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %224) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %223) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %223) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #12
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %217) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %217) #12
  br label %1922

1922:                                             ; preds = %1795, %1919
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #12
  %1923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %213) #12
  %1924 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %214) #12
  br i1 %1924, label %1788, label %._crit_edge2871

1925:                                             ; preds = %1914
  %1926 = landingpad { ptr, i32 }
          cleanup
  br label %1929

1927:                                             ; preds = %1915
  %1928 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #12
  br label %1929

1929:                                             ; preds = %1927, %1925
  %.pn1290 = phi { ptr, i32 } [ %1928, %1927 ], [ %1926, %1925 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %240) #12
  br label %1934

1930:                                             ; preds = %1916
  %1931 = landingpad { ptr, i32 }
          cleanup
  br label %1934

1932:                                             ; preds = %1917
  %1933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %241) #12
  br label %1934

1934:                                             ; preds = %1930, %1932, %1929, %1913, %1891, %1882, %1881
  %.pn1292.pn = phi { ptr, i32 } [ %.pn1290, %1929 ], [ %.pn1288, %1913 ], [ %.pn1283.pn, %1891 ], [ %1883, %1882 ], [ %.pn1281, %1881 ], [ %1933, %1932 ], [ %1931, %1930 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %229) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %228) #12
  br label %1935

1935:                                             ; preds = %1934, %1875
  %.pn1292.pn.pn = phi { ptr, i32 } [ %.pn1292.pn, %1934 ], [ %1876, %1875 ]
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %224) #12
  br label %1936

1936:                                             ; preds = %1935, %1874
  %.pn1292.pn.pn.pn = phi { ptr, i32 } [ %.pn1292.pn.pn, %1935 ], [ %.pn1279, %1874 ]
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %224) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %223) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %223) #12
  br label %1937

1937:                                             ; preds = %1936, %1845
  %.pn1292.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1292.pn.pn.pn, %1936 ], [ %1846, %1845 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #12
  br label %1938

1938:                                             ; preds = %1937, %1843
  %.pn1292.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1292.pn.pn.pn.pn, %1937 ], [ %1844, %1843 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #12
  br label %1939

1939:                                             ; preds = %1938, %1842, %1837, %1832
  %.pn1292.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1292.pn.pn.pn.pn.pn, %1938 ], [ %.pn1276, %1842 ], [ %.pn1274, %1837 ], [ %.pn1272, %1832 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %217) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %217) #12
  br label %1940

1940:                                             ; preds = %1939, %1802, %1796
  %.pn1292.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1292.pn.pn.pn.pn.pn.pn, %1939 ], [ %1797, %1796 ], [ %.pn1270, %1802 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %214) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #12
  br label %2590

._crit_edge2896:                                  ; preds = %2537, %._crit_edge2871
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #12
  call void @_ZNSt3mapIN3HIR4PathE12Trans_ParamsSt4lessIS1_ESaISt4pairIKS1_S2_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %1329) #12
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %140) #12
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %345) #12
  %1941 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2558 unwind label %2592

1942:                                             ; preds = %.lr.ph2895, %2537
  %1943 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %242) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %244) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244)
  %1944 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1943)
  %1945 = getelementptr inbounds i8, ptr %1944, i64 8
  %1946 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1943)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %245) #12
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %1947 unwind label %1952

1947:                                             ; preds = %1942
  %1948 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1945, ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %1949 unwind label %1954

1949:                                             ; preds = %1947
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %245) #12
  br i1 %1948, label %2537, label %1957

1950:                                             ; preds = %1973, %1971, %1969, %1967, %1965, %1963, %1960, %1957
  %1951 = landingpad { ptr, i32 }
          cleanup
  br label %2557

1952:                                             ; preds = %1942
  %1953 = landingpad { ptr, i32 }
          cleanup
  br label %1956

1954:                                             ; preds = %1947
  %1955 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #12
  br label %1956

1956:                                             ; preds = %1954, %1952
  %.pn1161 = phi { ptr, i32 } [ %1955, %1954 ], [ %1953, %1952 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %245) #12
  br label %2557

1957:                                             ; preds = %1949
  %1958 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1959 unwind label %1950

1959:                                             ; preds = %1957
  br i1 %1958, label %1960, label %1975

1960:                                             ; preds = %1959
  %1961 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %1962 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1961, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %1963 unwind label %1950

1963:                                             ; preds = %1960
  %1964 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1962, ptr noundef nonnull @.str.26)
          to label %1965 unwind label %1950

1965:                                             ; preds = %1963
  %1966 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1964, ptr noundef nonnull align 8 dereferenceable(32) %1945)
          to label %1967 unwind label %1950

1967:                                             ; preds = %1965
  %1968 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1966, ptr noundef nonnull @.str.27)
          to label %1969 unwind label %1950

1969:                                             ; preds = %1967
  %1970 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1968, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %1971 unwind label %1950

1971:                                             ; preds = %1969
  %1972 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1970, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1973 unwind label %1950

1973:                                             ; preds = %1971
  %1974 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1972, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1975 unwind label %1950

1975:                                             ; preds = %1973, %1959
  %1976 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %1945)
          to label %1977 unwind label %1987

1977:                                             ; preds = %1975
  %1978 = getelementptr inbounds i8, ptr %1976, i64 392
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %246) #12
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %246)
          to label %1979 unwind label %1989

1979:                                             ; preds = %1977
  %1980 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1978, ptr noundef nonnull align 8 dereferenceable(8) %246)
          to label %1981 unwind label %1991

1981:                                             ; preds = %1979
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #12
  br i1 %1980, label %2003, label %1982

1982:                                             ; preds = %1981
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %247) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %1983 unwind label %1994

1983:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %249) #12
  store ptr %1945, ptr %249, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %248, ptr noundef nonnull align 8 dereferenceable(8) %249) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull %248)
          to label %1984 unwind label %1996

1984:                                             ; preds = %1983
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #12
  %1985 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1985, ptr noundef nonnull @.str.10)
          to label %1986 unwind label %1999

1986:                                             ; preds = %1984
  invoke void @__cxa_throw(ptr nonnull %1985, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %2001

1987:                                             ; preds = %1975
  %1988 = landingpad { ptr, i32 }
          cleanup
  br label %2557

1989:                                             ; preds = %1977
  %1990 = landingpad { ptr, i32 }
          cleanup
  br label %1993

1991:                                             ; preds = %1979
  %1992 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #12
  br label %1993

1993:                                             ; preds = %1991, %1989
  %.pn1163 = phi { ptr, i32 } [ %1992, %1991 ], [ %1990, %1989 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #12
  br label %2557

1994:                                             ; preds = %1982
  %1995 = landingpad { ptr, i32 }
          cleanup
  br label %1998

1996:                                             ; preds = %1983
  %1997 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %249) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #12
  br label %1998

1998:                                             ; preds = %1996, %1994
  %.pn1264 = phi { ptr, i32 } [ %1997, %1996 ], [ %1995, %1994 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %247) #12
  br label %2557

1999:                                             ; preds = %1984
  %2000 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1985) #12
  br label %2557

2001:                                             ; preds = %1986
  %2002 = landingpad { ptr, i32 }
          cleanup
  br label %2557

2003:                                             ; preds = %1981
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %250) #12
  %2004 = getelementptr inbounds i8, ptr %1944, i64 16
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %250, ptr noundef nonnull align 8 dereferenceable(24) %2004)
          to label %2005 unwind label %2011

2005:                                             ; preds = %2003
  %2006 = getelementptr inbounds i8, ptr %1976, i64 304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %251) #12
  %2007 = call ptr @_ZNKSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %2006) #12
  store ptr %2007, ptr %251, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %252) #12
  %2008 = call ptr @_ZNKSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %2006) #12
  store ptr %2008, ptr %252, align 8
  %2009 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringjELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull align 8 dereferenceable(8) %252) #12
  br i1 %2009, label %.lr.ph2873, label %._crit_edge2874

._crit_edge2874:                                  ; preds = %2021, %2005
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %252) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %251) #12
  %2010 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %0, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %1978)
          to label %2046 unwind label %2061

2011:                                             ; preds = %2003
  %2012 = landingpad { ptr, i32 }
          cleanup
  br label %2556

.lr.ph2873:                                       ; preds = %2005, %2021
  %2013 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringjELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %251) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %253) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %255, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2014 unwind label %2024

2014:                                             ; preds = %.lr.ph2873
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %256, ptr noundef nonnull align 8 dereferenceable(32) %1945)
          to label %2015 unwind label %2026

2015:                                             ; preds = %2014
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull align 8 dereferenceable(8) %2013)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %258)
          to label %2016 unwind label %2028

2016:                                             ; preds = %2015
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %254, ptr noundef nonnull %255, ptr noundef nonnull %256, ptr noundef nonnull %257, ptr noundef nonnull %258)
          to label %2017 unwind label %2030

2017:                                             ; preds = %2016
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %259)
          to label %2018 unwind label %2032

2018:                                             ; preds = %2017
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %253, ptr noundef nonnull %254, ptr noundef nonnull %259)
          to label %2019 unwind label %2034

2019:                                             ; preds = %2018
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %254) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %258) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #12
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %253)
          to label %2020 unwind label %2040

2020:                                             ; preds = %2019
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %253)
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1777, ptr noundef nonnull %260)
          to label %2021 unwind label %2042

2021:                                             ; preds = %2020
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #12
  %2022 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringjELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %251) #12
  %2023 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringjELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull align 8 dereferenceable(8) %252) #12
  br i1 %2023, label %.lr.ph2873, label %._crit_edge2874

2024:                                             ; preds = %.lr.ph2873
  %2025 = landingpad { ptr, i32 }
          cleanup
  br label %2045

2026:                                             ; preds = %2014
  %2027 = landingpad { ptr, i32 }
          cleanup
  br label %2039

2028:                                             ; preds = %2015
  %2029 = landingpad { ptr, i32 }
          cleanup
  br label %2038

2030:                                             ; preds = %2016
  %2031 = landingpad { ptr, i32 }
          cleanup
  br label %2037

2032:                                             ; preds = %2017
  %2033 = landingpad { ptr, i32 }
          cleanup
  br label %2036

2034:                                             ; preds = %2018
  %2035 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %259) #12
  br label %2036

2036:                                             ; preds = %2034, %2032
  %.pn1254 = phi { ptr, i32 } [ %2035, %2034 ], [ %2033, %2032 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %254) #12
  br label %2037

2037:                                             ; preds = %2036, %2030
  %.pn1254.pn = phi { ptr, i32 } [ %.pn1254, %2036 ], [ %2031, %2030 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %258) #12
  br label %2038

2038:                                             ; preds = %2037, %2028
  %.pn1254.pn.pn = phi { ptr, i32 } [ %.pn1254.pn, %2037 ], [ %2029, %2028 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #12
  br label %2039

2039:                                             ; preds = %2038, %2026
  %.pn1254.pn.pn.pn = phi { ptr, i32 } [ %.pn1254.pn.pn, %2038 ], [ %2027, %2026 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #12
  br label %2045

2040:                                             ; preds = %2019
  %2041 = landingpad { ptr, i32 }
          cleanup
  br label %2044

2042:                                             ; preds = %2020
  %2043 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #12
  br label %2044

2044:                                             ; preds = %2042, %2040
  %.pn1259 = phi { ptr, i32 } [ %2043, %2042 ], [ %2041, %2040 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %253) #12
  br label %2045

2045:                                             ; preds = %2044, %2039, %2024
  %.pn1259.pn = phi { ptr, i32 } [ %.pn1259, %2044 ], [ %.pn1254.pn.pn.pn, %2039 ], [ %2025, %2024 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %253) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %252) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %251) #12
  br label %2555

2046:                                             ; preds = %._crit_edge2874
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %261) #12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull align 8 dereferenceable(8) %1978)
          to label %2047 unwind label %2063

2047:                                             ; preds = %2046
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %265, ptr noundef nonnull align 8 dereferenceable(24) %250)
          to label %2048 unwind label %2065

2048:                                             ; preds = %2047
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull %264, ptr noundef nonnull %265)
          to label %2049 unwind label %2067

2049:                                             ; preds = %2048
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %262, ptr noundef nonnull %263)
          to label %2050 unwind label %2069

2050:                                             ; preds = %2049
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %266, ptr noundef nonnull %2010)
          to label %2051 unwind label %2071

2051:                                             ; preds = %2050
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %261, ptr noundef nonnull %262, ptr noundef nonnull %266)
          to label %2052 unwind label %2073

2052:                                             ; preds = %2051
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %266) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %262) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %265) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #12
  %2053 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1778) #12
  %2054 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1778) #12
  %2055 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS5_SaIS5_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_26EbT_SG_T0_"(ptr %2053, ptr %2054, ptr nonnull %261)
          to label %2056 unwind label %2079

2056:                                             ; preds = %2052
  br i1 %2055, label %2089, label %2057

2057:                                             ; preds = %2056
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %267) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %268) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %268, ptr noundef nonnull align 8 dereferenceable(8) %261)
          to label %2058 unwind label %2081

2058:                                             ; preds = %2057
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %269) #12
  store i8 0, ptr %269, align 1, !tbaa !181
  invoke void @_ZSt9make_pairIN3HIR7TypeRefEbESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.589") align 8 %267, ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 1 dereferenceable(1) %269)
          to label %2059 unwind label %2083

2059:                                             ; preds = %2058
  invoke void @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1778, ptr noundef nonnull align 8 dereferenceable(9) %267)
          to label %2060 unwind label %2085

2060:                                             ; preds = %2059
  call void @_ZNSt4pairIN3HIR7TypeRefEbED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %267) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %269) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %268) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %267) #12
  br label %2089

2061:                                             ; preds = %._crit_edge2874
  %2062 = landingpad { ptr, i32 }
          cleanup
  br label %2555

2063:                                             ; preds = %2046
  %2064 = landingpad { ptr, i32 }
          cleanup
  br label %2554

2065:                                             ; preds = %2047
  %2066 = landingpad { ptr, i32 }
          cleanup
  br label %2078

2067:                                             ; preds = %2048
  %2068 = landingpad { ptr, i32 }
          cleanup
  br label %2077

2069:                                             ; preds = %2049
  %2070 = landingpad { ptr, i32 }
          cleanup
  br label %2076

2071:                                             ; preds = %2050
  %2072 = landingpad { ptr, i32 }
          cleanup
  br label %2075

2073:                                             ; preds = %2051
  %2074 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %266) #12
  br label %2075

2075:                                             ; preds = %2073, %2071
  %.pn1165 = phi { ptr, i32 } [ %2074, %2073 ], [ %2072, %2071 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %262) #12
  br label %2076

2076:                                             ; preds = %2075, %2069
  %.pn1165.pn = phi { ptr, i32 } [ %.pn1165, %2075 ], [ %2070, %2069 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #12
  br label %2077

2077:                                             ; preds = %2076, %2067
  %.pn1165.pn.pn = phi { ptr, i32 } [ %.pn1165.pn, %2076 ], [ %2068, %2067 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %265) #12
  br label %2078

2078:                                             ; preds = %2077, %2065
  %.pn1165.pn.pn.pn = phi { ptr, i32 } [ %.pn1165.pn.pn, %2077 ], [ %2066, %2065 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #12
  br label %2554

2079:                                             ; preds = %2052
  %2080 = landingpad { ptr, i32 }
          cleanup
  br label %2553

2081:                                             ; preds = %2057
  %2082 = landingpad { ptr, i32 }
          cleanup
  br label %2088

2083:                                             ; preds = %2058
  %2084 = landingpad { ptr, i32 }
          cleanup
  br label %2087

2085:                                             ; preds = %2059
  %2086 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7TypeRefEbED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %267) #12
  br label %2087

2087:                                             ; preds = %2085, %2083
  %.pn1170 = phi { ptr, i32 } [ %2086, %2085 ], [ %2084, %2083 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %269) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %268) #12
  br label %2088

2088:                                             ; preds = %2087, %2081
  %.pn1170.pn = phi { ptr, i32 } [ %.pn1170, %2087 ], [ %2082, %2081 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %267) #12
  br label %2553

2089:                                             ; preds = %2060, %2056
  %2090 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(8) %261)
          to label %2091 unwind label %2093

2091:                                             ; preds = %2089
  %.not1173 = icmp eq ptr %2090, null
  br i1 %.not1173, label %2092, label %2095

2092:                                             ; preds = %2091
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.9, i32 noundef 781, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

2093:                                             ; preds = %2089
  %2094 = landingpad { ptr, i32 }
          cleanup
  br label %2553

2095:                                             ; preds = %2091
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %270) #12
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %270, ptr noundef nonnull %1946, ptr noundef nonnull %2004, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2096 unwind label %2119

2096:                                             ; preds = %2095
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %271) #12
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %271) #12
  store i32 1, ptr %271, align 8, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %272) #12
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %273, ptr noundef nonnull align 8 dereferenceable(72) %271) #12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(8) %261)
  invoke void @_ZN3HIR7ExprPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %275)
          to label %2097 unwind label %2121

2097:                                             ; preds = %2096
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %272, ptr noundef nonnull %273, i1 noundef zeroext false, ptr noundef nonnull %274, ptr noundef nonnull %275)
          to label %2098 unwind label %2123

2098:                                             ; preds = %2097
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %275) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %273) #12
  %2099 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2100 unwind label %2126

2100:                                             ; preds = %2098
  %2101 = lshr i32 %2099, 3
  %2102 = getelementptr inbounds i8, ptr %2090, i64 8
  %2103 = load i64, ptr %2102, align 8, !tbaa !152
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1779, i64 noundef %2103)
          to label %2104 unwind label %2126

2104:                                             ; preds = %2100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %276) #12
  store i64 0, ptr %276, align 8, !tbaa !160
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %277) #12
  store ptr %1779, ptr %277, align 8, !tbaa !11
  store ptr %276, ptr %1780, align 8, !tbaa !11
  store i32 %2101, ptr %1781, align 8, !tbaa !182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %278) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %278, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2105 unwind label %2128

2105:                                             ; preds = %2104
  %2106 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %1782, ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %2107 unwind label %2130

2107:                                             ; preds = %2105
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %278) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %280, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2108 unwind label %2133

2108:                                             ; preds = %2107
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %282)
          to label %2109 unwind label %2135

2109:                                             ; preds = %2108
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %279, ptr noundef nonnull %280, ptr noundef nonnull %281, ptr noundef nonnull %282)
          to label %2110 unwind label %2137

2110:                                             ; preds = %2109
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %277, ptr noundef nonnull %279)
          to label %2111 unwind label %2139

2111:                                             ; preds = %2110
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %279) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %282) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %280) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %283) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %284) #12
  %2112 = invoke noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(8) %1946, ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %2113 unwind label %.loopexit1585

2113:                                             ; preds = %2111
  br i1 %2112, label %2150, label %2114

2114:                                             ; preds = %2113
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %285) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %2115 unwind label %2143

2115:                                             ; preds = %2114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %287) #12
  store ptr %1946, ptr %287, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull align 8 dereferenceable(8) %287) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull %286)
          to label %2116 unwind label %2145

2116:                                             ; preds = %2115
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %287) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %285) #12
  %2117 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2117, ptr noundef nonnull @.str.10)
          to label %2118 unwind label %2148

2118:                                             ; preds = %2116
  invoke void @__cxa_throw(ptr nonnull %2117, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1586

2119:                                             ; preds = %2095
  %2120 = landingpad { ptr, i32 }
          cleanup
  br label %2552

2121:                                             ; preds = %2096
  %2122 = landingpad { ptr, i32 }
          cleanup
  br label %2125

2123:                                             ; preds = %2097
  %2124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %275) #12
  br label %2125

2125:                                             ; preds = %2123, %2121
  %.pn1174 = phi { ptr, i32 } [ %2124, %2123 ], [ %2122, %2121 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %273) #12
  br label %2551

2126:                                             ; preds = %2100, %2098
  %2127 = landingpad { ptr, i32 }
          cleanup
  br label %2550

2128:                                             ; preds = %2104
  %2129 = landingpad { ptr, i32 }
          cleanup
  br label %2132

2130:                                             ; preds = %2105
  %2131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #12
  br label %2132

2132:                                             ; preds = %2130, %2128
  %.pn1176 = phi { ptr, i32 } [ %2131, %2130 ], [ %2129, %2128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %278) #12
  br label %2549

2133:                                             ; preds = %2107
  %2134 = landingpad { ptr, i32 }
          cleanup
  br label %2549

2135:                                             ; preds = %2108
  %2136 = landingpad { ptr, i32 }
          cleanup
  br label %2142

2137:                                             ; preds = %2109
  %2138 = landingpad { ptr, i32 }
          cleanup
  br label %2141

2139:                                             ; preds = %2110
  %2140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %279) #12
  br label %2141

2141:                                             ; preds = %2139, %2137
  %.pn1178 = phi { ptr, i32 } [ %2140, %2139 ], [ %2138, %2137 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %282) #12
  br label %2142

2142:                                             ; preds = %2141, %2135
  %.pn1178.pn = phi { ptr, i32 } [ %.pn1178, %2141 ], [ %2136, %2135 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %280) #12
  br label %2549

.loopexit1585:                                    ; preds = %2111, %2150, %2154
  %lpad.loopexit1587 = landingpad { ptr, i32 }
          cleanup
  br label %2167

.loopexit.split-lp1586:                           ; preds = %2118
  %lpad.loopexit.split-lp1588 = landingpad { ptr, i32 }
          cleanup
  br label %2167

2143:                                             ; preds = %2114
  %2144 = landingpad { ptr, i32 }
          cleanup
  br label %2147

2145:                                             ; preds = %2115
  %2146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %287) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #12
  br label %2147

2147:                                             ; preds = %2145, %2143
  %.pn1181 = phi { ptr, i32 } [ %2146, %2145 ], [ %2144, %2143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %285) #12
  br label %2167

2148:                                             ; preds = %2116
  %2149 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2117) #12
  br label %2167

2150:                                             ; preds = %2113
  %2151 = load i64, ptr %276, align 8, !tbaa !160
  %2152 = zext nneg i32 %2101 to i64
  %2153 = load i64, ptr %283, align 8, !tbaa !160
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %1779, i64 noundef %2151, i64 noundef %2152, i64 noundef %2153)
          to label %2154 unwind label %.loopexit1585

2154:                                             ; preds = %2150
  %2155 = load i64, ptr %276, align 8, !tbaa !160
  %2156 = add i64 %2155, %2152
  store i64 %2156, ptr %276, align 8, !tbaa !160
  %2157 = load i64, ptr %284, align 8, !tbaa !160
  invoke void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48) %1779, i64 noundef %2156, i64 noundef %2152, i64 noundef %2157)
          to label %2158 unwind label %.loopexit1585

2158:                                             ; preds = %2154
  %2159 = load i64, ptr %276, align 8, !tbaa !160
  %2160 = add i64 %2159, %2152
  store i64 %2160, ptr %276, align 8, !tbaa !160
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %284) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #12
  %2161 = getelementptr inbounds i8, ptr %1976, i64 248
  %2162 = call noundef i64 @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %2161) #12
  %.not3944 = icmp eq i64 %2162, 0
  br i1 %.not3944, label %.preheader1579, label %.lr.ph2890

.preheader1579:                                   ; preds = %._crit_edge2887, %2158
  %2163 = getelementptr inbounds i8, ptr %1976, i64 368
  %2164 = call noundef i64 @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2163) #12
  %.not3946 = icmp eq i64 %2164, 0
  br i1 %.not3946, label %._crit_edge2893, label %.lr.ph2892

.lr.ph2892:                                       ; preds = %.preheader1579
  %2165 = getelementptr inbounds i8, ptr %2090, i64 88
  %2166 = getelementptr inbounds i8, ptr %1976, i64 360
  br label %2468

2167:                                             ; preds = %.loopexit1585, %.loopexit.split-lp1586, %2148, %2147
  %.pn1183 = phi { ptr, i32 } [ %2149, %2148 ], [ %.pn1181, %2147 ], [ %lpad.loopexit1587, %.loopexit1585 ], [ %lpad.loopexit.split-lp1588, %.loopexit.split-lp1586 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %284) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %283) #12
  br label %2549

.lr.ph2890:                                       ; preds = %2158, %._crit_edge2887
  %.09142888 = phi i32 [ %2172, %._crit_edge2887 ], [ 0, %2158 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %288) #12
  %2168 = call ptr @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %2161) #12
  store ptr %2168, ptr %288, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %289) #12
  %2169 = call ptr @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %2161) #12
  store ptr %2169, ptr %289, align 8
  %2170 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(8) %289) #12
  br i1 %2170, label %.lr.ph2886, label %._crit_edge2887

.lr.ph2886:                                       ; preds = %.lr.ph2890
  %2171 = add i32 %.09142888, 3
  br label %2176

._crit_edge2887:                                  ; preds = %2455, %.lr.ph2890
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #12
  %2172 = add i32 %.09142888, 1
  %2173 = zext i32 %2172 to i64
  %2174 = call noundef i64 @_ZNKSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %2161) #12
  %2175 = icmp ugt i64 %2174, %2173
  br i1 %2175, label %.lr.ph2890, label %.preheader1579, !llvm.loop !184

2176:                                             ; preds = %.lr.ph2886, %2455
  %2177 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %288) #12
  %2178 = getelementptr inbounds i8, ptr %2177, i64 8
  %2179 = load i32, ptr %2178, align 8, !tbaa !185
  %.not1200 = icmp eq i32 %2179, %2171
  br i1 %.not1200, label %2180, label %2455

2180:                                             ; preds = %2176
  %2181 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2182 unwind label %2204

2182:                                             ; preds = %2180
  br i1 %2181, label %2183, label %2206

2183:                                             ; preds = %2182
  %2184 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %2185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2184, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %2186 unwind label %2204

2186:                                             ; preds = %2183
  %2187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2185, ptr noundef nonnull @.str.28)
          to label %2188 unwind label %2204

2188:                                             ; preds = %2186
  %2189 = load i32, ptr %2178, align 8, !tbaa !185
  %2190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %2187, i32 noundef %2189)
          to label %2191 unwind label %2204

2191:                                             ; preds = %2188
  %2192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2190, ptr noundef nonnull @.str.29)
          to label %2193 unwind label %2204

2193:                                             ; preds = %2191
  %2194 = getelementptr inbounds i8, ptr %2177, i64 16
  %2195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %2192, ptr noundef nonnull align 8 dereferenceable(32) %2194)
          to label %2196 unwind label %2204

2196:                                             ; preds = %2193
  %2197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2195, ptr noundef nonnull @.str.30)
          to label %2198 unwind label %2204

2198:                                             ; preds = %2196
  %2199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %2197, ptr noundef nonnull align 8 dereferenceable(8) %2177)
          to label %2200 unwind label %2204

2200:                                             ; preds = %2198
  %2201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2199, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %2202 unwind label %2204

2202:                                             ; preds = %2200
  %2203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2201, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2206 unwind label %2204

2204:                                             ; preds = %2202, %2200, %2198, %2196, %2193, %2191, %2188, %2186, %2183, %2180
  %2205 = landingpad { ptr, i32 }
          cleanup
  br label %2464

2206:                                             ; preds = %2202, %2182
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %290) #12
  %2207 = getelementptr inbounds i8, ptr %2177, i64 16
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %290, ptr noundef nonnull align 8 dereferenceable(96) %270, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(32) %2207, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %2208 unwind label %2258

2208:                                             ; preds = %2206
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %291) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %292, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2209 unwind label %2260

2209:                                             ; preds = %2208
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef nonnull align 8 dereferenceable(32) %290)
          to label %2210 unwind label %2262

2210:                                             ; preds = %2209
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %2177)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %295)
          to label %2211 unwind label %2264

2211:                                             ; preds = %2210
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %291, ptr noundef nonnull %292, ptr noundef nonnull %293, ptr noundef nonnull %294, ptr noundef nonnull %295)
          to label %2212 unwind label %2266

2212:                                             ; preds = %2211
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %295) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #12
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %296) #12
  %2213 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %291)
  %2214 = getelementptr inbounds i8, ptr %2213, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %296, ptr noundef nonnull %1946, ptr noundef nonnull %2214, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2215 unwind label %2270

2215:                                             ; preds = %2212
  %2216 = load ptr, ptr %1783, align 8, !tbaa !188
  %2217 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %2216, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %2207)
          to label %2218 unwind label %2272

2218:                                             ; preds = %2215
  %2219 = getelementptr inbounds i8, ptr %2217, i64 192
  %2220 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2219, ptr noundef nonnull align 8 dereferenceable(8) %2177)
          to label %2221 unwind label %2274

2221:                                             ; preds = %2218
  %2222 = call noundef zeroext i1 @_ZNK3HIR14TraitValueItem11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %2220)
  br i1 %2222, label %2223, label %2453

2223:                                             ; preds = %2221
  %2224 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %2220)
  %2225 = getelementptr inbounds i8, ptr %2224, i64 80
  %2226 = load i32, ptr %2225, align 8, !tbaa !139
  %2227 = icmp eq i32 %2226, 1
  br i1 %2227, label %2228, label %2453

2228:                                             ; preds = %2223
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %297) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %297, ptr noundef nonnull align 8 dereferenceable(88) %291)
          to label %2229 unwind label %2276

2229:                                             ; preds = %2228
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %298) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %299) #12
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %300) #12
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %300)
          to label %2230 unwind label %2278

2230:                                             ; preds = %2229
  %2231 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE8RcStringEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %300, ptr noundef nonnull align 8 dereferenceable(8) %2177)
          to label %2232 unwind label %2280

2232:                                             ; preds = %2230
  %2233 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA5_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %2231, ptr noundef nonnull align 1 dereferenceable(5) @.str.31)
          to label %2234 unwind label %2280

2234:                                             ; preds = %2232
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %299, ptr noundef nonnull align 8 dereferenceable(112) %2233)
          to label %2235 unwind label %2280

2235:                                             ; preds = %2234
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %298, ptr noundef nonnull align 8 dereferenceable(32) %299)
          to label %2236 unwind label %2282

2236:                                             ; preds = %2235
  %2237 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %291)
  %2238 = getelementptr inbounds i8, ptr %2237, i64 40
  %2239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %2238, ptr noundef nonnull align 8 dereferenceable(8) %298)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #12
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %300) #12
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %300) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %299) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %301, ptr noundef nonnull align 8 dereferenceable(88) %291)
          to label %2240 unwind label %2286

2240:                                             ; preds = %2236
  %2241 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %301)
          to label %2242 unwind label %2288

2242:                                             ; preds = %2240
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %301) #12
  %.not1207 = icmp eq ptr %2241, null
  br i1 %.not1207, label %2450, label %2243

2243:                                             ; preds = %2242
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %302) #12
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %302)
          to label %2244 unwind label %2290

2244:                                             ; preds = %2243
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %303) #12
  %2245 = getelementptr inbounds i8, ptr %2224, i64 240
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %303, ptr noundef nonnull align 8 dereferenceable(96) %296, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %2245, i1 noundef zeroext true)
          to label %2246 unwind label %2292

2246:                                             ; preds = %2244
  %2247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1784, ptr noundef nonnull align 8 dereferenceable(8) %303)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %303) #12
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %1784)
          to label %2248 unwind label %2294

2248:                                             ; preds = %2246
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %304) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %305) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %305)
          to label %2249 unwind label %2296

2249:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %306) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %307, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2250 unwind label %2298

2250:                                             ; preds = %2249
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %306, i32 noundef 2, ptr noundef nonnull %307)
          to label %2251 unwind label %2300

2251:                                             ; preds = %2250
  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.390") align 8 %304, ptr noundef nonnull align 8 dereferenceable(212) %305, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %2252 unwind label %2302

2252:                                             ; preds = %2251
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1785, ptr noundef nonnull align 8 dereferenceable(224) %304)
          to label %2253 unwind label %2304

2253:                                             ; preds = %2252
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %304) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %305) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %305) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %304) #12
  %2254 = getelementptr inbounds i8, ptr %2224, i64 208
  %2255 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2254) #12
  %2256 = icmp ugt i64 %2255, 1
  br i1 %2256, label %.lr.ph2877, label %.preheader1578

.preheader1578:                                   ; preds = %2315, %2253
  %2257 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1785) #12
  %.not3945 = icmp eq i64 %2257, 0
  br i1 %.not3945, label %._crit_edge2880, label %.lr.ph2879

2258:                                             ; preds = %2206
  %2259 = landingpad { ptr, i32 }
          cleanup
  br label %2463

2260:                                             ; preds = %2208
  %2261 = landingpad { ptr, i32 }
          cleanup
  br label %2462

2262:                                             ; preds = %2209
  %2263 = landingpad { ptr, i32 }
          cleanup
  br label %2269

2264:                                             ; preds = %2210
  %2265 = landingpad { ptr, i32 }
          cleanup
  br label %2268

2266:                                             ; preds = %2211
  %2267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %295) #12
  br label %2268

2268:                                             ; preds = %2266, %2264
  %.pn1201 = phi { ptr, i32 } [ %2267, %2266 ], [ %2265, %2264 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #12
  br label %2269

2269:                                             ; preds = %2268, %2262
  %.pn1201.pn = phi { ptr, i32 } [ %.pn1201, %2268 ], [ %2263, %2262 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #12
  br label %2462

2270:                                             ; preds = %2212
  %2271 = landingpad { ptr, i32 }
          cleanup
  br label %2461

2272:                                             ; preds = %2215
  %2273 = landingpad { ptr, i32 }
          cleanup
  br label %2460

2274:                                             ; preds = %2218
  %2275 = landingpad { ptr, i32 }
          cleanup
  br label %2460

2276:                                             ; preds = %2228
  %2277 = landingpad { ptr, i32 }
          cleanup
  br label %2452

2278:                                             ; preds = %2229
  %2279 = landingpad { ptr, i32 }
          cleanup
  br label %2285

2280:                                             ; preds = %2234, %2232, %2230
  %2281 = landingpad { ptr, i32 }
          cleanup
  br label %2284

2282:                                             ; preds = %2235
  %2283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #12
  br label %2284

2284:                                             ; preds = %2282, %2280
  %.pn1204 = phi { ptr, i32 } [ %2283, %2282 ], [ %2281, %2280 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %300) #12
  br label %2285

2285:                                             ; preds = %2284, %2278
  %.pn1204.pn = phi { ptr, i32 } [ %.pn1204, %2284 ], [ %2279, %2278 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %300) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %299) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #12
  br label %2451

2286:                                             ; preds = %2236
  %2287 = landingpad { ptr, i32 }
          cleanup
  br label %2451

2288:                                             ; preds = %2240
  %2289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %301) #12
  br label %2451

2290:                                             ; preds = %2243
  %2291 = landingpad { ptr, i32 }
          cleanup
  br label %2449

2292:                                             ; preds = %2244
  %2293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %303) #12
  br label %2448

2294:                                             ; preds = %2349, %2347, %2345, %2343, %2340, %._crit_edge2880, %2246
  %2295 = landingpad { ptr, i32 }
          cleanup
  br label %2448

2296:                                             ; preds = %2248
  %2297 = landingpad { ptr, i32 }
          cleanup
  br label %2309

2298:                                             ; preds = %2249
  %2299 = landingpad { ptr, i32 }
          cleanup
  br label %2308

2300:                                             ; preds = %2250
  %2301 = landingpad { ptr, i32 }
          cleanup
  br label %2307

2302:                                             ; preds = %2251
  %2303 = landingpad { ptr, i32 }
          cleanup
  br label %2306

2304:                                             ; preds = %2252
  %2305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %304) #12
  br label %2306

2306:                                             ; preds = %2304, %2302
  %.pn1208 = phi { ptr, i32 } [ %2305, %2304 ], [ %2303, %2302 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #12
  br label %2307

2307:                                             ; preds = %2306, %2300
  %.pn1208.pn = phi { ptr, i32 } [ %.pn1208, %2306 ], [ %2301, %2300 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #12
  br label %2308

2308:                                             ; preds = %2307, %2298
  %.pn1208.pn.pn = phi { ptr, i32 } [ %.pn1208.pn, %2307 ], [ %2299, %2298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %306) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %305) #12
  br label %2309

2309:                                             ; preds = %2308, %2296
  %.pn1208.pn.pn.pn = phi { ptr, i32 } [ %.pn1208.pn.pn, %2308 ], [ %2297, %2296 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %305) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %304) #12
  br label %2448

.lr.ph2877:                                       ; preds = %2253, %2315
  %.09292875 = phi i64 [ %2316, %2315 ], [ 1, %2253 ]
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %308) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %309) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %309)
          to label %2310 unwind label %2319

2310:                                             ; preds = %.lr.ph2877
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %310) #12
  %2311 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2254, i64 noundef %.09292875) #12
  %2312 = getelementptr inbounds i8, ptr %2311, i64 216
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %310, ptr noundef nonnull align 8 dereferenceable(96) %296, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %2312, i1 noundef zeroext true)
          to label %2313 unwind label %2321

2313:                                             ; preds = %2310
  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.390") align 8 %308, ptr noundef nonnull align 8 dereferenceable(212) %309, ptr noundef nonnull align 8 dereferenceable(8) %310)
          to label %2314 unwind label %2323

2314:                                             ; preds = %2313
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %1785, ptr noundef nonnull align 8 dereferenceable(224) %308)
          to label %2315 unwind label %2325

2315:                                             ; preds = %2314
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %308) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %310) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %310) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %309) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %309) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %308) #12
  %2316 = add nuw i64 %.09292875, 1
  %2317 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2254) #12
  %2318 = icmp ult i64 %2316, %2317
  br i1 %2318, label %.lr.ph2877, label %.preheader1578, !llvm.loop !189

2319:                                             ; preds = %.lr.ph2877
  %2320 = landingpad { ptr, i32 }
          cleanup
  br label %2329

2321:                                             ; preds = %2310
  %2322 = landingpad { ptr, i32 }
          cleanup
  br label %2328

2323:                                             ; preds = %2313
  %2324 = landingpad { ptr, i32 }
          cleanup
  br label %2327

2325:                                             ; preds = %2314
  %2326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %308) #12
  br label %2327

2327:                                             ; preds = %2325, %2323
  %.pn1231 = phi { ptr, i32 } [ %2326, %2325 ], [ %2324, %2323 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %310) #12
  br label %2328

2328:                                             ; preds = %2327, %2321
  %.pn1231.pn = phi { ptr, i32 } [ %.pn1231, %2327 ], [ %2322, %2321 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %310) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %309) #12
  br label %2329

2329:                                             ; preds = %2328, %2319
  %.pn1231.pn.pn = phi { ptr, i32 } [ %.pn1231.pn, %2328 ], [ %2320, %2319 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %309) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %308) #12
  br label %2448

._crit_edge2880:                                  ; preds = %2333, %.preheader1578
  %2330 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2339 unwind label %2294

.lr.ph2879:                                       ; preds = %.preheader1578, %2333
  %.09372878 = phi i64 [ %2334, %2333 ], [ 0, %.preheader1578 ]
  %2331 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1785, i64 noundef %.09372878) #12
  %2332 = getelementptr inbounds i8, ptr %2331, i64 216
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %2332)
          to label %2333 unwind label %2337

2333:                                             ; preds = %.lr.ph2879
  %2334 = add nuw i64 %.09372878, 1
  %2335 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1785) #12
  %2336 = icmp ult i64 %2334, %2335
  br i1 %2336, label %.lr.ph2879, label %._crit_edge2880, !llvm.loop !190

2337:                                             ; preds = %.lr.ph2879
  %2338 = landingpad { ptr, i32 }
          cleanup
  br label %2448

2339:                                             ; preds = %._crit_edge2880
  br i1 %2330, label %2340, label %2351

2340:                                             ; preds = %2339
  %2341 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !113
  %2342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2341, ptr noundef nonnull @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList)
          to label %2343 unwind label %2294

2343:                                             ; preds = %2340
  %2344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2342, ptr noundef nonnull @.str.32)
          to label %2345 unwind label %2294

2345:                                             ; preds = %2343
  %2346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %2344, ptr noundef nonnull align 8 dereferenceable(88) %291)
          to label %2347 unwind label %2294

2347:                                             ; preds = %2345
  %2348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2346, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %2349 unwind label %2294

2349:                                             ; preds = %2347
  %2350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2348, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2351 unwind label %2294

2351:                                             ; preds = %2349, %2339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %311) #12
  %2352 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %2353 unwind label %2370

2353:                                             ; preds = %2351
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %2352, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %2352)
          to label %2354 unwind label %2372

2354:                                             ; preds = %2353
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull %2352)
  %2355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1786, ptr noundef nonnull align 8 dereferenceable(8) %311)
          to label %2356 unwind label %2374

2356:                                             ; preds = %2354
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #12
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %312) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %315) #12
  store ptr %291, ptr %315, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %314, ptr noundef nonnull align 8 dereferenceable(8) %315) #12
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %313, ptr noundef nonnull %314)
          to label %2357 unwind label %2377

2357:                                             ; preds = %2356
  %2358 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1786)
          to label %2359 unwind label %2379

2359:                                             ; preds = %2357
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %312, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull %313, ptr noundef nonnull align 8 dereferenceable(8) %1784, ptr noundef nonnull align 8 dereferenceable(24) %1785, ptr noundef nonnull align 8 dereferenceable(96) %2358)
          to label %2360 unwind label %2379

2360:                                             ; preds = %2359
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %315) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %316) #12
  %2361 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1786)
          to label %2362 unwind label %2382

2362:                                             ; preds = %2360
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %316, ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(96) %2361)
          to label %2363 unwind label %2382

2363:                                             ; preds = %2362
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %317) #12
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %318) #12
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %320, i32 noundef 0)
          to label %2364 unwind label %2384

2364:                                             ; preds = %2363
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %319, ptr noundef nonnull %320)
          to label %2365 unwind label %2386

2365:                                             ; preds = %2364
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %318, ptr noundef nonnull %319)
          to label %2366 unwind label %2388

2366:                                             ; preds = %2365
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %317, ptr noundef nonnull align 8 dereferenceable(48) %318)
          to label %2367 unwind label %2390

2367:                                             ; preds = %2366
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %318) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %318) #12
  %2368 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2254) #12
  %2369 = icmp ugt i64 %2368, 1
  br i1 %2369, label %.lr.ph2883, label %._crit_edge2884

._crit_edge2884:                                  ; preds = %2398, %2367
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %323)
          to label %2410 unwind label %2427

2370:                                             ; preds = %2351
  %2371 = landingpad { ptr, i32 }
          cleanup
  br label %2376

2372:                                             ; preds = %2353
  %2373 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %2352, i64 noundef 96) #16
  br label %2376

2374:                                             ; preds = %2354
  %2375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #12
  br label %2376

2376:                                             ; preds = %2374, %2372, %2370
  %.pn1213 = phi { ptr, i32 } [ %2375, %2374 ], [ %2373, %2372 ], [ %2371, %2370 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #12
  br label %2448

2377:                                             ; preds = %2356
  %2378 = landingpad { ptr, i32 }
          cleanup
  br label %2381

2379:                                             ; preds = %2359, %2357
  %2380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #12
  br label %2381

2381:                                             ; preds = %2379, %2377
  %.pn1215 = phi { ptr, i32 } [ %2380, %2379 ], [ %2378, %2377 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %314) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %315) #12
  br label %2447

2382:                                             ; preds = %2362, %2360
  %2383 = landingpad { ptr, i32 }
          cleanup
  br label %2446

2384:                                             ; preds = %2363
  %2385 = landingpad { ptr, i32 }
          cleanup
  br label %2394

2386:                                             ; preds = %2364
  %2387 = landingpad { ptr, i32 }
          cleanup
  br label %2393

2388:                                             ; preds = %2365
  %2389 = landingpad { ptr, i32 }
          cleanup
  br label %2392

2390:                                             ; preds = %2366
  %2391 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %318) #12
  br label %2392

2392:                                             ; preds = %2390, %2388
  %.pn1217 = phi { ptr, i32 } [ %2391, %2390 ], [ %2389, %2388 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #12
  br label %2393

2393:                                             ; preds = %2392, %2386
  %.pn1217.pn = phi { ptr, i32 } [ %.pn1217, %2392 ], [ %2387, %2386 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #12
  br label %2394

2394:                                             ; preds = %2393, %2384
  %.pn1217.pn.pn = phi { ptr, i32 } [ %.pn1217.pn, %2393 ], [ %2385, %2384 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %318) #12
  br label %2445

.lr.ph2883:                                       ; preds = %2367, %2398
  %.09382881 = phi i64 [ %2399, %2398 ], [ 1, %2367 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %321) #12
  %2395 = trunc i64 %.09382881 to i32
  invoke void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %322, i32 noundef %2395)
          to label %2396 unwind label %2402

2396:                                             ; preds = %.lr.ph2883
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %321, ptr noundef nonnull %322)
          to label %2397 unwind label %2404

2397:                                             ; preds = %2396
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %317, ptr noundef nonnull align 8 dereferenceable(48) %321)
          to label %2398 unwind label %2406

2398:                                             ; preds = %2397
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %321) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %321) #12
  %2399 = add nuw i64 %.09382881, 1
  %2400 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2254) #12
  %2401 = icmp ult i64 %2399, %2400
  br i1 %2401, label %.lr.ph2883, label %._crit_edge2884, !llvm.loop !191

2402:                                             ; preds = %.lr.ph2883
  %2403 = landingpad { ptr, i32 }
          cleanup
  br label %2409

2404:                                             ; preds = %2396
  %2405 = landingpad { ptr, i32 }
          cleanup
  br label %2408

2406:                                             ; preds = %2397
  %2407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %321) #12
  br label %2408

2408:                                             ; preds = %2406, %2404
  %.pn1225 = phi { ptr, i32 } [ %2407, %2406 ], [ %2405, %2404 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #12
  br label %2409

2409:                                             ; preds = %2408, %2402
  %.pn1225.pn = phi { ptr, i32 } [ %.pn1225, %2408 ], [ %2403, %2402 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %321) #12
  br label %2445

2410:                                             ; preds = %._crit_edge2884
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %325, ptr noundef nonnull align 8 dereferenceable(88) %297) #12
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %324, ptr noundef nonnull %325)
          to label %2411 unwind label %2429

2411:                                             ; preds = %2410
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %326, ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  invoke void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48) %316, ptr noundef nonnull %323, ptr noundef nonnull %324, ptr noundef nonnull %326, i32 noundef 1, i32 noundef 2)
          to label %2412 unwind label %2431

2412:                                             ; preds = %2411
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %326) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %324) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %325) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %323) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %316)
          to label %2413 unwind label %2427

2413:                                             ; preds = %2412
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %327)
          to label %2414 unwind label %2427

2414:                                             ; preds = %2413
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %316, ptr noundef nonnull %327)
          to label %2415 unwind label %2434

2415:                                             ; preds = %2414
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %327) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %316)
          to label %2416 unwind label %2427

2416:                                             ; preds = %2415
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %328)
          to label %2417 unwind label %2427

2417:                                             ; preds = %2416
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %316, ptr noundef nonnull %328)
          to label %2418 unwind label %2436

2418:                                             ; preds = %2417
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %328) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %329) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %329, ptr noundef nonnull align 8 dereferenceable(88) %291)
  %2419 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1786)
          to label %2420 unwind label %2438

2420:                                             ; preds = %2418
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %1776, ptr noundef nonnull align 8 dereferenceable(56) %329, ptr noundef nonnull align 8 dereferenceable(96) %2419, ptr noundef nonnull align 8 dereferenceable(24) %1785, ptr noundef nonnull align 8 dereferenceable(8) %1784)
          to label %2421 unwind label %2438

2421:                                             ; preds = %2420
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %329) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %330) #12
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.537") align 8 %330, ptr noundef nonnull align 8 dereferenceable(352) %302)
          to label %2422 unwind label %2440

2422:                                             ; preds = %2421
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %812, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %2423 unwind label %2442

2423:                                             ; preds = %2422
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #12
  %2424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %2425 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2424) #12
  %2426 = getelementptr inbounds i8, ptr %2241, i64 8
  store ptr %2425, ptr %2426, align 8, !tbaa !13
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %317) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %316) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %316) #12
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %312) #12
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %312) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %302) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %302) #12
  br label %2450

2427:                                             ; preds = %2416, %2415, %2413, %2412, %._crit_edge2884
  %2428 = landingpad { ptr, i32 }
          cleanup
  br label %2445

2429:                                             ; preds = %2410
  %2430 = landingpad { ptr, i32 }
          cleanup
  br label %2433

2431:                                             ; preds = %2411
  %2432 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %326) #12
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %324) #12
  br label %2433

2433:                                             ; preds = %2431, %2429
  %.pn1221 = phi { ptr, i32 } [ %2432, %2431 ], [ %2430, %2429 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %325) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %323) #12
  br label %2445

2434:                                             ; preds = %2414
  %2435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %327) #12
  br label %2445

2436:                                             ; preds = %2417
  %2437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %328) #12
  br label %2445

2438:                                             ; preds = %2420, %2418
  %2439 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %329) #12
  br label %2445

2440:                                             ; preds = %2421
  %2441 = landingpad { ptr, i32 }
          cleanup
  br label %2444

2442:                                             ; preds = %2422
  %2443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %330) #12
  br label %2444

2444:                                             ; preds = %2442, %2440
  %.pn1223 = phi { ptr, i32 } [ %2443, %2442 ], [ %2441, %2440 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %330) #12
  br label %2445

2445:                                             ; preds = %2444, %2438, %2436, %2434, %2433, %2427, %2409, %2394
  %.pn1225.pn.pn = phi { ptr, i32 } [ %.pn1225.pn, %2409 ], [ %.pn1223, %2444 ], [ %2439, %2438 ], [ %2437, %2436 ], [ %2428, %2427 ], [ %2435, %2434 ], [ %.pn1221, %2433 ], [ %.pn1217.pn.pn, %2394 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %317) #12
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %316) #12
  br label %2446

2446:                                             ; preds = %2445, %2382
  %.pn1225.pn.pn.pn = phi { ptr, i32 } [ %.pn1225.pn.pn, %2445 ], [ %2383, %2382 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %316) #12
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %312) #12
  br label %2447

2447:                                             ; preds = %2446, %2381
  %.pn1225.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1225.pn.pn.pn, %2446 ], [ %.pn1215, %2381 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %312) #12
  br label %2448

2448:                                             ; preds = %2447, %2376, %2337, %2329, %2309, %2294, %2292
  %.pn1231.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn, %2329 ], [ %2338, %2337 ], [ %.pn1225.pn.pn.pn.pn, %2447 ], [ %.pn1213, %2376 ], [ %2295, %2294 ], [ %.pn1208.pn.pn.pn, %2309 ], [ %2293, %2292 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %302) #12
  br label %2449

2449:                                             ; preds = %2448, %2290
  %.pn1231.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn, %2448 ], [ %2291, %2290 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %302) #12
  br label %2451

2450:                                             ; preds = %2423, %2242
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %297) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %297) #12
  br label %2453

2451:                                             ; preds = %2286, %2288, %2449, %2285
  %.pn1231.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1204.pn, %2285 ], [ %.pn1231.pn.pn.pn.pn, %2449 ], [ %2289, %2288 ], [ %2287, %2286 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %297) #12
  br label %2452

2452:                                             ; preds = %2451, %2276
  %.pn1231.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn, %2451 ], [ %2277, %2276 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %297) #12
  br label %2460

2453:                                             ; preds = %2223, %2450, %2221
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %331, ptr noundef nonnull align 8 dereferenceable(88) %291) #12
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %277, ptr noundef nonnull %331)
          to label %2454 unwind label %2458

2454:                                             ; preds = %2453
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %331) #12
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %296) #12
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %296) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %291) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %291) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %290) #12
  br label %2455

2455:                                             ; preds = %2176, %2454
  %2456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %288) #12
  %2457 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIK8RcStringS1_IjN3HIR11GenericPathEEELb0EEESA_(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(8) %289) #12
  br i1 %2457, label %2176, label %._crit_edge2887

2458:                                             ; preds = %2453
  %2459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %331) #12
  br label %2460

2460:                                             ; preds = %2274, %2452, %2458, %2272
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2273, %2272 ], [ %.pn1231.pn.pn.pn.pn.pn.pn.pn, %2452 ], [ %2459, %2458 ], [ %2275, %2274 ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %296) #12
  br label %2461

2461:                                             ; preds = %2460, %2270
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2460 ], [ %2271, %2270 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %296) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %291) #12
  br label %2462

2462:                                             ; preds = %2461, %2269, %2260
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2461 ], [ %.pn1201.pn, %2269 ], [ %2261, %2260 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %291) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #12
  br label %2463

2463:                                             ; preds = %2462, %2258
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2462 ], [ %2259, %2258 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %290) #12
  br label %2464

2464:                                             ; preds = %2463, %2204
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2463 ], [ %2205, %2204 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %289) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #12
  br label %2549

._crit_edge2893:                                  ; preds = %2524, %.preheader1579
  %2465 = load i64, ptr %276, align 8, !tbaa !160
  %2466 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1779) #12
  %2467 = icmp eq i64 %2465, %2466
  br i1 %2467, label %2529, label %2528

2468:                                             ; preds = %.lr.ph2892, %2524
  %.09422891 = phi i64 [ 0, %.lr.ph2892 ], [ %2525, %2524 ]
  %2469 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2163, i64 noundef %.09422891) #12
  %2470 = load i32, ptr %2166, align 8, !tbaa !192
  %2471 = zext i32 %2470 to i64
  %2472 = add i64 %.09422891, %2471
  %2473 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2165, i64 noundef %2472)
          to label %2474 unwind label %.loopexit1580

2474:                                             ; preds = %2468
  %2475 = load i64, ptr %2473, align 8, !tbaa !209
  %2476 = load i64, ptr %276, align 8, !tbaa !160
  %2477 = icmp eq i64 %2475, %2476
  br i1 %2477, label %2490, label %2478

2478:                                             ; preds = %2474
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %332) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %2479 unwind label %2483

2479:                                             ; preds = %2478
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %334) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef nonnull align 1 dereferenceable(1) %334) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull %333)
          to label %2480 unwind label %2485

2480:                                             ; preds = %2479
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %334) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %332) #12
  %2481 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2481, ptr noundef nonnull @.str.10)
          to label %2482 unwind label %2488

2482:                                             ; preds = %2480
  invoke void @__cxa_throw(ptr nonnull %2481, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1581

.loopexit1580:                                    ; preds = %2468
  %lpad.loopexit1582 = landingpad { ptr, i32 }
          cleanup
  br label %2549

.loopexit.split-lp1581:                           ; preds = %2482
  %lpad.loopexit.split-lp1583 = landingpad { ptr, i32 }
          cleanup
  br label %2549

2483:                                             ; preds = %2478
  %2484 = landingpad { ptr, i32 }
          cleanup
  br label %2487

2485:                                             ; preds = %2479
  %2486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %334) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #12
  br label %2487

2487:                                             ; preds = %2485, %2483
  %.pn1189 = phi { ptr, i32 } [ %2486, %2485 ], [ %2484, %2483 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %332) #12
  br label %2549

2488:                                             ; preds = %2480
  %2489 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2481) #12
  br label %2549

2490:                                             ; preds = %2474
  %2491 = getelementptr inbounds i8, ptr %2473, i64 8
  %2492 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2491)
  %2493 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2492)
  br i1 %2493, label %2524, label %2494

2494:                                             ; preds = %2490
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %335) #12
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %336) #12
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %336, ptr noundef null, ptr noundef nonnull %2004, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2495 unwind label %2505

2495:                                             ; preds = %2494
  %2496 = getelementptr inbounds i8, ptr %2469, i64 8
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %335, ptr noundef nonnull align 8 dereferenceable(96) %336, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(32) %2496, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %2497 unwind label %2507

2497:                                             ; preds = %2495
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %336) #12
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %336) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %337) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %338, ptr noundef nonnull align 8 dereferenceable(8) %1946)
          to label %2498 unwind label %2510

2498:                                             ; preds = %2497
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %339, ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %2499 unwind label %2512

2499:                                             ; preds = %2498
  %2500 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1943)
  %2501 = getelementptr inbounds i8, ptr %2500, i64 40
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %2501)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %341)
          to label %2502 unwind label %2514

2502:                                             ; preds = %2499
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %337, ptr noundef nonnull %338, ptr noundef nonnull %339, ptr noundef nonnull %340, ptr noundef nonnull %341)
          to label %2503 unwind label %2516

2503:                                             ; preds = %2502
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %341) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %342, ptr noundef nonnull align 8 dereferenceable(88) %337) #12
  invoke void @"_ZZ15Trans_AutoImplsRN3HIR5CrateER9TransListENK4$_27clENS_4PathE"(ptr noundef nonnull align 8 dereferenceable(20) %277, ptr noundef nonnull %342)
          to label %2504 unwind label %2520

2504:                                             ; preds = %2503
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %342) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %337) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %337) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #12
  br label %2524

2505:                                             ; preds = %2494
  %2506 = landingpad { ptr, i32 }
          cleanup
  br label %2509

2507:                                             ; preds = %2495
  %2508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %336) #12
  br label %2509

2509:                                             ; preds = %2507, %2505
  %.pn1191 = phi { ptr, i32 } [ %2508, %2507 ], [ %2506, %2505 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %336) #12
  br label %2523

2510:                                             ; preds = %2497
  %2511 = landingpad { ptr, i32 }
          cleanup
  br label %2522

2512:                                             ; preds = %2498
  %2513 = landingpad { ptr, i32 }
          cleanup
  br label %2519

2514:                                             ; preds = %2499
  %2515 = landingpad { ptr, i32 }
          cleanup
  br label %2518

2516:                                             ; preds = %2502
  %2517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %341) #12
  br label %2518

2518:                                             ; preds = %2516, %2514
  %.pn1193 = phi { ptr, i32 } [ %2517, %2516 ], [ %2515, %2514 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %340) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #12
  br label %2519

2519:                                             ; preds = %2518, %2512
  %.pn1193.pn = phi { ptr, i32 } [ %.pn1193, %2518 ], [ %2513, %2512 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #12
  br label %2522

2520:                                             ; preds = %2503
  %2521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %342) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %337) #12
  br label %2522

2522:                                             ; preds = %2520, %2519, %2510
  %.pn1196 = phi { ptr, i32 } [ %2521, %2520 ], [ %.pn1193.pn, %2519 ], [ %2511, %2510 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %337) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #12
  br label %2523

2523:                                             ; preds = %2522, %2509
  %.pn1196.pn = phi { ptr, i32 } [ %.pn1196, %2522 ], [ %.pn1191, %2509 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %335) #12
  br label %2549

2524:                                             ; preds = %2504, %2490
  %2525 = add nuw i64 %.09422891, 1
  %2526 = call noundef i64 @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2163) #12
  %2527 = icmp ult i64 %2525, %2526
  br i1 %2527, label %2468, label %._crit_edge2893, !llvm.loop !211

2528:                                             ; preds = %._crit_edge2893
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.9, i32 noundef 902, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

2529:                                             ; preds = %._crit_edge2893
  store i8 1, ptr %1787, align 8, !tbaa !163
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %343) #12
  invoke void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.560") align 8 %343, ptr noundef nonnull align 8 dereferenceable(360) %272)
          to label %2530 unwind label %2540

2530:                                             ; preds = %2529
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1328, ptr noundef nonnull align 8 dereferenceable(8) %343)
          to label %2531 unwind label %2542

2531:                                             ; preds = %2530
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %343) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %343) #12
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %344, ptr noundef nonnull align 8 dereferenceable(88) %1943)
          to label %2532 unwind label %2545

2532:                                             ; preds = %2531
  %2533 = invoke noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %344)
          to label %2534 unwind label %2547

2534:                                             ; preds = %2532
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %344) #12
  %2535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1328) #12
  %2536 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2535) #12
  store ptr %2536, ptr %2533, align 8, !tbaa !179
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %277) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #12
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %272) #12
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %272) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %271) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %271) #12
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %270) #12
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %270) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %250) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %250) #12
  br label %2537

2537:                                             ; preds = %1949, %2534
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #12
  %2538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %242) #12
  %2539 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEES8_(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull align 8 dereferenceable(8) %243) #12
  br i1 %2539, label %1942, label %._crit_edge2896

2540:                                             ; preds = %2529
  %2541 = landingpad { ptr, i32 }
          cleanup
  br label %2544

2542:                                             ; preds = %2530
  %2543 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR6StaticESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %343) #12
  br label %2544

2544:                                             ; preds = %2542, %2540
  %.pn1185 = phi { ptr, i32 } [ %2543, %2542 ], [ %2541, %2540 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %343) #12
  br label %2549

2545:                                             ; preds = %2531
  %2546 = landingpad { ptr, i32 }
          cleanup
  br label %2549

2547:                                             ; preds = %2532
  %2548 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %344) #12
  br label %2549

2549:                                             ; preds = %.loopexit1580, %.loopexit.split-lp1581, %2545, %2547, %2487, %2488, %2523, %2544, %2464, %2167, %2142, %2133, %2132
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2464 ], [ %.pn1185, %2544 ], [ %.pn1183, %2167 ], [ %.pn1178.pn, %2142 ], [ %2134, %2133 ], [ %.pn1176, %2132 ], [ %.pn1196.pn, %2523 ], [ %2489, %2488 ], [ %.pn1189, %2487 ], [ %2548, %2547 ], [ %2546, %2545 ], [ %lpad.loopexit1582, %.loopexit1580 ], [ %lpad.loopexit.split-lp1583, %.loopexit.split-lp1581 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %277) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %276) #12
  br label %2550

2550:                                             ; preds = %2549, %2126
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2549 ], [ %2127, %2126 ]
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %272) #12
  br label %2551

2551:                                             ; preds = %2550, %2125
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2550 ], [ %.pn1174, %2125 ]
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %272) #12
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %271) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %271) #12
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %270) #12
  br label %2552

2552:                                             ; preds = %2551, %2119
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2551 ], [ %2120, %2119 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %270) #12
  br label %2553

2553:                                             ; preds = %2093, %2552, %2088, %2079
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1170.pn, %2088 ], [ %2080, %2079 ], [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2552 ], [ %2094, %2093 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #12
  br label %2554

2554:                                             ; preds = %2553, %2078, %2063
  %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2553 ], [ %.pn1165.pn.pn.pn, %2078 ], [ %2064, %2063 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #12
  br label %2555

2555:                                             ; preds = %2061, %2554, %2045
  %.pn1259.pn.pn = phi { ptr, i32 } [ %.pn1259.pn, %2045 ], [ %.pn1231.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2554 ], [ %2062, %2061 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %250) #12
  br label %2556

2556:                                             ; preds = %2555, %2011
  %.pn1259.pn.pn.pn = phi { ptr, i32 } [ %.pn1259.pn.pn, %2555 ], [ %2012, %2011 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %250) #12
  br label %2557

2557:                                             ; preds = %1987, %2556, %2001, %1999, %1998, %1993, %1956, %1950
  %.pn1266.pn.pn = phi { ptr, i32 } [ %1951, %1950 ], [ %.pn1161, %1956 ], [ %1988, %1987 ], [ %2002, %2001 ], [ %2000, %1999 ], [ %.pn1264, %1998 ], [ %.pn1259.pn.pn.pn, %2556 ], [ %.pn1163, %1993 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %243) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %242) #12
  br label %2590

2558:                                             ; preds = %._crit_edge2896
  %2559 = select i1 %1941, ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %347) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %346, ptr noundef nonnull align 1 dereferenceable(1) %347) #12
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %345, ptr noundef %2559, ptr noundef nonnull %346)
          to label %2560 unwind label %2594

2560:                                             ; preds = %2558
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %346) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %347) #12
  %2561 = getelementptr inbounds i8, ptr %1, i64 552
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %348) #12
  %2562 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2561) #12
  store ptr %2562, ptr %348, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %349) #12
  %2563 = call ptr @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2561) #12
  store ptr %2563, ptr %349, align 8
  %2564 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull align 8 dereferenceable(8) %349) #12
  br i1 %2564, label %.lr.ph2898, label %._crit_edge2899

.lr.ph2898:                                       ; preds = %2560
  %2565 = getelementptr inbounds i8, ptr %3, i64 8
  %2566 = getelementptr inbounds i8, ptr %1, i64 264
  br label %2596

._crit_edge2899:                                  ; preds = %2616, %2560
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %349) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %348) #12
  %2567 = getelementptr inbounds i8, ptr %1, i64 264
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %352) #12
  %2568 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %2567) #12
  store ptr %2568, ptr %352, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %353) #12
  %2569 = call ptr @_ZNKSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %2567) #12
  store ptr %2569, ptr %353, align 8
  %2570 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull align 8 dereferenceable(8) %353) #12
  br i1 %2570, label %.lr.ph3938, label %._crit_edge3939

.lr.ph3938:                                       ; preds = %._crit_edge2899
  %2571 = getelementptr inbounds i8, ptr %359, i64 240
  %2572 = getelementptr inbounds i8, ptr %359, i64 208
  %2573 = getelementptr inbounds i8, ptr %359, i64 304
  %2574 = getelementptr inbounds i8, ptr %3, i64 8
  %2575 = getelementptr inbounds i8, ptr %370, i64 16
  %2576 = getelementptr inbounds i8, ptr %383, i64 8
  %2577 = getelementptr inbounds i8, ptr %383, i64 40
  %2578 = getelementptr inbounds i8, ptr %455, i64 32
  %2579 = getelementptr inbounds i8, ptr %370, i64 8
  %2580 = getelementptr inbounds i8, ptr %3, i64 136
  %2581 = getelementptr inbounds i8, ptr %424, i64 16
  %2582 = getelementptr inbounds i8, ptr %429, i64 48
  %2583 = getelementptr inbounds i8, ptr %432, i64 16
  %2584 = getelementptr inbounds i8, ptr %429, i64 56
  %2585 = getelementptr inbounds i8, ptr %435, i64 48
  %2586 = getelementptr inbounds i8, ptr %438, i64 16
  %2587 = getelementptr inbounds i8, ptr %435, i64 56
  %2588 = getelementptr inbounds i8, ptr %440, i64 32
  %2589 = getelementptr inbounds i8, ptr %440, i64 36
  br label %2625

2590:                                             ; preds = %2557, %1940, %1772, %1370
  %.pn1367.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1367.pn.pn.pn.pn.pn.pn.pn, %1772 ], [ %.pn1292.pn.pn.pn.pn.pn.pn.pn, %1940 ], [ %.pn1266.pn.pn, %2557 ], [ %1371, %1370 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #12
  br label %2591

2591:                                             ; preds = %2590, %1368, %1366
  %.pn1367.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1367.pn.pn.pn.pn.pn.pn.pn.pn, %2590 ], [ %1369, %1368 ], [ %1367, %1366 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %140) #12
  br label %3347

2592:                                             ; preds = %._crit_edge2896
  %2593 = landingpad { ptr, i32 }
          cleanup
  br label %3346

2594:                                             ; preds = %2558
  %2595 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %346) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %347) #12
  br label %3346

2596:                                             ; preds = %.lr.ph2898, %2616
  %2597 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %348) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %350) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %350)
  %2598 = getelementptr inbounds i8, ptr %2597, i64 8
  %2599 = load i8, ptr %2598, align 8, !tbaa !212, !range !214, !noundef !215
  %2600 = trunc nuw i8 %2599 to i1
  br i1 %2600, label %2616, label %2601

2601:                                             ; preds = %2596
  %2602 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2565, ptr noundef nonnull align 8 dereferenceable(8) %350, ptr noundef nonnull align 8 dereferenceable(8) %2597)
          to label %2603 unwind label %2604

2603:                                             ; preds = %2601
  br i1 %2602, label %2606, label %2616

2604:                                             ; preds = %2601
  %2605 = landingpad { ptr, i32 }
          cleanup
  br label %2624

2606:                                             ; preds = %2603
  %2607 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2597)
  %2608 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2607)
  br i1 %2608, label %2616, label %2609

2609:                                             ; preds = %2606
  %2610 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2597)
  %2611 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2610)
  br i1 %2611, label %2616, label %2612

2612:                                             ; preds = %2609
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %351) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %351, ptr noundef nonnull align 8 dereferenceable(8) %2597)
          to label %2613 unwind label %2619

2613:                                             ; preds = %2612
  %2614 = invoke { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48) %2566, ptr noundef nonnull align 8 dereferenceable(8) %351)
          to label %2615 unwind label %2621

2615:                                             ; preds = %2613
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %351) #12
  br label %2616

2616:                                             ; preds = %2609, %2606, %2603, %2596, %2615
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %350) #12
  %2617 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %348) #12
  %2618 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN3HIR7TypeRefEbESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull align 8 dereferenceable(8) %349) #12
  br i1 %2618, label %2596, label %._crit_edge2899

2619:                                             ; preds = %2612
  %2620 = landingpad { ptr, i32 }
          cleanup
  br label %2623

2621:                                             ; preds = %2613
  %2622 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #12
  br label %2623

2623:                                             ; preds = %2621, %2619
  %.pn1156 = phi { ptr, i32 } [ %2622, %2621 ], [ %2620, %2619 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %351) #12
  br label %2624

2624:                                             ; preds = %2623, %2604
  %.pn1156.pn = phi { ptr, i32 } [ %.pn1156, %2623 ], [ %2605, %2604 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %350) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %350) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %349) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %348) #12
  br label %3345

._crit_edge3939:                                  ; preds = %3324, %._crit_edge2899
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %352) #12
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %345) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %345) #12
  call void @_ZN12_GLOBAL__N_15StateD2Ev(ptr noundef nonnull align 8 dereferenceable(576) %3) #12
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %3) #12
  ret void

2625:                                             ; preds = %.lr.ph3938, %3324
  %2626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %352) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %354) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %354)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %355) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %356, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %2627 unwind label %2669

2627:                                             ; preds = %2625
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_118rcstring_drop_glueE)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %358)
          to label %2628 unwind label %2671

2628:                                             ; preds = %2627
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %355, ptr noundef nonnull %356, ptr noundef nonnull %357, ptr noundef nonnull %358)
          to label %2629 unwind label %2673

2629:                                             ; preds = %2628
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %358) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #12
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %359) #12
  invoke void @_ZN3HIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(352) %359)
          to label %2630 unwind label %2676

2630:                                             ; preds = %2629
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %360) #12
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %360)
          to label %2631 unwind label %2678

2631:                                             ; preds = %2630
  %2632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2571, ptr noundef nonnull align 8 dereferenceable(8) %360)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %360) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %360) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %361) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %362) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %362)
          to label %2633 unwind label %2680

2633:                                             ; preds = %2631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %363) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %364, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %2634 unwind label %2682

2634:                                             ; preds = %2633
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %363, i32 noundef 2, ptr noundef nonnull %364)
          to label %2635 unwind label %2684

2635:                                             ; preds = %2634
  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.390") align 8 %361, ptr noundef nonnull align 8 dereferenceable(212) %362, ptr noundef nonnull align 8 dereferenceable(8) %363)
          to label %2636 unwind label %2686

2636:                                             ; preds = %2635
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2572, ptr noundef nonnull align 8 dereferenceable(224) %361)
          to label %2637 unwind label %2688

2637:                                             ; preds = %2636
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %361) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %363) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %362) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %362) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %361) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %365) #12
  %2638 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #15
          to label %2639 unwind label %2694

2639:                                             ; preds = %2637
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %2638, i8 0, i64 96, i1 false)
  invoke void @_ZN3MIR8FunctionC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %2638)
          to label %2640 unwind label %2696

2640:                                             ; preds = %2639
  call void @_ZN3MIR15FunctionPointerC2EPNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull %2638)
  %2641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR15FunctionPointeraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2573, ptr noundef nonnull align 8 dereferenceable(8) %365)
          to label %2642 unwind label %2698

2642:                                             ; preds = %2640
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %365) #12
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %366) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %369) #12
  store ptr %355, ptr %369, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %368, ptr noundef nonnull align 8 dereferenceable(8) %369) #12
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %367, ptr noundef nonnull %368)
          to label %2643 unwind label %2701

2643:                                             ; preds = %2642
  %2644 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2573)
          to label %2645 unwind label %2703

2645:                                             ; preds = %2643
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %366, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull %367, ptr noundef nonnull align 8 dereferenceable(8) %2571, ptr noundef nonnull align 8 dereferenceable(24) %2572, ptr noundef nonnull align 8 dereferenceable(96) %2644)
          to label %2646 unwind label %2703

2646:                                             ; preds = %2645
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %369) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %370) #12
  %2647 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2573)
          to label %2648 unwind label %2706

2648:                                             ; preds = %2646
  invoke void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull align 8 dereferenceable(576) %3, ptr noundef nonnull align 8 dereferenceable(96) %2647)
          to label %2649 unwind label %2706

2649:                                             ; preds = %2648
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %371)
          to label %2650 unwind label %2708

2650:                                             ; preds = %2649
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %373, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %373) #12
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %372, ptr noundef nonnull %373)
          to label %2651 unwind label %2710

2651:                                             ; preds = %2650
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %371, ptr noundef nonnull %372)
          to label %2652 unwind label %2712

2652:                                             ; preds = %2651
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %372) #12
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %373) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #12
  %2653 = invoke noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %2654 unwind label %2715

2654:                                             ; preds = %2652
  %.not = icmp eq ptr %2653, null
  br i1 %.not, label %2741, label %2655

2655:                                             ; preds = %2654
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %374) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %376, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %2656 unwind label %2717

2656:                                             ; preds = %2655
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %375, ptr noundef nonnull %376)
          to label %2657 unwind label %2719

2657:                                             ; preds = %2656
  invoke void @_ZN12_GLOBAL__N_19deref_boxEN3MIR6LValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %374, ptr noundef nonnull %375)
          to label %2658 unwind label %2721

2658:                                             ; preds = %2657
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %377) #12
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377)
          to label %2659 unwind label %2724

2659:                                             ; preds = %2658
  %2660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %366, ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull align 8 dereferenceable(32) %374, i32 noundef 0)
          to label %2661 unwind label %.loopexit1573

2661:                                             ; preds = %2659
  %2662 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2660, ptr noundef nonnull align 8 dereferenceable(8) %2653)
          to label %2663 unwind label %.loopexit1573

2663:                                             ; preds = %2661
  br i1 %2662, label %2733, label %2664

2664:                                             ; preds = %2663
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %378) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %2665 unwind label %2726

2665:                                             ; preds = %2664
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %380) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %379, ptr noundef nonnull align 1 dereferenceable(1) %380) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull %379)
          to label %2666 unwind label %2728

2666:                                             ; preds = %2665
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %380) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #12
  %2667 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2667, ptr noundef nonnull @.str.10)
          to label %2668 unwind label %2731

2668:                                             ; preds = %2666
  invoke void @__cxa_throw(ptr nonnull %2667, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1574

2669:                                             ; preds = %2625
  %2670 = landingpad { ptr, i32 }
          cleanup
  br label %3344

2671:                                             ; preds = %2627
  %2672 = landingpad { ptr, i32 }
          cleanup
  br label %2675

2673:                                             ; preds = %2628
  %2674 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %358) #12
  br label %2675

2675:                                             ; preds = %2673, %2671
  %.pn1017 = phi { ptr, i32 } [ %2674, %2673 ], [ %2672, %2671 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %356) #12
  br label %3344

2676:                                             ; preds = %2629
  %2677 = landingpad { ptr, i32 }
          cleanup
  br label %3343

2678:                                             ; preds = %2630
  %2679 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %360) #12
  br label %3342

2680:                                             ; preds = %2631
  %2681 = landingpad { ptr, i32 }
          cleanup
  br label %2693

2682:                                             ; preds = %2633
  %2683 = landingpad { ptr, i32 }
          cleanup
  br label %2692

2684:                                             ; preds = %2634
  %2685 = landingpad { ptr, i32 }
          cleanup
  br label %2691

2686:                                             ; preds = %2635
  %2687 = landingpad { ptr, i32 }
          cleanup
  br label %2690

2688:                                             ; preds = %2636
  %2689 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %361) #12
  br label %2690

2690:                                             ; preds = %2688, %2686
  %.pn1019 = phi { ptr, i32 } [ %2689, %2688 ], [ %2687, %2686 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #12
  br label %2691

2691:                                             ; preds = %2690, %2684
  %.pn1019.pn = phi { ptr, i32 } [ %.pn1019, %2690 ], [ %2685, %2684 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %364) #12
  br label %2692

2692:                                             ; preds = %2691, %2682
  %.pn1019.pn.pn = phi { ptr, i32 } [ %.pn1019.pn, %2691 ], [ %2683, %2682 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %363) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %362) #12
  br label %2693

2693:                                             ; preds = %2692, %2680
  %.pn1019.pn.pn.pn = phi { ptr, i32 } [ %.pn1019.pn.pn, %2692 ], [ %2681, %2680 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %362) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %361) #12
  br label %3342

2694:                                             ; preds = %2637
  %2695 = landingpad { ptr, i32 }
          cleanup
  br label %2700

2696:                                             ; preds = %2639
  %2697 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %2638, i64 noundef 96) #16
  br label %2700

2698:                                             ; preds = %2640
  %2699 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #12
  br label %2700

2700:                                             ; preds = %2698, %2696, %2694
  %.pn1024 = phi { ptr, i32 } [ %2699, %2698 ], [ %2697, %2696 ], [ %2695, %2694 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %365) #12
  br label %3342

2701:                                             ; preds = %2642
  %2702 = landingpad { ptr, i32 }
          cleanup
  br label %2705

2703:                                             ; preds = %2645, %2643
  %2704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #12
  br label %2705

2705:                                             ; preds = %2703, %2701
  %.pn1026 = phi { ptr, i32 } [ %2704, %2703 ], [ %2702, %2701 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %369) #12
  br label %3341

2706:                                             ; preds = %2648, %2646
  %2707 = landingpad { ptr, i32 }
          cleanup
  br label %3340

2708:                                             ; preds = %3312, %2760, %2747, %2744, %2649
  %2709 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2710:                                             ; preds = %2650
  %2711 = landingpad { ptr, i32 }
          cleanup
  br label %2714

2712:                                             ; preds = %2651
  %2713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %372) #12
  br label %2714

2714:                                             ; preds = %2712, %2710
  %.pn1028 = phi { ptr, i32 } [ %2713, %2712 ], [ %2711, %2710 ]
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %373) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %371) #12
  br label %3339

2715:                                             ; preds = %2652
  %2716 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2717:                                             ; preds = %2655
  %2718 = landingpad { ptr, i32 }
          cleanup
  br label %2740

2719:                                             ; preds = %2656
  %2720 = landingpad { ptr, i32 }
          cleanup
  br label %2723

2721:                                             ; preds = %2657
  %2722 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #12
  br label %2723

2723:                                             ; preds = %2721, %2719
  %.pn1030 = phi { ptr, i32 } [ %2722, %2721 ], [ %2720, %2719 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #12
  br label %2740

2724:                                             ; preds = %2658
  %2725 = landingpad { ptr, i32 }
          cleanup
  br label %2739

.loopexit1573:                                    ; preds = %2659, %2661, %2733
  %lpad.loopexit1575 = landingpad { ptr, i32 }
          cleanup
  br label %2738

.loopexit.split-lp1574:                           ; preds = %2668
  %lpad.loopexit.split-lp1576 = landingpad { ptr, i32 }
          cleanup
  br label %2738

2726:                                             ; preds = %2664
  %2727 = landingpad { ptr, i32 }
          cleanup
  br label %2730

2728:                                             ; preds = %2665
  %2729 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %380) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %378) #12
  br label %2730

2730:                                             ; preds = %2728, %2726
  %.pn1032 = phi { ptr, i32 } [ %2729, %2728 ], [ %2727, %2726 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %378) #12
  br label %2738

2731:                                             ; preds = %2666
  %2732 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2667) #12
  br label %2738

2733:                                             ; preds = %2663
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %381, ptr noundef nonnull align 8 dereferenceable(32) %374)
          to label %2734 unwind label %.loopexit1573

2734:                                             ; preds = %2733
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %381)
          to label %2735 unwind label %2736

2735:                                             ; preds = %2734
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #12
  br label %2741

2736:                                             ; preds = %2734
  %2737 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #12
  br label %2738

2738:                                             ; preds = %.loopexit1573, %.loopexit.split-lp1574, %2736, %2731, %2730
  %.pn1034 = phi { ptr, i32 } [ %2737, %2736 ], [ %2732, %2731 ], [ %.pn1032, %2730 ], [ %lpad.loopexit1575, %.loopexit1573 ], [ %lpad.loopexit.split-lp1576, %.loopexit.split-lp1574 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %377) #12
  br label %2739

2739:                                             ; preds = %2738, %2724
  %.pn1034.pn = phi { ptr, i32 } [ %.pn1034, %2738 ], [ %2725, %2724 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %377) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #12
  br label %2740

2740:                                             ; preds = %2739, %2723, %2717
  %.pn1034.pn.pn = phi { ptr, i32 } [ %.pn1034.pn, %2739 ], [ %.pn1030, %2723 ], [ %2718, %2717 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %374) #12
  br label %3339

2741:                                             ; preds = %2735, %2654
  %2742 = load i32, ptr @gTargetVersion, align 4, !tbaa !5
  %2743 = icmp slt i32 %2742, 4
  br i1 %2743, label %2744, label %2760

2744:                                             ; preds = %2741
  %2745 = invoke noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %2746 unwind label %2708

2746:                                             ; preds = %2744
  %.not1039 = icmp eq ptr %2745, null
  br i1 %.not1039, label %2760, label %2747

2747:                                             ; preds = %2746
  store i32 0, ptr %383, align 8, !tbaa !216
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %384, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %2748 unwind label %2708

2748:                                             ; preds = %2747
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %2576, ptr noundef nonnull %384)
          to label %2749 unwind label %2752

2749:                                             ; preds = %2748
  store i32 -1, ptr %2577, align 8, !tbaa !225
  invoke void @_ZN3MIR9Statement9make_DropENS0_9Data_DropE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %382, ptr noundef nonnull %383)
          to label %2750 unwind label %2754

2750:                                             ; preds = %2749
  invoke void @_ZN12_GLOBAL__N_17Builder9push_stmtEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %382)
          to label %2751 unwind label %2756

2751:                                             ; preds = %2750
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %382) #12
  call void @_ZN3MIR9Statement9Data_DropD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %383) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #12
  br label %.loopexit1572

2752:                                             ; preds = %2748
  %2753 = landingpad { ptr, i32 }
          cleanup
  br label %2759

2754:                                             ; preds = %2749
  %2755 = landingpad { ptr, i32 }
          cleanup
  br label %2758

2756:                                             ; preds = %2750
  %2757 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %382) #12
  br label %2758

2758:                                             ; preds = %2756, %2754
  %.pn1144 = phi { ptr, i32 } [ %2757, %2756 ], [ %2755, %2754 ]
  call void @_ZN3MIR9Statement9Data_DropD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %383) #12
  br label %2759

2759:                                             ; preds = %2758, %2752
  %.pn1144.pn = phi { ptr, i32 } [ %.pn1144, %2758 ], [ %2753, %2752 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #12
  br label %3339

2760:                                             ; preds = %2746, %2741
  %2761 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %2762 unwind label %2708

2762:                                             ; preds = %2760
  br i1 %2761, label %.lr.ph3935, label %.loopexit1572

.lr.ph3935:                                       ; preds = %2762
  %2763 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2626)
  %2764 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  switch i32 %2764, label %.loopexit1572 [
    i32 0, label %2774
    i32 1, label %2775
    i32 5, label %2780
    i32 7, label %2785
    i32 6, label %2790
    i32 9, label %2807
    i32 15, label %2824
    i32 16, label %2841
    i32 2, label %.preheader1552
    i32 3, label %.preheader1554
    i32 13, label %.preheader1556
    i32 14, label %.preheader1558
    i32 12, label %.preheader1560
    i32 11, label %.preheader1562
    i32 10, label %.lr.ph3233
    i32 8, label %.lr.ph3226
    i32 4, label %.lr.ph3218
  ]

.preheader1562:                                   ; preds = %.lr.ph3935
  %2765 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %2766 = getelementptr inbounds i8, ptr %2765, i64 4
  %2767 = load i32, ptr %2766, align 4
  %2768 = icmp eq i32 %2767, 2
  br i1 %2768, label %2862, label %.loopexit1572

.preheader1560:                                   ; preds = %.lr.ph3935
  %2769 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  br label %.loopexit1572

.preheader1558:                                   ; preds = %.lr.ph3935
  %2770 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  br label %.loopexit1572

.preheader1556:                                   ; preds = %.lr.ph3935
  %2771 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  br label %.loopexit1572

.preheader1554:                                   ; preds = %.lr.ph3935
  %2772 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  br label %.loopexit1572

.preheader1552:                                   ; preds = %.lr.ph3935
  %2773 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %401)
          to label %2859 unwind label %.split3811.split

2774:                                             ; preds = %.lr.ph3935
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.9, i32 noundef 963, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

2775:                                             ; preds = %.lr.ph3935
  %2776 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %2777 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.34, ptr %2777, align 16, !tbaa !11
  invoke void @__cxa_throw(ptr nonnull %2777, ptr nonnull @_ZTIPKc, ptr null) #14
          to label %3348 unwind label %2778

2778:                                             ; preds = %2775
  %2779 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2780:                                             ; preds = %.lr.ph3935
  %2781 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %2782 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.34, ptr %2782, align 16, !tbaa !11
  invoke void @__cxa_throw(ptr nonnull %2782, ptr nonnull @_ZTIPKc, ptr null) #14
          to label %3348 unwind label %2783

2783:                                             ; preds = %2780
  %2784 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2785:                                             ; preds = %.lr.ph3935
  %2786 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %2787 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.34, ptr %2787, align 16, !tbaa !11
  invoke void @__cxa_throw(ptr nonnull %2787, ptr nonnull @_ZTIPKc, ptr null) #14
          to label %3348 unwind label %2788

2788:                                             ; preds = %2785
  %2789 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2790:                                             ; preds = %.lr.ph3935
  %2791 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %385) #12
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %385, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %386) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %2792 unwind label %2797

2792:                                             ; preds = %2790
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %388) #12
  store ptr %385, ptr %388, align 8, !tbaa !11
  %2793 = getelementptr inbounds i8, ptr %388, i64 8
  store ptr %2626, ptr %2793, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %387, ptr noundef nonnull align 8 dereferenceable(16) %388) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull %387)
          to label %2794 unwind label %2799

2794:                                             ; preds = %2792
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %388) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %386) #12
  %2795 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2795, ptr noundef nonnull @.str.19)
          to label %2796 unwind label %2802

2796:                                             ; preds = %2794
  invoke void @__cxa_throw(ptr nonnull %2795, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %2804

2797:                                             ; preds = %2790
  %2798 = landingpad { ptr, i32 }
          cleanup
  br label %2801

2799:                                             ; preds = %2792
  %2800 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %388) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %386) #12
  br label %2801

2801:                                             ; preds = %2799, %2797
  %.pn1139 = phi { ptr, i32 } [ %2800, %2799 ], [ %2798, %2797 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %386) #12
  br label %2806

2802:                                             ; preds = %2794
  %2803 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2795) #12
  br label %2806

2804:                                             ; preds = %2796
  %2805 = landingpad { ptr, i32 }
          cleanup
  br label %2806

2806:                                             ; preds = %2804, %2802, %2801
  %.pn1141 = phi { ptr, i32 } [ %2805, %2804 ], [ %2803, %2802 ], [ %.pn1139, %2801 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %385) #12
  br label %3339

2807:                                             ; preds = %.lr.ph3935
  %2808 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %389) #12
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %389, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %390) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %2809 unwind label %2814

2809:                                             ; preds = %2807
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %392) #12
  store ptr %389, ptr %392, align 8, !tbaa !11
  %2810 = getelementptr inbounds i8, ptr %392, i64 8
  store ptr %2626, ptr %2810, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %391, ptr noundef nonnull align 8 dereferenceable(16) %392) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef nonnull %391)
          to label %2811 unwind label %2816

2811:                                             ; preds = %2809
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %392) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %390) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %390) #12
  %2812 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2812, ptr noundef nonnull @.str.19)
          to label %2813 unwind label %2819

2813:                                             ; preds = %2811
  invoke void @__cxa_throw(ptr nonnull %2812, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %2821

2814:                                             ; preds = %2807
  %2815 = landingpad { ptr, i32 }
          cleanup
  br label %2818

2816:                                             ; preds = %2809
  %2817 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %392) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %390) #12
  br label %2818

2818:                                             ; preds = %2816, %2814
  %.pn1135 = phi { ptr, i32 } [ %2817, %2816 ], [ %2815, %2814 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %390) #12
  br label %2823

2819:                                             ; preds = %2811
  %2820 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2812) #12
  br label %2823

2821:                                             ; preds = %2813
  %2822 = landingpad { ptr, i32 }
          cleanup
  br label %2823

2823:                                             ; preds = %2821, %2819, %2818
  %.pn1137 = phi { ptr, i32 } [ %2822, %2821 ], [ %2820, %2819 ], [ %.pn1135, %2818 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %389) #12
  br label %3339

2824:                                             ; preds = %.lr.ph3935
  %2825 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %393) #12
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %393, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %394) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %2826 unwind label %2831

2826:                                             ; preds = %2824
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %396) #12
  store ptr %393, ptr %396, align 8, !tbaa !11
  %2827 = getelementptr inbounds i8, ptr %396, i64 8
  store ptr %2626, ptr %2827, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %395, ptr noundef nonnull align 8 dereferenceable(16) %396) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull %395)
          to label %2828 unwind label %2833

2828:                                             ; preds = %2826
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %396) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #12
  %2829 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2829, ptr noundef nonnull @.str.19)
          to label %2830 unwind label %2836

2830:                                             ; preds = %2828
  invoke void @__cxa_throw(ptr nonnull %2829, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %2838

2831:                                             ; preds = %2824
  %2832 = landingpad { ptr, i32 }
          cleanup
  br label %2835

2833:                                             ; preds = %2826
  %2834 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %396) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #12
  br label %2835

2835:                                             ; preds = %2833, %2831
  %.pn1131 = phi { ptr, i32 } [ %2834, %2833 ], [ %2832, %2831 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %394) #12
  br label %2840

2836:                                             ; preds = %2828
  %2837 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2829) #12
  br label %2840

2838:                                             ; preds = %2830
  %2839 = landingpad { ptr, i32 }
          cleanup
  br label %2840

2840:                                             ; preds = %2838, %2836, %2835
  %.pn1133 = phi { ptr, i32 } [ %2839, %2838 ], [ %2837, %2836 ], [ %.pn1131, %2835 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %393) #12
  br label %3339

2841:                                             ; preds = %.lr.ph3935
  %2842 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %397) #12
  store ptr @__func__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList, ptr %397, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %398) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %2843 unwind label %2848

2843:                                             ; preds = %2841
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %400) #12
  store ptr %397, ptr %400, align 8, !tbaa !11
  %2844 = getelementptr inbounds i8, ptr %400, i64 8
  store ptr %2626, ptr %2844, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef nonnull align 8 dereferenceable(16) %400) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef nonnull %399)
          to label %2845 unwind label %2850

2845:                                             ; preds = %2843
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %400) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %398) #12
  %2846 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2846, ptr noundef nonnull @.str.19)
          to label %2847 unwind label %2853

2847:                                             ; preds = %2845
  invoke void @__cxa_throw(ptr nonnull %2846, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %2855

2848:                                             ; preds = %2841
  %2849 = landingpad { ptr, i32 }
          cleanup
  br label %2852

2850:                                             ; preds = %2843
  %2851 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %400) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %398) #12
  br label %2852

2852:                                             ; preds = %2850, %2848
  %.pn1127 = phi { ptr, i32 } [ %2851, %2850 ], [ %2849, %2848 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %398) #12
  br label %2857

2853:                                             ; preds = %2845
  %2854 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2846) #12
  br label %2857

2855:                                             ; preds = %2847
  %2856 = landingpad { ptr, i32 }
          cleanup
  br label %2857

2857:                                             ; preds = %2855, %2853, %2852
  %.pn1129 = phi { ptr, i32 } [ %2856, %2855 ], [ %2854, %2853 ], [ %.pn1127, %2852 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %397) #12
  br label %3339

.split3811.split:                                 ; preds = %.preheader1552
  %2858 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2859:                                             ; preds = %.preheader1552
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %401)
          to label %..loopexit1538_crit_edge unwind label %.split3814.split

..loopexit1538_crit_edge:                         ; preds = %2859
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %401) #12
  br label %.loopexit1572

.split3814.split:                                 ; preds = %2859
  %2860 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %401) #12
  br label %3339

.split3240:                                       ; preds = %2862
  %2861 = landingpad { ptr, i32 }
          cleanup
  br label %3339

2862:                                             ; preds = %.preheader1562
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %404, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %2863 unwind label %.split3240

2863:                                             ; preds = %2862
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %403, ptr noundef nonnull %404)
          to label %2864 unwind label %.split3243

2864:                                             ; preds = %2863
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %402, ptr noundef nonnull %403)
          to label %2865 unwind label %.split3246

2865:                                             ; preds = %2864
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %402)
          to label %2866 unwind label %.split3249

2866:                                             ; preds = %2865
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %403) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #12
  br label %.loopexit1572

.split3243:                                       ; preds = %2863
  %2867 = landingpad { ptr, i32 }
          cleanup
  br label %2871

.split3246:                                       ; preds = %2864
  %2868 = landingpad { ptr, i32 }
          cleanup
  br label %2870

.split3249:                                       ; preds = %2865
  %2869 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %402) #12
  br label %2870

2870:                                             ; preds = %.split3249, %.split3246
  %.pn1121 = phi { ptr, i32 } [ %2869, %.split3249 ], [ %2868, %.split3246 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %403) #12
  br label %2871

2871:                                             ; preds = %2870, %.split3243
  %.pn1121.pn = phi { ptr, i32 } [ %.pn1121, %2870 ], [ %2867, %.split3243 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #12
  br label %3339

.lr.ph3233:                                       ; preds = %.lr.ph3935
  %2872 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %405) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %406, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %2873 unwind label %2878

2873:                                             ; preds = %.lr.ph3233
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %405, ptr noundef nonnull %406)
          to label %2874 unwind label %2880

2874:                                             ; preds = %2873
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %407) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %408, ptr noundef nonnull align 8 dereferenceable(32) %405)
          to label %2875 unwind label %2882

2875:                                             ; preds = %2874
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %407, ptr noundef nonnull %408, i32 noundef 0)
          to label %2876 unwind label %2884

2876:                                             ; preds = %2875
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %408) #12
  %2877 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2872) #12
  %.not3950 = icmp eq i64 %2877, 0
  br i1 %.not3950, label %..loopexit1544_crit_edge, label %.lr.ph3230

..loopexit1544_crit_edge:                         ; preds = %2897, %2876
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %405) #12
  br label %.loopexit1572

2878:                                             ; preds = %.lr.ph3233
  %2879 = landingpad { ptr, i32 }
          cleanup
  br label %2903

2880:                                             ; preds = %2873
  %2881 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #12
  br label %2903

2882:                                             ; preds = %2874
  %2883 = landingpad { ptr, i32 }
          cleanup
  br label %2902

2884:                                             ; preds = %2875
  %2885 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %408) #12
  br label %2902

.lr.ph3230:                                       ; preds = %2876, %2897
  %.09413228 = phi i64 [ %2898, %2897 ], [ 0, %2876 ]
  %2886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2872, i64 noundef %.09413228) #12
  %2887 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %2886)
          to label %2888 unwind label %2892

2888:                                             ; preds = %.lr.ph3230
  br i1 %2887, label %2889, label %2896

2889:                                             ; preds = %2888
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %409, ptr noundef nonnull align 8 dereferenceable(32) %407)
          to label %2890 unwind label %2892

2890:                                             ; preds = %2889
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %409)
          to label %2891 unwind label %2894

2891:                                             ; preds = %2890
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %409) #12
  br label %2896

2892:                                             ; preds = %2896, %2889, %.lr.ph3230
  %2893 = landingpad { ptr, i32 }
          cleanup
  br label %2901

2894:                                             ; preds = %2890
  %2895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %409) #12
  br label %2901

2896:                                             ; preds = %2891, %2888
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %407)
          to label %2897 unwind label %2892

2897:                                             ; preds = %2896
  %2898 = add nuw i64 %.09413228, 1
  %2899 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2872) #12
  %2900 = icmp ult i64 %2898, %2899
  br i1 %2900, label %.lr.ph3230, label %..loopexit1544_crit_edge, !llvm.loop !226

2901:                                             ; preds = %2894, %2892
  %.pn1117 = phi { ptr, i32 } [ %2893, %2892 ], [ %2895, %2894 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %407) #12
  br label %2902

2902:                                             ; preds = %2901, %2884, %2882
  %.pn1117.pn = phi { ptr, i32 } [ %.pn1117, %2901 ], [ %2885, %2884 ], [ %2883, %2882 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %407) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %405) #12
  br label %2903

2903:                                             ; preds = %2902, %2880, %2878
  %.pn1117.pn.pn = phi { ptr, i32 } [ %.pn1117.pn, %2902 ], [ %2881, %2880 ], [ %2879, %2878 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %405) #12
  br label %3339

.lr.ph3226:                                       ; preds = %.lr.ph3935
  %2904 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %2905 = getelementptr inbounds i8, ptr %2904, i64 8
  %2906 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %2905)
  %2907 = load i64, ptr %2906, align 8, !tbaa !160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %410) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %411, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %2908 unwind label %2919

2908:                                             ; preds = %.lr.ph3226
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %410, ptr noundef nonnull %411)
          to label %2909 unwind label %2921

2909:                                             ; preds = %2908
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #12
  %.not1089 = icmp eq i64 %2907, 0
  br i1 %.not1089, label %..loopexit1545_crit_edge, label %2910

2910:                                             ; preds = %2909
  %2911 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %2904)
          to label %2912 unwind label %2923

2912:                                             ; preds = %2910
  br i1 %2911, label %2913, label %..loopexit1545_crit_edge

2913:                                             ; preds = %2912
  %2914 = icmp ult i64 %2907, 7
  br i1 %2914, label %2915, label %2940

2915:                                             ; preds = %2913
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %412) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef nonnull align 8 dereferenceable(32) %410)
          to label %2916 unwind label %2925

2916:                                             ; preds = %2915
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %412, ptr noundef nonnull %413, i32 noundef 0)
          to label %2917 unwind label %2927

2917:                                             ; preds = %2916
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #12
  br label %2929

2918:                                             ; preds = %2932
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %412) #12
  br label %..loopexit1545_crit_edge

2919:                                             ; preds = %.lr.ph3226
  %2920 = landingpad { ptr, i32 }
          cleanup
  br label %3039

2921:                                             ; preds = %2908
  %2922 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #12
  br label %3039

2923:                                             ; preds = %2910
  %2924 = landingpad { ptr, i32 }
          cleanup
  br label %3038

2925:                                             ; preds = %2915
  %2926 = landingpad { ptr, i32 }
          cleanup
  br label %2939

2927:                                             ; preds = %2916
  %2928 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #12
  br label %2939

2929:                                             ; preds = %2917, %2932
  %.09363224 = phi i64 [ 0, %2917 ], [ %2933, %2932 ]
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %414, ptr noundef nonnull align 8 dereferenceable(32) %412)
          to label %2930 unwind label %2934

2930:                                             ; preds = %2929
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %414)
          to label %2931 unwind label %2936

2931:                                             ; preds = %2930
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %414) #12
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %412)
          to label %2932 unwind label %2934

2932:                                             ; preds = %2931
  %2933 = add nuw i64 %.09363224, 1
  %exitcond.not = icmp eq i64 %2933, %2907
  br i1 %exitcond.not, label %2918, label %2929, !llvm.loop !227

2934:                                             ; preds = %2931, %2929
  %2935 = landingpad { ptr, i32 }
          cleanup
  br label %2938

2936:                                             ; preds = %2930
  %2937 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %414) #12
  br label %2938

2938:                                             ; preds = %2936, %2934
  %.pn1112 = phi { ptr, i32 } [ %2935, %2934 ], [ %2937, %2936 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %412) #12
  br label %2939

2939:                                             ; preds = %2938, %2927, %2925
  %.pn1112.pn = phi { ptr, i32 } [ %.pn1112, %2938 ], [ %2928, %2927 ], [ %2926, %2925 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %412) #12
  br label %3038

2940:                                             ; preds = %2913
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %415) #12
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %416, i32 noundef 0)
          to label %2941 unwind label %2975

2941:                                             ; preds = %2940
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %415, ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %416)
          to label %2942 unwind label %2977

2942:                                             ; preds = %2941
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %417) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %418, ptr noundef nonnull align 8 dereferenceable(32) %410)
          to label %2943 unwind label %2979

2943:                                             ; preds = %2942
  %2944 = invoke noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %2945 unwind label %2981

2945:                                             ; preds = %2943
  invoke void @_ZN3MIR6LValue9new_IndexES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %417, ptr noundef nonnull %418, i32 noundef %2944)
          to label %2946 unwind label %2981

2946:                                             ; preds = %2945
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %418) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %419) #12
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %420, i32 noundef 14)
          to label %2947 unwind label %2983

2947:                                             ; preds = %2946
  invoke void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %419, ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %420)
          to label %2948 unwind label %2985

2948:                                             ; preds = %2947
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %421, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %2949 unwind label %2987

2949:                                             ; preds = %2948
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %424, i64 noundef 0, i64 noundef 0)
  store i32 0, ptr %2581, align 8, !tbaa !228
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %423, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %424)
          to label %2950 unwind label %2989

2950:                                             ; preds = %2949
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %422, ptr noundef nonnull %423)
          to label %2951 unwind label %2991

2951:                                             ; preds = %2950
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %421, ptr noundef nonnull %422)
          to label %2952 unwind label %2993

2952:                                             ; preds = %2951
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %422) #12
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %423) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #12
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %425, i32 noundef 1)
          to label %2953 unwind label %2987

2953:                                             ; preds = %2952
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %425)
          to label %2954 unwind label %2997

2954:                                             ; preds = %2953
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %425) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %426, ptr noundef nonnull align 8 dereferenceable(32) %417)
          to label %2955 unwind label %2987

2955:                                             ; preds = %2954
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %426)
          to label %2956 unwind label %2999

2956:                                             ; preds = %2955
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %427, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %2957 unwind label %2987

2957:                                             ; preds = %2956
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %430, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %2958 unwind label %3001

2958:                                             ; preds = %2957
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %429, ptr noundef nonnull %430)
          to label %2959 unwind label %3003

2959:                                             ; preds = %2958
  store i32 0, ptr %2582, align 8, !tbaa !232
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %432, i64 noundef 1, i64 noundef 0)
  store i32 0, ptr %2583, align 8, !tbaa !228
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %431, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %432)
          to label %2960 unwind label %.thread1498

2960:                                             ; preds = %2959
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2584, ptr noundef nonnull %431)
          to label %2961 unwind label %.thread1502

2961:                                             ; preds = %2960
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %428, ptr noundef nonnull %429)
          to label %2962 unwind label %3007

2962:                                             ; preds = %2961
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %427, ptr noundef nonnull %428)
          to label %2963 unwind label %3009

2963:                                             ; preds = %2962
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %428) #12
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %429) #12
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %431) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %427) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %433, ptr noundef nonnull align 8 dereferenceable(32) %419)
          to label %2964 unwind label %2987

2964:                                             ; preds = %2963
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %436, ptr noundef nonnull align 8 dereferenceable(32) %415)
          to label %2965 unwind label %3015

2965:                                             ; preds = %2964
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %435, ptr noundef nonnull %436)
          to label %2966 unwind label %3017

2966:                                             ; preds = %2965
  store i32 14, ptr %2585, align 8, !tbaa !232
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %438, i64 noundef %2907, i64 noundef 0)
  store i32 0, ptr %2586, align 8, !tbaa !228
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %437, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %438)
          to label %2967 unwind label %.thread1505

2967:                                             ; preds = %2966
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2587, ptr noundef nonnull %437)
          to label %2968 unwind label %.thread1509

2968:                                             ; preds = %2967
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %434, ptr noundef nonnull %435)
          to label %2969 unwind label %3021

2969:                                             ; preds = %2968
  invoke void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %433, ptr noundef nonnull %434)
          to label %2970 unwind label %3023

2970:                                             ; preds = %2969
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %434) #12
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %435) #12
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %437) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %440, ptr noundef nonnull align 8 dereferenceable(32) %419)
          to label %2971 unwind label %2987

2971:                                             ; preds = %2970
  store i32 1, ptr %2588, align 8, !tbaa !237
  store i32 2, ptr %2589, align 4, !tbaa !239
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %439, ptr noundef nonnull %440)
          to label %2972 unwind label %3029

2972:                                             ; preds = %2971
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %439)
          to label %2973 unwind label %3031

2973:                                             ; preds = %2972
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %439) #12
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %440) #12
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %370)
          to label %2974 unwind label %2987

2974:                                             ; preds = %2973
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %419) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %417) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #12
  br label %..loopexit1545_crit_edge

2975:                                             ; preds = %2940
  %2976 = landingpad { ptr, i32 }
          cleanup
  br label %3037

2977:                                             ; preds = %2941
  %2978 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #12
  br label %3037

2979:                                             ; preds = %2942
  %2980 = landingpad { ptr, i32 }
          cleanup
  br label %3036

2981:                                             ; preds = %2945, %2943
  %2982 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %418) #12
  br label %3036

2983:                                             ; preds = %2946
  %2984 = landingpad { ptr, i32 }
          cleanup
  br label %3035

2985:                                             ; preds = %2947
  %2986 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #12
  br label %3035

2987:                                             ; preds = %2973, %2970, %2963, %2956, %2954, %2952, %2948
  %2988 = landingpad { ptr, i32 }
          cleanup
  br label %3034

2989:                                             ; preds = %2949
  %2990 = landingpad { ptr, i32 }
          cleanup
  br label %2996

2991:                                             ; preds = %2950
  %2992 = landingpad { ptr, i32 }
          cleanup
  br label %2995

2993:                                             ; preds = %2951
  %2994 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %422) #12
  br label %2995

2995:                                             ; preds = %2993, %2991
  %.pn1090 = phi { ptr, i32 } [ %2994, %2993 ], [ %2992, %2991 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %423) #12
  br label %2996

2996:                                             ; preds = %2995, %2989
  %.pn1090.pn = phi { ptr, i32 } [ %.pn1090, %2995 ], [ %2990, %2989 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #12
  br label %3034

2997:                                             ; preds = %2953
  %2998 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %425) #12
  br label %3034

2999:                                             ; preds = %2955
  %3000 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #12
  br label %3034

3001:                                             ; preds = %2957
  %3002 = landingpad { ptr, i32 }
          cleanup
  br label %3014

3003:                                             ; preds = %2958
  %3004 = landingpad { ptr, i32 }
          cleanup
  br label %3013

.thread1498:                                      ; preds = %2959
  %3005 = landingpad { ptr, i32 }
          cleanup
  br label %3012

.thread1502:                                      ; preds = %2960
  %3006 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %431) #12
  br label %3012

3007:                                             ; preds = %2961
  %3008 = landingpad { ptr, i32 }
          cleanup
  br label %3011

3009:                                             ; preds = %2962
  %3010 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %428) #12
  br label %3011

3011:                                             ; preds = %3007, %3009
  %.pn1093 = phi { ptr, i32 } [ %3010, %3009 ], [ %3008, %3007 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %429) #12
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %431) #12
  br label %3013

3012:                                             ; preds = %.thread1502, %.thread1498
  %.pn1093.pn.pn1501 = phi { ptr, i32 } [ %3005, %.thread1498 ], [ %3006, %.thread1502 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %429) #12
  br label %3013

3013:                                             ; preds = %3011, %3012, %3003
  %.pn1093.pn.pn.pn = phi { ptr, i32 } [ %.pn1093.pn.pn1501, %3012 ], [ %.pn1093, %3011 ], [ %3004, %3003 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %430) #12
  br label %3014

3014:                                             ; preds = %3013, %3001
  %.pn1093.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1093.pn.pn.pn, %3013 ], [ %3002, %3001 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %427) #12
  br label %3034

3015:                                             ; preds = %2964
  %3016 = landingpad { ptr, i32 }
          cleanup
  br label %3028

3017:                                             ; preds = %2965
  %3018 = landingpad { ptr, i32 }
          cleanup
  br label %3027

.thread1505:                                      ; preds = %2966
  %3019 = landingpad { ptr, i32 }
          cleanup
  br label %3026

.thread1509:                                      ; preds = %2967
  %3020 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %437) #12
  br label %3026

3021:                                             ; preds = %2968
  %3022 = landingpad { ptr, i32 }
          cleanup
  br label %3025

3023:                                             ; preds = %2969
  %3024 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %434) #12
  br label %3025

3025:                                             ; preds = %3021, %3023
  %.pn1099 = phi { ptr, i32 } [ %3024, %3023 ], [ %3022, %3021 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %435) #12
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %437) #12
  br label %3027

3026:                                             ; preds = %.thread1509, %.thread1505
  %.pn1099.pn.pn1508 = phi { ptr, i32 } [ %3019, %.thread1505 ], [ %3020, %.thread1509 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %435) #12
  br label %3027

3027:                                             ; preds = %3025, %3026, %3017
  %.pn1099.pn.pn.pn = phi { ptr, i32 } [ %.pn1099.pn.pn1508, %3026 ], [ %.pn1099, %3025 ], [ %3018, %3017 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #12
  br label %3028

3028:                                             ; preds = %3027, %3015
  %.pn1099.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1099.pn.pn.pn, %3027 ], [ %3016, %3015 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #12
  br label %3034

3029:                                             ; preds = %2971
  %3030 = landingpad { ptr, i32 }
          cleanup
  br label %3033

3031:                                             ; preds = %2972
  %3032 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %439) #12
  br label %3033

3033:                                             ; preds = %3031, %3029
  %.pn1105 = phi { ptr, i32 } [ %3032, %3031 ], [ %3030, %3029 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %440) #12
  br label %3034

3034:                                             ; preds = %3033, %3028, %3014, %2999, %2997, %2996, %2987
  %.pn1107 = phi { ptr, i32 } [ %2988, %2987 ], [ %.pn1105, %3033 ], [ %.pn1099.pn.pn.pn.pn, %3028 ], [ %.pn1093.pn.pn.pn.pn, %3014 ], [ %3000, %2999 ], [ %2998, %2997 ], [ %.pn1090.pn, %2996 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #12
  br label %3035

3035:                                             ; preds = %3034, %2985, %2983
  %.pn1107.pn = phi { ptr, i32 } [ %.pn1107, %3034 ], [ %2986, %2985 ], [ %2984, %2983 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %419) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #12
  br label %3036

3036:                                             ; preds = %3035, %2981, %2979
  %.pn1107.pn.pn = phi { ptr, i32 } [ %.pn1107.pn, %3035 ], [ %2982, %2981 ], [ %2980, %2979 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %417) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %415) #12
  br label %3037

3037:                                             ; preds = %3036, %2977, %2975
  %.pn1107.pn.pn.pn = phi { ptr, i32 } [ %.pn1107.pn.pn, %3036 ], [ %2978, %2977 ], [ %2976, %2975 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %415) #12
  br label %3038

..loopexit1545_crit_edge:                         ; preds = %2918, %2974, %2912, %2909
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %410) #12
  br label %.loopexit1572

3038:                                             ; preds = %3037, %2939, %2923
  %.pn1112.pn.pn = phi { ptr, i32 } [ %.pn1112.pn, %2939 ], [ %.pn1107.pn.pn.pn, %3037 ], [ %2924, %2923 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #12
  br label %3039

3039:                                             ; preds = %3038, %2921, %2919
  %.pn1112.pn.pn.pn = phi { ptr, i32 } [ %.pn1112.pn.pn, %3038 ], [ %2922, %2921 ], [ %2920, %2919 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %410) #12
  br label %3339

.loopexit1536:                                    ; preds = %3075, %._crit_edge3171, %.lr.ph2938, %..loopexit_crit_edge, %..loopexit1512_crit_edge
  %.0917.lcssa = phi i8 [ %.4921, %._crit_edge3171 ], [ %.4921, %3075 ], [ %.10927, %..loopexit1512_crit_edge ], [ %.10927, %..loopexit_crit_edge ], [ %.10927, %.lr.ph2938 ]
  %3040 = trunc nuw i8 %.0917.lcssa to i1
  br i1 %3040, label %.loopexit1536.thread5071, label %.loopexit1572

.lr.ph3218:                                       ; preds = %.lr.ph3935
  %3041 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2763)
  %3042 = getelementptr inbounds i8, ptr %3041, i64 88
  %3043 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  switch i32 %3043, label %.loopexit1572 [
    i32 0, label %3050
    i32 1, label %3051
    i32 2, label %3056
    i32 3, label %.preheader1528
    i32 4, label %.lr.ph3174
    i32 5, label %.preheader1532
    i32 6, label %.lr.ph2943
  ]

.preheader1532:                                   ; preds = %.lr.ph3218
  %3044 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  %3045 = load ptr, ptr %3044, align 8, !tbaa !11
  %3046 = getelementptr inbounds i8, ptr %3045, i64 129
  %3047 = load i8, ptr %3046, align 1, !tbaa !240, !range !214, !noundef !215
  %3048 = trunc nuw i8 %3047 to i1
  br i1 %3048, label %.lr.ph2948.split, label %.loopexit1572

.preheader1528:                                   ; preds = %.lr.ph3218
  %3049 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  br label %.loopexit1572

3050:                                             ; preds = %.lr.ph3218
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.9, i32 noundef 1048, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

3051:                                             ; preds = %.lr.ph3218
  %3052 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  %3053 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.34, ptr %3053, align 16, !tbaa !11
  invoke void @__cxa_throw(ptr nonnull %3053, ptr nonnull @_ZTIPKc, ptr null) #14
          to label %3348 unwind label %3054

3054:                                             ; preds = %3051
  %3055 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3056:                                             ; preds = %.lr.ph3218
  %3057 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  %3058 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.34, ptr %3058, align 16, !tbaa !11
  invoke void @__cxa_throw(ptr nonnull %3058, ptr nonnull @_ZTIPKc, ptr null) #14
          to label %3348 unwind label %3059

3059:                                             ; preds = %3056
  %3060 = landingpad { ptr, i32 }
          cleanup
  br label %3339

.loopexit1520:                                    ; preds = %3066, %3070
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %3339

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

.lr.ph3174:                                       ; preds = %.lr.ph3218
  %3061 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  %3062 = load ptr, ptr %3061, align 8, !tbaa !11
  %3063 = getelementptr inbounds i8, ptr %3062, i64 145
  %3064 = load i8, ptr %3063, align 1, !tbaa !253, !range !214, !noundef !215
  %3065 = trunc nuw i8 %3064 to i1
  br i1 %3065, label %3066, label %3067

3066:                                             ; preds = %.lr.ph3174
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %3067 unwind label %.loopexit1520

3067:                                             ; preds = %3066, %.lr.ph3174
  %.4921 = phi i8 [ 0, %.lr.ph3174 ], [ 1, %3066 ]
  %3068 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2626)
  %3069 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3068)
  br i1 %3069, label %3070, label %3089

3070:                                             ; preds = %3067
  %3071 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2626)
  %3072 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3071)
  %3073 = invoke noundef zeroext i1 @_ZNK3HIR13TypeData_Path12is_generatorEv(ptr noundef nonnull align 8 dereferenceable(112) %3072)
          to label %3074 unwind label %.loopexit1520

3074:                                             ; preds = %3070
  br i1 %3073, label %3075, label %3089

3075:                                             ; preds = %3074
  %3076 = trunc nuw i8 %.4921 to i1
  br i1 %3076, label %.loopexit1536, label %3077

3077:                                             ; preds = %3075
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %441) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3078 unwind label %3082

3078:                                             ; preds = %3077
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %443) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %442, ptr noundef nonnull align 1 dereferenceable(1) %443) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull %442)
          to label %3079 unwind label %3084

3079:                                             ; preds = %3078
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %443) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #12
  %3080 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3080, ptr noundef nonnull @.str.10)
          to label %3081 unwind label %3087

3081:                                             ; preds = %3079
  invoke void @__cxa_throw(ptr nonnull %3080, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp

3082:                                             ; preds = %3077
  %3083 = landingpad { ptr, i32 }
          cleanup
  br label %3086

3084:                                             ; preds = %3078
  %3085 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %442) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %443) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %441) #12
  br label %3086

3086:                                             ; preds = %3084, %3082
  %.pn1083 = phi { ptr, i32 } [ %3085, %3084 ], [ %3083, %3082 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %441) #12
  br label %3339

3087:                                             ; preds = %3079
  %3088 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %3080) #12
  br label %3339

3089:                                             ; preds = %3074, %3067
  %3090 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %3091 unwind label %.loopexit1521

3091:                                             ; preds = %3089
  %.not1075 = icmp eq ptr %3090, null
  br i1 %.not1075, label %3092, label %3104

3092:                                             ; preds = %3091
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %444) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %444, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3093 unwind label %3097

3093:                                             ; preds = %3092
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %446) #12
  store ptr %2626, ptr %446, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %445, ptr noundef nonnull align 8 dereferenceable(8) %446) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %444, ptr noundef nonnull %445)
          to label %3094 unwind label %3099

3094:                                             ; preds = %3093
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %445) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %446) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %444) #12
  %3095 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3095, ptr noundef nonnull @.str.10)
          to label %3096 unwind label %3102

3096:                                             ; preds = %3094
  invoke void @__cxa_throw(ptr nonnull %3095, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %3348 unwind label %.loopexit.split-lp1522

.loopexit1521:                                    ; preds = %3089
  %lpad.loopexit1523 = landingpad { ptr, i32 }
          cleanup
  br label %3339

.loopexit.split-lp1522:                           ; preds = %3096
  %lpad.loopexit.split-lp1524 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3097:                                             ; preds = %3092
  %3098 = landingpad { ptr, i32 }
          cleanup
  br label %3101

3099:                                             ; preds = %3093
  %3100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %445) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %446) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %444) #12
  br label %3101

3101:                                             ; preds = %3099, %3097
  %.pn1076 = phi { ptr, i32 } [ %3100, %3099 ], [ %3098, %3097 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %444) #12
  br label %3339

3102:                                             ; preds = %3094
  %3103 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %3095) #12
  br label %3339

3104:                                             ; preds = %3091
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %447) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %448, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %3105 unwind label %3111

3105:                                             ; preds = %3104
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %447, ptr noundef nonnull %448)
          to label %3106 unwind label %3113

3106:                                             ; preds = %3105
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %448) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %449) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %450, ptr noundef nonnull align 8 dereferenceable(32) %447)
          to label %3107 unwind label %3115

3107:                                             ; preds = %3106
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %449, ptr noundef nonnull %450, i32 noundef 0)
          to label %3108 unwind label %3117

3108:                                             ; preds = %3107
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %450) #12
  %3109 = getelementptr inbounds i8, ptr %3090, i64 88
  %3110 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3109) #12
  %.not3949 = icmp eq i64 %3110, 0
  br i1 %.not3949, label %._crit_edge3171, label %.lr.ph3170

._crit_edge3171:                                  ; preds = %3131, %3108
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %449) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %449) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %447) #12
  br label %.loopexit1536

3111:                                             ; preds = %3104
  %3112 = landingpad { ptr, i32 }
          cleanup
  br label %3137

3113:                                             ; preds = %3105
  %3114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %448) #12
  br label %3137

3115:                                             ; preds = %3106
  %3116 = landingpad { ptr, i32 }
          cleanup
  br label %3136

3117:                                             ; preds = %3107
  %3118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %450) #12
  br label %3136

.lr.ph3170:                                       ; preds = %3108, %3131
  %.08973168 = phi i64 [ %3132, %3131 ], [ 0, %3108 ]
  %3119 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3109, i64 noundef %.08973168) #12
  %3120 = getelementptr inbounds i8, ptr %3119, i64 8
  %3121 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %3120)
          to label %3122 unwind label %3126

3122:                                             ; preds = %.lr.ph3170
  br i1 %3121, label %3123, label %3130

3123:                                             ; preds = %3122
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %451, ptr noundef nonnull align 8 dereferenceable(32) %449)
          to label %3124 unwind label %3126

3124:                                             ; preds = %3123
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %451)
          to label %3125 unwind label %3128

3125:                                             ; preds = %3124
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #12
  br label %3130

3126:                                             ; preds = %3130, %3123, %.lr.ph3170
  %3127 = landingpad { ptr, i32 }
          cleanup
  br label %3135

3128:                                             ; preds = %3124
  %3129 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %451) #12
  br label %3135

3130:                                             ; preds = %3125, %3122
  invoke void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32) %449)
          to label %3131 unwind label %3126

3131:                                             ; preds = %3130
  %3132 = add nuw i64 %.08973168, 1
  %3133 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3109) #12
  %3134 = icmp ult i64 %3132, %3133
  br i1 %3134, label %.lr.ph3170, label %._crit_edge3171, !llvm.loop !262

3135:                                             ; preds = %3128, %3126
  %.pn1078 = phi { ptr, i32 } [ %3127, %3126 ], [ %3129, %3128 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %449) #12
  br label %3136

3136:                                             ; preds = %3135, %3117, %3115
  %.pn1078.pn = phi { ptr, i32 } [ %.pn1078, %3135 ], [ %3118, %3117 ], [ %3116, %3115 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %449) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %447) #12
  br label %3137

3137:                                             ; preds = %3136, %3113, %3111
  %.pn1078.pn.pn = phi { ptr, i32 } [ %.pn1078.pn, %3136 ], [ %3114, %3113 ], [ %3112, %3111 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %447) #12
  br label %3339

.split2955:                                       ; preds = %.lr.ph2948.split
  %3138 = landingpad { ptr, i32 }
          cleanup
  br label %3339

.lr.ph2948.split:                                 ; preds = %.preheader1532
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %.loopexit1536.thread5071 unwind label %.split2955

3139:                                             ; preds = %3146
  %3140 = landingpad { ptr, i32 }
          cleanup
  br label %3339

.lr.ph2943:                                       ; preds = %.lr.ph3218
  %3141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %3042)
  %3142 = load ptr, ptr %3141, align 8, !tbaa !11
  %3143 = getelementptr inbounds i8, ptr %3142, i64 145
  %3144 = load i8, ptr %3143, align 1, !tbaa !263, !range !214, !noundef !215
  %3145 = trunc nuw i8 %3144 to i1
  br i1 %3145, label %3146, label %.lr.ph2938

3146:                                             ; preds = %.lr.ph2943
  invoke void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %..split2939_crit_edge unwind label %3139

..split2939_crit_edge:                            ; preds = %3146
  %.pre = load ptr, ptr %3141, align 8, !tbaa !11
  br label %.lr.ph2938

.lr.ph2938:                                       ; preds = %.lr.ph2943, %..split2939_crit_edge
  %3147 = phi ptr [ %3142, %.lr.ph2943 ], [ %.pre, %..split2939_crit_edge ]
  %.10927 = phi i8 [ 0, %.lr.ph2943 ], [ 1, %..split2939_crit_edge ]
  %3148 = getelementptr inbounds i8, ptr %3147, i64 104
  %3149 = call noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %3148)
  switch i32 %3149, label %.loopexit1536 [
    i32 0, label %3151
    i32 2, label %.preheader
    i32 1, label %.lr.ph2909
  ]

.preheader:                                       ; preds = %.lr.ph2938
  %3150 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40) %3148)
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %452)
          to label %3153 unwind label %.split.split

3151:                                             ; preds = %.lr.ph2938
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.9, i32 noundef 1095, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15Trans_AutoImplsRN3HIR5CrateER9TransList) #13
  unreachable

.split.split:                                     ; preds = %.preheader
  %3152 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3153:                                             ; preds = %.preheader
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %452)
          to label %..loopexit_crit_edge unwind label %.split2914.split

..loopexit_crit_edge:                             ; preds = %3153
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %452) #12
  br label %.loopexit1536

.split2914.split:                                 ; preds = %3153
  %3154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %452) #12
  br label %3339

.lr.ph2909:                                       ; preds = %.lr.ph2938
  %3155 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %3148)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %453) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %454, ptr noundef nonnull align 8 dereferenceable(32) %2575)
          to label %3156 unwind label %3163

3156:                                             ; preds = %.lr.ph2909
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %453, ptr noundef nonnull %454)
          to label %3157 unwind label %3165

3157:                                             ; preds = %3156
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %455) #12
  invoke void @_ZN3MIR10Terminator11Data_SwitchC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %455)
          to label %3158 unwind label %3167

3158:                                             ; preds = %3157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %456) #12
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %456, ptr noundef nonnull align 8 dereferenceable(32) %453)
          to label %3159 unwind label %3169

3159:                                             ; preds = %3158
  %3160 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %455, ptr noundef nonnull align 8 dereferenceable(32) %456)
          to label %3161 unwind label %3171

3161:                                             ; preds = %3159
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %456) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %456) #12
  %3162 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3155) #12
  %.not3947 = icmp eq i64 %3162, 0
  br i1 %.not3947, label %._crit_edge2903, label %.lr.ph2902

._crit_edge2903:                                  ; preds = %3179, %3161
  invoke void @_ZN3MIR10Terminator11Data_SwitchC2EOS1_(ptr noundef nonnull align 8 dereferenceable(56) %459, ptr noundef nonnull align 8 dereferenceable(56) %455)
          to label %3185 unwind label %3191

3163:                                             ; preds = %.lr.ph2909
  %3164 = landingpad { ptr, i32 }
          cleanup
  br label %3221

3165:                                             ; preds = %3156
  %3166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %454) #12
  br label %3221

3167:                                             ; preds = %3157
  %3168 = landingpad { ptr, i32 }
          cleanup
  br label %3220

3169:                                             ; preds = %3158
  %3170 = landingpad { ptr, i32 }
          cleanup
  br label %3173

3171:                                             ; preds = %3159
  %3172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %456) #12
  br label %3173

3173:                                             ; preds = %3171, %3169
  %.pn1060 = phi { ptr, i32 } [ %3172, %3171 ], [ %3170, %3169 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %456) #12
  br label %3219

.lr.ph2902:                                       ; preds = %3161, %3179
  %.08732900 = phi i64 [ %3180, %3179 ], [ 0, %3161 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %457) #12
  %3174 = load ptr, ptr %2579, align 8, !tbaa !268
  %3175 = getelementptr inbounds i8, ptr %3174, i64 64
  %3176 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3175) #12
  %3177 = add i64 %3176, %.08732900
  %3178 = trunc i64 %3177 to i32
  store i32 %3178, ptr %457, align 4, !tbaa !113
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %2578, ptr noundef nonnull align 4 dereferenceable(4) %457)
          to label %3179 unwind label %3183

3179:                                             ; preds = %.lr.ph2902
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %457) #12
  %3180 = add nuw i64 %.08732900, 1
  %3181 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3155) #12
  %3182 = icmp ult i64 %3180, %3181
  br i1 %3182, label %.lr.ph2902, label %._crit_edge2903, !llvm.loop !270

3183:                                             ; preds = %.lr.ph2902
  %3184 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %457) #12
  br label %3219

3185:                                             ; preds = %._crit_edge2903
  invoke void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %458, ptr noundef nonnull %459)
          to label %3186 unwind label %3193

3186:                                             ; preds = %3185
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %458)
          to label %3187 unwind label %3195

3187:                                             ; preds = %3186
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %458) #12
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %459) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %460) #12
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %461, ptr noundef nonnull align 8 dereferenceable(32) %453)
          to label %3188 unwind label %3198

3188:                                             ; preds = %3187
  invoke void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %460, ptr noundef nonnull %461, i32 noundef 0)
          to label %3189 unwind label %3200

3189:                                             ; preds = %3188
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #12
  %3190 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3155) #12
  %.not3948 = icmp eq i64 %3190, 0
  br i1 %.not3948, label %..loopexit1512_crit_edge, label %.lr.ph2906

..loopexit1512_crit_edge:                         ; preds = %3207, %3189
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %460) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %460) #12
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %455) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %455) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %453) #12
  br label %.loopexit1536

3191:                                             ; preds = %._crit_edge2903
  %3192 = landingpad { ptr, i32 }
          cleanup
  br label %3219

3193:                                             ; preds = %3185
  %3194 = landingpad { ptr, i32 }
          cleanup
  br label %3197

3195:                                             ; preds = %3186
  %3196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %458) #12
  br label %3197

3197:                                             ; preds = %3195, %3193
  %.pn1062 = phi { ptr, i32 } [ %3196, %3195 ], [ %3194, %3193 ]
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %459) #12
  br label %3219

3198:                                             ; preds = %3187
  %3199 = landingpad { ptr, i32 }
          cleanup
  br label %3218

3200:                                             ; preds = %3188
  %3201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #12
  br label %3218

.lr.ph2906:                                       ; preds = %3189, %3207
  %.08722904 = phi i64 [ %3208, %3207 ], [ 0, %3189 ]
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %462, ptr noundef nonnull align 8 dereferenceable(32) %460)
          to label %3202 unwind label %3211

3202:                                             ; preds = %.lr.ph2906
  invoke void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %462)
          to label %3203 unwind label %3213

3203:                                             ; preds = %3202
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #12
  invoke void @_ZN3MIR6LValue12inc_DowncastEv(ptr noundef nonnull align 8 dereferenceable(32) %460)
          to label %3204 unwind label %3211

3204:                                             ; preds = %3203
  invoke void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48) %370)
          to label %3205 unwind label %3211

3205:                                             ; preds = %3204
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %463)
          to label %3206 unwind label %3211

3206:                                             ; preds = %3205
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %463)
          to label %3207 unwind label %3215

3207:                                             ; preds = %3206
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %463) #12
  %3208 = add nuw i64 %.08722904, 1
  %3209 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3155) #12
  %3210 = icmp ult i64 %3208, %3209
  br i1 %3210, label %.lr.ph2906, label %..loopexit1512_crit_edge, !llvm.loop !271

3211:                                             ; preds = %3205, %3204, %3203, %.lr.ph2906
  %3212 = landingpad { ptr, i32 }
          cleanup
  br label %3217

3213:                                             ; preds = %3202
  %3214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %462) #12
  br label %3217

3215:                                             ; preds = %3206
  %3216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %463) #12
  br label %3217

3217:                                             ; preds = %3215, %3213, %3211
  %.pn1064 = phi { ptr, i32 } [ %3216, %3215 ], [ %3212, %3211 ], [ %3214, %3213 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %460) #12
  br label %3218

3218:                                             ; preds = %3217, %3200, %3198
  %.pn1064.pn = phi { ptr, i32 } [ %.pn1064, %3217 ], [ %3201, %3200 ], [ %3199, %3198 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %460) #12
  br label %3219

3219:                                             ; preds = %3218, %3197, %3191, %3183, %3173
  %.pn1067 = phi { ptr, i32 } [ %3184, %3183 ], [ %.pn1064.pn, %3218 ], [ %.pn1062, %3197 ], [ %3192, %3191 ], [ %.pn1060, %3173 ]
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %455) #12
  br label %3220

3220:                                             ; preds = %3219, %3167
  %.pn1067.pn = phi { ptr, i32 } [ %.pn1067, %3219 ], [ %3168, %3167 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %455) #12
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %453) #12
  br label %3221

3221:                                             ; preds = %3220, %3165, %3163
  %.pn1067.pn.pn = phi { ptr, i32 } [ %.pn1067.pn, %3220 ], [ %3166, %3165 ], [ %3164, %3163 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %453) #12
  br label %3339

.loopexit1536.thread5071:                         ; preds = %.lr.ph2948.split, %.loopexit1536
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %465, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %3222 unwind label %3244

3222:                                             ; preds = %.loopexit1536.thread5071
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef nonnull align 8 dereferenceable(8) %2580)
          to label %3223 unwind label %3246

3223:                                             ; preds = %3222
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %466, ptr noundef nonnull %467)
          to label %3224 unwind label %3248

3224:                                             ; preds = %3223
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %468, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_dropE)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %469)
          to label %3225 unwind label %3250

3225:                                             ; preds = %3224
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %464, ptr noundef nonnull %465, ptr noundef nonnull %466, ptr noundef nonnull %468, ptr noundef nonnull %469)
          to label %3226 unwind label %3252

3226:                                             ; preds = %3225
  %3227 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %464)
          to label %3228 unwind label %3254

3228:                                             ; preds = %3226
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %464) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %469) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %468) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %467) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #12
  %.not1045 = icmp eq ptr %3227, null
  br i1 %.not1045, label %.loopexit1572, label %3229

3229:                                             ; preds = %3228
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %470) #12
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %470)
          to label %3230 unwind label %3260

3230:                                             ; preds = %3229
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %471) #12
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %472, ptr noundef nonnull align 8 dereferenceable(8) %2626)
          to label %3231 unwind label %3262

3231:                                             ; preds = %3230
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef nonnull align 8 dereferenceable(8) %2580)
          to label %3232 unwind label %3264

3232:                                             ; preds = %3231
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %473, ptr noundef nonnull %474)
          to label %3233 unwind label %3266

3233:                                             ; preds = %3232
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_113rcstring_dropE)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %476)
          to label %3234 unwind label %3268

3234:                                             ; preds = %3233
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %471, ptr noundef nonnull %472, ptr noundef nonnull %473, ptr noundef nonnull %475, ptr noundef nonnull %476)
          to label %3235 unwind label %3270

3235:                                             ; preds = %3234
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %476) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %477) #12
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %477, ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(88) %471, ptr noundef nonnull align 8 dereferenceable(144) %470, i1 noundef zeroext false, ptr noundef null)
          to label %3236 unwind label %3275

3236:                                             ; preds = %3235
  %3237 = call noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %477)
  br i1 %3237, label %3284, label %3238

3238:                                             ; preds = %3236
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %478) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3239 unwind label %3277

3239:                                             ; preds = %3238
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %480) #12
  store ptr %477, ptr %480, align 8, !tbaa !11
  %3240 = getelementptr inbounds i8, ptr %480, i64 8
  store ptr %471, ptr %3240, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %479, ptr noundef nonnull align 8 dereferenceable(16) %480) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull %479)
          to label %3241 unwind label %3279

3241:                                             ; preds = %3239
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %478) #12
  %3242 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3242, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %3282

.invoke:                                          ; preds = %3241, %3289
  %3243 = phi ptr [ %3290, %3289 ], [ %3242, %3241 ]
  invoke void @__cxa_throw(ptr nonnull %3243, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %.cont unwind label %.loopexit.split-lp1548

.cont:                                            ; preds = %.invoke
  unreachable

3244:                                             ; preds = %.loopexit1536.thread5071
  %3245 = landingpad { ptr, i32 }
          cleanup
  br label %3339

3246:                                             ; preds = %3222
  %3247 = landingpad { ptr, i32 }
          cleanup
  br label %3259

3248:                                             ; preds = %3223
  %3249 = landingpad { ptr, i32 }
          cleanup
  br label %3258

3250:                                             ; preds = %3224
  %3251 = landingpad { ptr, i32 }
          cleanup
  br label %3257

3252:                                             ; preds = %3225
  %3253 = landingpad { ptr, i32 }
          cleanup
  br label %3256

3254:                                             ; preds = %3226
  %3255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %464) #12
  br label %3256

3256:                                             ; preds = %3254, %3252
  %.pn1040 = phi { ptr, i32 } [ %3255, %3254 ], [ %3253, %3252 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %469) #12
  br label %3257

3257:                                             ; preds = %3256, %3250
  %.pn1040.pn = phi { ptr, i32 } [ %.pn1040, %3256 ], [ %3251, %3250 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %468) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %466) #12
  br label %3258

3258:                                             ; preds = %3257, %3248
  %.pn1040.pn.pn = phi { ptr, i32 } [ %.pn1040.pn, %3257 ], [ %3249, %3248 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %467) #12
  br label %3259

3259:                                             ; preds = %3258, %3246
  %.pn1040.pn.pn.pn = phi { ptr, i32 } [ %.pn1040.pn.pn, %3258 ], [ %3247, %3246 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465) #12
  br label %3339

3260:                                             ; preds = %3229
  %3261 = landingpad { ptr, i32 }
          cleanup
  br label %3306

3262:                                             ; preds = %3230
  %3263 = landingpad { ptr, i32 }
          cleanup
  br label %3305

3264:                                             ; preds = %3231
  %3265 = landingpad { ptr, i32 }
          cleanup
  br label %3274

3266:                                             ; preds = %3232
  %3267 = landingpad { ptr, i32 }
          cleanup
  br label %3273

3268:                                             ; preds = %3233
  %3269 = landingpad { ptr, i32 }
          cleanup
  br label %3272

3270:                                             ; preds = %3234
  %3271 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %476) #12
  br label %3272

3272:                                             ; preds = %3270, %3268
  %.pn1046 = phi { ptr, i32 } [ %3271, %3270 ], [ %3269, %3268 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #12
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %473) #12
  br label %3273

3273:                                             ; preds = %3272, %3266
  %.pn1046.pn = phi { ptr, i32 } [ %.pn1046, %3272 ], [ %3267, %3266 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %474) #12
  br label %3274

3274:                                             ; preds = %3273, %3264
  %.pn1046.pn.pn = phi { ptr, i32 } [ %.pn1046.pn, %3273 ], [ %3265, %3264 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %472) #12
  br label %3305

3275:                                             ; preds = %3235
  %3276 = landingpad { ptr, i32 }
          cleanup
  br label %3304

.loopexit1547:                                    ; preds = %3284
  %lpad.loopexit1549 = landingpad { ptr, i32 }
          cleanup
  br label %3303

.loopexit.split-lp1548:                           ; preds = %.invoke
  %lpad.loopexit.split-lp1550 = landingpad { ptr, i32 }
          cleanup
  br label %3303

3277:                                             ; preds = %3238
  %3278 = landingpad { ptr, i32 }
          cleanup
  br label %3281

3279:                                             ; preds = %3239
  %3280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %479) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %480) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %478) #12
  br label %3281

3281:                                             ; preds = %3279, %3277
  %.pn1050 = phi { ptr, i32 } [ %3280, %3279 ], [ %3278, %3277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %478) #12
  br label %3303

3282:                                             ; preds = %3241
  %3283 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %3242) #12
  br label %3303

3284:                                             ; preds = %3236
  %3285 = invoke noundef zeroext i1 @_ZNK14MonomorphState9has_typesEv(ptr noundef nonnull align 8 dereferenceable(144) %470)
          to label %3286 unwind label %.loopexit1547

3286:                                             ; preds = %3284
  br i1 %3285, label %3287, label %3298

3287:                                             ; preds = %3286
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %481) #12
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %481, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %3288 unwind label %3291

3288:                                             ; preds = %3287
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %483) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %482, ptr noundef nonnull align 1 dereferenceable(1) %483) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %481, ptr noundef nonnull %482)
          to label %3289 unwind label %3293

3289:                                             ; preds = %3288
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %483) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %481) #12
  %3290 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3290, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %3296

3291:                                             ; preds = %3287
  %3292 = landingpad { ptr, i32 }
          cleanup
  br label %3295

3293:                                             ; preds = %3288
  %3294 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %482) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %483) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %481) #12
  br label %3295

3295:                                             ; preds = %3293, %3291
  %.pn1052 = phi { ptr, i32 } [ %3294, %3293 ], [ %3292, %3291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %481) #12
  br label %3303

3296:                                             ; preds = %3289
  %3297 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %3290) #12
  br label %3303

3298:                                             ; preds = %3286
  %3299 = getelementptr inbounds i8, ptr %3227, i64 224
  store i8 1, ptr %3299, align 8, !tbaa !272
  %3300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %477)
  %3301 = load ptr, ptr %3300, align 8, !tbaa !11
  %3302 = getelementptr inbounds i8, ptr %3227, i64 8
  store ptr %3301, ptr %3302, align 8, !tbaa !13
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %477) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %477) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %471) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %471) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %470) #12
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %470) #12
  br label %.loopexit1572

3303:                                             ; preds = %.loopexit1547, %.loopexit.split-lp1548, %3296, %3295, %3282, %3281
  %.pn1054 = phi { ptr, i32 } [ %3297, %3296 ], [ %.pn1052, %3295 ], [ %3283, %3282 ], [ %.pn1050, %3281 ], [ %lpad.loopexit1549, %.loopexit1547 ], [ %lpad.loopexit.split-lp1550, %.loopexit.split-lp1548 ]
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %477) #12
  br label %3304

3304:                                             ; preds = %3303, %3275
  %.pn1054.pn = phi { ptr, i32 } [ %.pn1054, %3303 ], [ %3276, %3275 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %477) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %471) #12
  br label %3305

3305:                                             ; preds = %3304, %3274, %3262
  %.pn1054.pn.pn = phi { ptr, i32 } [ %.pn1054.pn, %3304 ], [ %.pn1046.pn.pn, %3274 ], [ %3263, %3262 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %471) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %470) #12
  br label %3306

3306:                                             ; preds = %3305, %3260
  %.pn1054.pn.pn.pn = phi { ptr, i32 } [ %.pn1054.pn.pn, %3305 ], [ %3261, %3260 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %470) #12
  br label %3339

.loopexit1572:                                    ; preds = %.preheader1528, %.preheader1532, %.lr.ph3218, %.preheader1560, %.preheader1558, %.preheader1556, %.preheader1554, %3228, %3298, %.loopexit1536, %..loopexit1545_crit_edge, %..loopexit1544_crit_edge, %2866, %.preheader1562, %..loopexit1538_crit_edge, %.lr.ph3935, %2762, %2751
  %3307 = load ptr, ptr %2579, align 8, !tbaa !268
  %3308 = getelementptr inbounds i8, ptr %3307, i64 64
  %3309 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3308) #12
  %3310 = getelementptr inbounds i8, ptr %3309, i64 24
  %3311 = call noundef zeroext i1 @_ZNK3MIR10Terminator13is_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %3310)
  br i1 %3311, label %3312, label %3317

3312:                                             ; preds = %.loopexit1572
  invoke void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %484)
          to label %3313 unwind label %2708

3313:                                             ; preds = %3312
  invoke void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull %484)
          to label %3314 unwind label %3315

3314:                                             ; preds = %3313
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %484) #12
  br label %3317

3315:                                             ; preds = %3313
  %3316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %484) #12
  br label %3339

3317:                                             ; preds = %3314, %.loopexit1572
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %485) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %485, ptr noundef nonnull align 8 dereferenceable(88) %355)
  %3318 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2573)
          to label %3319 unwind label %3330

3319:                                             ; preds = %3317
  invoke void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %2574, ptr noundef nonnull align 8 dereferenceable(56) %485, ptr noundef nonnull align 8 dereferenceable(96) %3318, ptr noundef nonnull align 8 dereferenceable(24) %2572, ptr noundef nonnull align 8 dereferenceable(8) %2571)
          to label %3320 unwind label %3330

3320:                                             ; preds = %3319
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %485) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %486) #12
  invoke void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.537") align 8 %486, ptr noundef nonnull align 8 dereferenceable(352) %359)
          to label %3321 unwind label %3332

3321:                                             ; preds = %3320
  invoke void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %812, ptr noundef nonnull align 8 dereferenceable(8) %486)
          to label %3322 unwind label %3334

3322:                                             ; preds = %3321
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %486) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %486) #12
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %487, ptr noundef nonnull align 8 dereferenceable(88) %355) #12
  %3323 = invoke noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576) %1, ptr noundef nonnull %487)
          to label %3324 unwind label %3337

3324:                                             ; preds = %3322
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %487) #12
  %3325 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #12
  %3326 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %3325) #12
  %3327 = getelementptr inbounds i8, ptr %3323, i64 8
  store ptr %3326, ptr %3327, align 8, !tbaa !13
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %370) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %370) #12
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %366) #12
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %366) #12
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %359) #12
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %359) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %355) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %355) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #12
  %3328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %352) #12
  %3329 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN3HIR7TypeRefEES4_(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull align 8 dereferenceable(8) %353) #12
  br i1 %3329, label %2625, label %._crit_edge3939

3330:                                             ; preds = %3319, %3317
  %3331 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %485) #12
  br label %3339

3332:                                             ; preds = %3320
  %3333 = landingpad { ptr, i32 }
          cleanup
  br label %3336

3334:                                             ; preds = %3321
  %3335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR8FunctionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %486) #12
  br label %3336

3336:                                             ; preds = %3334, %3332
  %.pn1147 = phi { ptr, i32 } [ %3335, %3334 ], [ %3333, %3332 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %486) #12
  br label %3339

3337:                                             ; preds = %3322
  %3338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %487) #12
  br label %3339

3339:                                             ; preds = %.loopexit1521, %.loopexit.split-lp1522, %.loopexit1520, %.loopexit.split-lp, %2778, %2783, %2788, %2806, %2823, %2840, %2857, %2903, %3039, %.split3814.split, %.split3811.split, %2871, %.split3240, %3244, %3259, %3306, %3054, %3059, %.split2955, %3101, %3102, %3137, %3087, %3086, %3221, %.split2914.split, %.split.split, %3139, %2715, %2740, %3337, %3336, %3330, %3315, %2759, %2714, %2708
  %.pn1149 = phi { ptr, i32 } [ %3338, %3337 ], [ %.pn1147, %3336 ], [ %3331, %3330 ], [ %3316, %3315 ], [ %2709, %2708 ], [ %.pn1144.pn, %2759 ], [ %.pn1028, %2714 ], [ %.pn1034.pn.pn, %2740 ], [ %2716, %2715 ], [ %.pn1112.pn.pn.pn, %3039 ], [ %.pn1117.pn.pn, %2903 ], [ %.pn1129, %2857 ], [ %.pn1133, %2840 ], [ %.pn1137, %2823 ], [ %.pn1141, %2806 ], [ %2789, %2788 ], [ %2784, %2783 ], [ %2779, %2778 ], [ %2860, %.split3814.split ], [ %2858, %.split3811.split ], [ %.pn1121.pn, %2871 ], [ %2861, %.split3240 ], [ %3138, %.split2955 ], [ %3060, %3059 ], [ %3055, %3054 ], [ %3088, %3087 ], [ %.pn1083, %3086 ], [ %.pn1078.pn.pn, %3137 ], [ %3103, %3102 ], [ %.pn1076, %3101 ], [ %3140, %3139 ], [ %.pn1067.pn.pn, %3221 ], [ %3154, %.split2914.split ], [ %3152, %.split.split ], [ %.pn1054.pn.pn.pn, %3306 ], [ %.pn1040.pn.pn.pn, %3259 ], [ %3245, %3244 ], [ %lpad.loopexit, %.loopexit1520 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit1523, %.loopexit1521 ], [ %lpad.loopexit.split-lp1524, %.loopexit.split-lp1522 ]
  call void @_ZN12_GLOBAL__N_17BuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %370) #12
  br label %3340

3340:                                             ; preds = %3339, %2706
  %.pn1149.pn = phi { ptr, i32 } [ %.pn1149, %3339 ], [ %2707, %2706 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %370) #12
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %366) #12
  br label %3341

3341:                                             ; preds = %3340, %2705
  %.pn1149.pn.pn = phi { ptr, i32 } [ %.pn1149.pn, %3340 ], [ %.pn1026, %2705 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %366) #12
  br label %3342

3342:                                             ; preds = %3341, %2700, %2693, %2678
  %.pn1149.pn.pn.pn = phi { ptr, i32 } [ %.pn1149.pn.pn, %3341 ], [ %.pn1024, %2700 ], [ %.pn1019.pn.pn.pn, %2693 ], [ %2679, %2678 ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %359) #12
  br label %3343

3343:                                             ; preds = %3342, %2676
  %.pn1149.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1149.pn.pn.pn, %3342 ], [ %2677, %2676 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %359) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %355) #12
  br label %3344

3344:                                             ; preds = %3343, %2675, %2669
  %.pn1149.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1149.pn.pn.pn.pn, %3343 ], [ %.pn1017, %2675 ], [ %2670, %2669 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %355) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %354) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %353) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %352) #12
  br label %3345

3345:                                             ; preds = %3344, %2624
  %.pn1156.pn.pn = phi { ptr, i32 } [ %.pn1156.pn, %2624 ], [ %.pn1149.pn.pn.pn.pn.pn, %3344 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %345) #12
  br label %3346

3346:                                             ; preds = %3345, %2594, %2592
  %.pn1156.pn.pn.pn = phi { ptr, i32 } [ %.pn1156.pn.pn, %3345 ], [ %2595, %2594 ], [ %2593, %2592 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %345) #12
  br label %3347

3347:                                             ; preds = %618, %806, %3346, %2591, %1365, %597, %520, %516
  %.pn1478.pn = phi { ptr, i32 } [ %.pn1478, %516 ], [ %521, %520 ], [ %.pn1471.pn.pn.pn, %597 ], [ %.pn1453.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1365 ], [ %.pn1367.pn.pn.pn.pn.pn.pn.pn.pn.pn, %2591 ], [ %.pn1156.pn.pn.pn, %3346 ], [ %.pn1005.pn.pn.pn.pn.pn.pn.pn.pn.pn, %806 ], [ %619, %618 ]
  call void @_ZN12_GLOBAL__N_15StateD2Ev(ptr noundef nonnull align 8 dereferenceable(576) %3) #12
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %3) #12
  resume { ptr, i32 } %.pn1478.pn

3348:                                             ; preds = %3096, %3081, %3056, %3051, %2847, %2830, %2813, %2796, %2785, %2780, %2775, %2668, %2482, %2118, %1986, %1869, %1189, %1044, %945, %878, %552
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_15StateC2ERN3HIR5CrateERK9TransList(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(576)) unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE6insertEOS1_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_Z20Trans_AutoImpl_CloneRN12_GLOBAL__N_15StateEN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) local_unnamed_addr #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapIN3HIR10SimplePathENS0_5Crate9ImplGroupISt10unique_ptrINS0_9TraitImplESt14default_deleteIS5_EEEESt4lessIS1_ESaISt4pairIKS1_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

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

; 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 #8 align 2

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #5

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

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

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

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

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

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

declare noundef ptr @_ZN9TransList12add_functionEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR9TraitImplESt14default_deleteIS4_EESt6vectorIS7_SaIS7_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_23ET_SJ_SJ_T0_"(ptr, ptr, ptr) local_unnamed_addr #8

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_ArgumentEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, i32 noundef) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_ReturnENS0_11Data_ReturnE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(192)) local_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) #9

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9make_vec1ISt4pairIN3HIR7PatternENS1_7TypeRefEEESt6vectorIT_SaIS6_EEOS6_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.301") align 8, ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #1

; 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.390") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14PatternBindingC2EbNS0_4TypeE8RcStringj(ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR7Pattern4Data8make_AnyENS1_8Data_AnyE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Pattern::Data") align 8) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR8FunctionC2ENS0_8ReceiverENS_13GenericParamsESt6vectorISt4pairINS_7PatternENS_7TypeRefEESaIS7_EES6_NS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #10

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #11

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR9TraitImplC2Ev(ptr noundef nonnull align 8 dereferenceable(328)) unnamed_addr #8 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 #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEESt4lessIS0_ESaISt4pairIKS0_S5_EEE6insertIS8_IS0_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairI8RcStringN3HIR9TraitImpl7ImplEntINS1_8FunctionEEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.426") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(360)) local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR9TraitImplEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.246") align 8, ptr noundef nonnull align 8 dereferenceable(328)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10unique_ptrIN3HIR8FunctionESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; 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 dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

declare noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

declare void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 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 #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17BuilderC2ERKNS_5StateERN3MIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(576), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder9add_localEN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder16push_stmt_assignEN3MIR6LValueENS1_6RValueE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

declare void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #5

declare void @_ZNK3HIR15TypePathBinding5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_112get_unit_ptrERK4SpanRNS_7BuilderEN3HIR7TypeRefEN3MIR6LValueERS8_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

declare void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder14terminate_CallEN3MIR6LValueENS1_10CallTargetESt6vectorINS1_5ParamESaIS5_EEjj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder11ensure_openEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder15terminate_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) local_unnamed_addr #1 align 2

declare void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR8FunctionEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.537") align 8, ptr noundef nonnull align 8 dereferenceable(352)) local_unnamed_addr #1

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10unique_ptrIN3HIR6StaticESt14default_deleteIS2_EESaIS5_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR4PathE12Trans_ParamsEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 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 #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 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 #4 align 2

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360), ptr noundef, i1 noundef zeroext, ptr noundef, ptr noundef) 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 #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

declare void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

declare noundef zeroext i1 @_Z24Target_GetSizeAndAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERmS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

declare void @_ZN14EncodedLiteral10write_uintEmmm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR6StaticEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.560") align 8, ptr noundef nonnull align 8 dereferenceable(360)) local_unnamed_addr #1

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

declare noundef ptr @_ZN9TransList10add_staticEN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(576), ptr noundef) local_unnamed_addr #5

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPSt4pairIN3HIR7TypeRefEbESt6vectorIS5_SaIS5_EEEEZ15Trans_AutoImplsRNS3_5CrateER9TransListE4$_26EbT_SG_T0_"(ptr, ptr, ptr) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN3HIR7TypeRefEbESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(9)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA5_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(5)) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

declare noundef ptr @_ZNK18StaticTraitResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19deref_boxEN3MIR6LValueE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) local_unnamed_addr #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder14push_stmt_dropEN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder9push_stmtEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement9make_DropENS0_9Data_DropE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9inc_FieldEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_IndexES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_17Builder13push_CallDropERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR13TypeData_Path12is_generatorEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12inc_DowncastEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK14MonomorphState9has_typesEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

attributes #0 = { nofree nounwind }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nobuiltin allocsize(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 #11 = { nobuiltin 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 #12 = { nounwind }
attributes #13 = { noreturn nounwind }
attributes #14 = { noreturn }
attributes #15 = { builtin allocsize(0) }
attributes #16 = { builtin 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 = !{!"_ZTS13TargetVersion", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !12, i64 8}
!14 = !{!"_ZTS18TransList_Function", !12, i64 0, !12, i64 8, !15, i64 16, !29, i64 184, !35, i64 224}
!15 = !{!"_ZTS12Trans_Params", !16, i64 0, !23, i64 96, !12, i64 104, !24, i64 112, !24, i64 136, !28, i64 160}
!16 = !{!"_ZTS15MonomorphiserPP", !17, i64 0}
!17 = !{!"_ZTS13Monomorphiser", !12, i64 8, !18, i64 16, !19, i64 72}
!18 = !{!"_ZTSN3HIR8ItemPathE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48}
!19 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!23 = !{!"_ZTS4Span", !12, i64 0}
!24 = !{!"_ZTSN3HIR10PathParamsE", !25, i64 0, !26, i64 8, !27, i64 16}
!25 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !12, i64 0}
!26 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !12, i64 0}
!27 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !12, i64 0}
!28 = !{!"_ZTSN3HIR7TypeRefE", !12, i64 0}
!29 = !{!"_ZTS14CachedFunction", !28, i64 0, !30, i64 8, !34, i64 32}
!30 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!34 = !{!"_ZTSN3MIR15FunctionPointerE", !12, i64 0}
!35 = !{!"bool", !7, i64 0}
!36 = !{!37, !35, i64 0}
!37 = !{!"_ZTSN3HIR9TraitImpl7ImplEntINS_8FunctionEEE", !35, i64 0, !38, i64 8}
!38 = !{!"_ZTSN3HIR8FunctionE", !35, i64 0, !39, i64 8, !44, i64 80, !28, i64 88, !45, i64 96, !35, i64 104, !35, i64 105, !46, i64 112, !30, i64 208, !35, i64 232, !28, i64 240, !63, i64 248, !70, i64 320}
!39 = !{!"_ZTSN3HIR7LinkageE", !40, i64 0, !41, i64 8, !41, i64 40}
!40 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !42, i64 0, !43, i64 8, !7, i64 16}
!42 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!45 = !{!"_ZTS8RcString", !12, i64 0}
!46 = !{!"_ZTSN3HIR13GenericParamsE", !47, i64 0, !51, i64 24, !55, i64 48, !59, i64 72}
!47 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!51 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!55 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!59 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!63 = !{!"_ZTSN3HIR7ExprPtrE", !64, i64 0, !65, i64 8, !65, i64 32, !34, i64 56, !69, i64 64}
!64 = !{!"_ZTSN3HIR12ExprPtrInnerE", !12, i64 0}
!65 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!69 = !{!"_ZTSN3HIR12ExprStatePtrE", !12, i64 0}
!70 = !{!"_ZTSN3HIR8Function8MarkingsE", !71, i64 0, !35, i64 24, !75, i64 28}
!71 = !{!"_ZTSSt6vectorIjSaIjEE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!75 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!76 = !{!77, !12, i64 0}
!77 = !{!"_ZTSN12_GLOBAL__N_15StateE", !12, i64 0, !78, i64 8, !12, i64 432, !105, i64 440, !110, i64 520, !94, i64 568}
!78 = !{!"_ZTS18StaticTraitResolve", !79, i64 8, !96, i64 224, !97, i64 232, !97, i64 280, !97, i64 328, !100, i64 376}
!79 = !{!"_ZTS18TraitResolveCommon", !12, i64 0, !12, i64 8, !12, i64 16, !80, i64 24, !88, i64 72, !94, i64 104, !94, i64 112, !94, i64 120, !94, i64 128, !94, i64 136, !94, i64 144, !94, i64 152, !94, i64 160, !94, i64 168, !94, i64 176, !94, i64 184, !94, i64 192, !94, i64 200, !94, i64 208}
!80 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !81, i64 0}
!81 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !82, i64 0}
!82 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !83, i64 0, !85, i64 8}
!83 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !84, i64 0}
!84 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!85 = !{!"_ZTSSt15_Rb_tree_header", !86, i64 0, !43, i64 32}
!86 = !{!"_ZTSSt18_Rb_tree_node_base", !87, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!87 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!88 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !89, i64 0, !93, i64 24}
!89 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !90, i64 0}
!90 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!93 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!94 = !{!"_ZTSN3HIR10SimplePathE", !95, i64 0}
!95 = !{!"_ZTS10ThinVectorI8RcStringE", !12, i64 0}
!96 = !{!"_ZTS12MetadataType", !7, i64 0}
!97 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !98, i64 0}
!98 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !99, i64 0}
!99 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !83, i64 0, !85, i64 8}
!100 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !101, i64 0}
!101 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !102, i64 0}
!102 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !103, i64 0, !85, i64 8}
!103 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !104, i64 0}
!104 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!105 = !{!"_ZTSSt5dequeIN3HIR7TypeRefESaIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSNSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE11_Deque_implE", !108, i64 0}
!108 = !{!"_ZTSNSt11_Deque_baseIN3HIR7TypeRefESaIS1_EE16_Deque_impl_dataE", !12, i64 0, !43, i64 8, !109, i64 16, !109, i64 48}
!109 = !{!"_ZTSSt15_Deque_iteratorIN3HIR7TypeRefERS1_PS1_E", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!110 = !{!"_ZTSSt3setIN3HIR7TypeRefESt4lessIS1_ESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !83, i64 0, !85, i64 8}
!113 = !{!114, !114, i64 0}
!114 = !{!"int", !7, i64 0}
!115 = !{!"branch_weights", i32 1, i32 1048575}
!116 = !{!117, !12, i64 136}
!117 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !118, i64 0, !134, i64 144, !138, i64 168}
!118 = !{!"_ZTSN3HIR9TraitPathE", !119, i64 0, !125, i64 8, !126, i64 40, !131, i64 88, !12, i64 136}
!119 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !120, i64 0}
!120 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !121, i64 0}
!121 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !122, i64 0}
!122 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !123, i64 0}
!123 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !124, i64 0}
!124 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !12, i64 0}
!125 = !{!"_ZTSN3HIR11GenericPathE", !94, i64 0, !24, i64 8}
!126 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !127, i64 0}
!127 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !128, i64 0}
!128 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !129, i64 0, !85, i64 8}
!129 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !130, i64 0}
!130 = !{!"_ZTSSt4lessI8RcStringE"}
!131 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !132, i64 0}
!132 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !133, i64 0}
!133 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !129, i64 0, !85, i64 8}
!134 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !135, i64 0}
!135 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !136, i64 0}
!136 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !137, i64 0}
!137 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!138 = !{!"_ZTSN3HIR11LifetimeRefE", !114, i64 0}
!139 = !{!38, !44, i64 80}
!140 = !{!141, !142, i64 4}
!141 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !138, i64 0, !142, i64 4, !28, i64 8}
!142 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!143 = distinct !{!143, !10}
!144 = !{!145, !12, i64 0}
!145 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_24", !12, i64 0, !12, i64 8, !142, i64 16}
!146 = !{!145, !12, i64 8}
!147 = !{!145, !142, i64 16}
!148 = distinct !{!148, !10}
!149 = distinct !{!149, !10}
!150 = distinct !{!150, !10}
!151 = !{!39, !40, i64 0}
!152 = !{!153, !43, i64 8}
!153 = !{!"_ZTS8TypeRepr", !43, i64 0, !43, i64 8, !154, i64 16, !156, i64 88}
!154 = !{!"_ZTSN8TypeRepr11VariantModeE", !155, i64 0, !7, i64 8}
!155 = !{!"_ZTSN8TypeRepr11VariantMode3TagE", !7, i64 0}
!156 = !{!"_ZTSSt6vectorIN8TypeRepr5FieldESaIS1_EE", !157, i64 0}
!157 = !{!"_ZTSSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE12_Vector_implE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!160 = !{!43, !43, i64 0}
!161 = !{!162, !114, i64 16}
!162 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_25", !12, i64 0, !12, i64 8, !114, i64 16}
!163 = !{!164, !35, i64 304}
!164 = !{!"_ZTSN3HIR6StaticE", !46, i64 0, !39, i64 96, !35, i64 168, !28, i64 176, !63, i64 184, !165, i64 256, !35, i64 304, !35, i64 305, !35, i64 306, !174, i64 312}
!165 = !{!"_ZTS14EncodedLiteral", !166, i64 0, !170, i64 24}
!166 = !{!"_ZTSSt6vectorIhSaIhEE", !167, i64 0}
!167 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !168, i64 0}
!168 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !169, i64 0}
!169 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!170 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !171, i64 0}
!171 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !172, i64 0}
!172 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !173, i64 0}
!173 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!174 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !175, i64 0}
!175 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !176, i64 0}
!176 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !177, i64 0, !85, i64 8}
!177 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !178, i64 0}
!178 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!179 = !{!180, !12, i64 0}
!180 = !{!"_ZTS16TransList_Static", !12, i64 0, !15, i64 8}
!181 = !{!35, !35, i64 0}
!182 = !{!183, !114, i64 16}
!183 = !{!"_ZTSZ15Trans_AutoImplsRN3HIR5CrateER9TransListE4$_27", !12, i64 0, !12, i64 8, !114, i64 16}
!184 = distinct !{!184, !10}
!185 = !{!186, !114, i64 8}
!186 = !{!"_ZTSSt4pairIK8RcStringS_IjN3HIR11GenericPathEEE", !45, i64 0, !187, i64 8}
!187 = !{!"_ZTSSt4pairIjN3HIR11GenericPathEE", !114, i64 0, !125, i64 8}
!188 = !{!79, !12, i64 0}
!189 = distinct !{!189, !10}
!190 = distinct !{!190, !10}
!191 = distinct !{!191, !10}
!192 = !{!193, !114, i64 360}
!193 = !{!"_ZTSN3HIR5TraitE", !46, i64 0, !138, i64 96, !194, i64 104, !35, i64 128, !198, i64 136, !203, i64 192, !205, i64 248, !207, i64 304, !114, i64 360, !194, i64 368, !94, i64 392}
!194 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !195, i64 0}
!195 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !196, i64 0}
!196 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !197, i64 0}
!197 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!198 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !199, i64 0}
!199 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !43, i64 8, !200, i64 16, !43, i64 24, !201, i64 32, !12, i64 48}
!200 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !12, i64 0}
!201 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !202, i64 0, !43, i64 8}
!202 = !{!"float", !7, i64 0}
!203 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !204, i64 0}
!204 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !43, i64 8, !200, i64 16, !43, i64 24, !201, i64 32, !12, i64 48}
!205 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !206, i64 0}
!206 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !12, i64 0, !43, i64 8, !200, i64 16, !43, i64 24, !201, i64 32, !12, i64 48}
!207 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !208, i64 0}
!208 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !43, i64 8, !200, i64 16, !43, i64 24, !201, i64 32, !12, i64 48}
!209 = !{!210, !43, i64 0}
!210 = !{!"_ZTSN8TypeRepr5FieldE", !43, i64 0, !28, i64 8}
!211 = distinct !{!211, !10}
!212 = !{!213, !35, i64 8}
!213 = !{!"_ZTSSt4pairIN3HIR7TypeRefEbE", !28, i64 0, !35, i64 8}
!214 = !{i8 0, i8 2}
!215 = !{}
!216 = !{!217, !218, i64 0}
!217 = !{!"_ZTSN3MIR9Statement9Data_DropE", !218, i64 0, !219, i64 8, !114, i64 40}
!218 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!219 = !{!"_ZTSN3MIR6LValueE", !220, i64 0, !221, i64 8}
!220 = !{!"_ZTSN3MIR6LValue7StorageE", !43, i64 0}
!221 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !222, i64 0}
!222 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !223, i64 0}
!223 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !224, i64 0}
!224 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!225 = !{!217, !114, i64 40}
!226 = distinct !{!226, !10}
!227 = distinct !{!227, !10}
!228 = !{!229, !231, i64 16}
!229 = !{!"_ZTSN3MIR8Constant9Data_UintE", !230, i64 0, !231, i64 16}
!230 = !{!"_ZTS4U128", !43, i64 0, !43, i64 8}
!231 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!232 = !{!233, !236, i64 48}
!233 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !234, i64 0, !236, i64 48, !234, i64 56}
!234 = !{!"_ZTSN3MIR5ParamE", !235, i64 0, !7, i64 8}
!235 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!236 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!237 = !{!238, !114, i64 32}
!238 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !219, i64 0, !114, i64 32, !114, i64 36}
!239 = !{!238, !114, i64 36}
!240 = !{!241, !35, i64 129}
!241 = !{!"_ZTSN3HIR5UnionE", !46, i64 0, !242, i64 96, !243, i64 104, !247, i64 128}
!242 = !{!"_ZTSN3HIR5Union4ReprE", !7, i64 0}
!243 = !{!"_ZTSSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE", !244, i64 0}
!244 = !{!"_ZTSSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE", !245, i64 0}
!245 = !{!"_ZTSNSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE12_Vector_implE", !246, i64 0}
!246 = !{!"_ZTSNSt12_Vector_baseISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!247 = !{!"_ZTSN3HIR13TraitMarkingsE", !35, i64 0, !35, i64 1, !35, i64 2, !248, i64 8}
!248 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !249, i64 0}
!249 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !250, i64 0}
!250 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !251, i64 0, !85, i64 8}
!251 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !252, i64 0}
!252 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!253 = !{!254, !35, i64 145}
!254 = !{!"_ZTSN3HIR6StructE", !46, i64 0, !255, i64 96, !256, i64 104, !114, i64 136, !114, i64 140, !247, i64 144, !258, i64 200, !261, i64 248}
!255 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!256 = !{!"_ZTSN3HIR6Struct4DataE", !257, i64 0, !7, i64 8}
!257 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!258 = !{!"_ZTSN3HIR14StructMarkingsE", !35, i64 0, !114, i64 4, !259, i64 8, !114, i64 12, !260, i64 16, !114, i64 20, !114, i64 24, !35, i64 28, !35, i64 29, !230, i64 32}
!259 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!260 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!261 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!262 = distinct !{!262, !10}
!263 = !{!264, !35, i64 145}
!264 = !{!"_ZTSN3HIR4EnumE", !46, i64 0, !35, i64 96, !265, i64 100, !266, i64 104, !247, i64 144}
!265 = !{!"_ZTSN3HIR4Enum4ReprE", !7, i64 0}
!266 = !{!"_ZTSN3HIR4Enum5ClassE", !267, i64 0, !7, i64 8}
!267 = !{!"_ZTSN3HIR4Enum5Class3TagE", !7, i64 0}
!268 = !{!269, !12, i64 8}
!269 = !{!"_ZTSN12_GLOBAL__N_17BuilderE", !12, i64 0, !12, i64 8, !219, i64 16}
!270 = distinct !{!270, !10}
!271 = distinct !{!271, !10}
!272 = !{!14, !35, i64 224}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass